What compilers are supported with RAIL?
Silabs Wireless software is compiled using the IAR Integrated development environment and GCC optimizing C/C++ compiler for ARM Cortex-M.
In general, RAIL has no special requirements from the compiler, but we developed and tested it with the following. Also, it should always work with the GCC version shipped with Simplicity Studio.
|Stack version||Compiler version||Compiler version|
|RAIL SDK v1.0.0||EWARM 7.30.1||GCC 4.9.3|
What compilers are supported with the Wireless M-Bus Stacks?
Silabs Wireless software is compiled using the IAR Integrated development environment and optimizing C/C++ compiler for ARM Cortex-M.
As of today we support the following IAR-EWARM with our stack versions.
|Stack version||Compiler version|
|Wireless M-Bus stack v1.0.4||EWARM 7.40.1|
How to change the length of the packet during reception?
In direct mode the DATA_OUT pin output the real time demodulated data. Even if there is no packet signal over the air, the chip will still receive the noise in the background, demodulate and output the random bits.
To avoid this, the squelch function need to be enabled, that will disable the output below an RSSI threshold. Squelch can be turned on by setting the two bit SQUELCH field of the MODEM_OOK_CNT1 property to 1. Squelching of the RX_DATA output is configured conditional (amongst other measures) on the current RSSI reading. If current RSSI remains below the RSSI threshold defined in API property MODEM_RSSI_THRESH there will be no toggling on RX_DATA whereas if it is above this level there will be toggling on RX data. Nevertheless the RSSI threshold need to be fine-tuned after enabling the squelch. Please note that this will make the sensitivity of the receiver a bit worse.
In Direct mode, if temperature is changing greater than 15C, VCO re-calibration is needed, because in case RX state is continuous, the VCO calibration is not performed. The chip must be commanded to do a state change (START_RX or a CHANGE_STATE command) to invoke a VCO calibration.
VCO consists of analog components which have temperature tolerance. Therefore, if temperature changes, then VCO free running frequency will change too. At this time, the PLL tries to adjust the VCO frequency, but if the frequency offset becomes greater than the PLL’s linear tracking range, performance (most notably phase noise) will start degrading and at extreme cases the PLL may come unlocked. A periodic VCO frequency re-calibration over temperature prevents this scenario from happening.
In a direct Rx configuration the received data is directly output to an IC pin that in turn directly feeds another MCU pin for further processing. Typically in such applications all the signal detection (in form of preamble and / or sync word detection algorithms) are done by the processing MCU as opposed to the receiver’s own frame controller (FRC) block.
In the RAIL library there exist a function that places the receiver into this mode: RAIL_DirectModeConfig. When enabled the RX_DATA will be output to EFR32_PC11. This output data has the following properties:
Note that at the writing of this article it is stated in RAIL documentation that parallel to RX_DATA an RX_CLK signal is also output. This is not correct, not the least because there is no RX_CLK signal RX_DATA is synchronized to.
Above direct mode operation can also be referred to as asynchronous direct mode operation. What about synchronous direct mode operation, you may quite rightly ask. Synchronous direct mode operation also provides an RX_CLK signal RX_DATA is synchronized to. Such a mode does not exist on the Wireless Gecko (EFR32).
The reason it does not exist is that a successful sync word detection gates the availability of the RX_CLK signal. So without sync word detection there is no RX_CLK, if you have sync word detection, however you may as well carry on and use packet mode. If for some reason RX_CLK and RX_DATA (placed on pins) still come useful in your packet mode application keep an eye on the radio related PRS signals (see below the current offering) in the RAIL documentation, sooner or later RX_DATA and RX_CLK will show up.