Proprietary Knowledge Base

      • Si446x Rx LDC mode consideration

        zopapp | 07/209/2016 | 10:11 AM


        This is a little tip for LDC Rx mode operation on Si446x that could possibly save you some frustration. When LDC Rx is running do not attempt to change the state of the radio without stopping the LDC Rx operation first. These attempts may lead to unexpected and funny behavior.


        After LDC Rx is enabled the radio state machine will automatically enter into LDC Rx mode and will stay there until LDC Rx is disabled. No START_RX command is needed to start the operation, and it follows than that the automatic state transitions as defined by the START_RX command will not take place either.


        If an action including a state change (i.,e Tx operation) is required upon either packet reception or a timeout event in LDC Rx mode, disable first LDC Rx and then proceed.


        For enabling LDC Rx operation the WUT (Wake Up Timer) must be enabled too. As both bit fields that enable LDC Rx (WUT_LDC_EN) and the WUT (WUT_EN) reside in the same property (GLOBAL_WUT_CONFIG) one write to this property that enables both is a legitimate way of starting LDC Rx.


        For disabling LDC Rx it is enough to disable LDC Rx only (in field WUT_LDC_EN) but disabling the WUT too (in field WUT_EN) will not make any harm either.

      • Comparison of debugger capability: WSTK on-board J-Link vs. standalone SEGGER J-Link PLUS

        PhillipB | 07/204/2016 | 06:17 PM


        I am considering purchasing a standalone SEGGER J-Link Plus to develop my solution using a Silicon Labs Wireless MCU, but I see that your Wireless Starter Kit (WSTK) includes an on-board J-Link debugger that can be used to target an external target device (instead of the MCU mounted on the WSTK).  What is the difference between these two J-Link variants?


        Both options are highly capable solutions, and we've had many customers using one or the other successfully bring to market wireless projects.  There are some differences however that may help inform your decisions as you establish your development platform:


        • The on-board WSTK J-Link can only be used to target Silicon Labs devices (i.e., you cannot debug a competitor's MCU using our J-Link).
        • From a pure hardware standpoint, our WSTK is faster than the J-Link Plus, but SEGGER has done a lot of work to optimize the performance of their standalone devices. As a result, the J-Link Plus has a speed (transaction rate of the debug bus) advantage, but we have the task of enabling the SEGGER optimizations on our roadmap so this won't always be the case. (Our customers don't generally have any issues with speed, so this hasn't been the highest priority to implement).
        • AEM (Advanced Energy Monitoring - and its integration with the Energy Profiler in Simplicity Studio) is a Silicon Labs exclusive feature.
        • PTI capture is a Silicon Labs exclusive feature.
        • VirtualUART / SWO over IP is a Silicon Labs exclusive feature.
        • SWO is fully supported on both the J-Link Plus and the J-Link on our kit boards


        Note: SWO is supported - using either J-Link option - within Simplicity Studio.  The IDE comparison page at currently states that Simplicity Studio lacks this support - this is inaccurate and will be corrected soon.

      • Versions of IAR EWARM and GCC Compiler Software for Connect SDK

        andrasbiro | 07/193/2016 | 08:43 AM


        What compilers are supported with Connect?


        Silabs Wireless software is compiled using the IAR Integrated development environment and (in case of the EFR32 platfrom) GCC optimizing C/C++ compiler for ARM Cortex-M.


        Also if GCC is supported, it should always work with the GCC version shipped with Simplicity Studio.



        Stack version Compiler version Compiler version
        Connect SDK v2.0.0 for EFR32 EWARM 7.30.1 GCC 4.9.3
        Connect SDK v2.0.0 for EZR32 EWARM 7.30.1 N.A.
      • Selectivity

        mabuthi | 07/190/2016 | 03:27 AM


        What is the selectivity and how could it be measured?


        Selectivity tells how many dBs above the wanted signal level the receiver can tolerate a blocker signal while still maintaining the minimum sensitivity criterion.


        1. Solution to measure the selectivity: Typically selectivity can be measured with two generators. One of the generators that provides the wanted signal should be set to 3 dB above the sensitivity level (measured as the power level at which the BER is 0.1%). The second generator with an unmodulated signal is used as the interferer and combined with the primary signal using a power combiner. The second generator is placed at the desired frequency offset (red arrow) and then the power is increased until the BER degrades to 0.1%.

          A narrowband selectivity curve in the 868 MHz band is shown on the next figure below. The x axis is frequency offset from the wanted channel in MHz, the y axis is Selectivity. This value is inverted on this graph for a more intuitive perception.
          From the operation of the chip it follows that there is one offset frequency where the selectivity is worse, this frequency (at the little hump on above graph), is called the image frequency. The image frequency of the chip is at 2 x IF below the actual RF frequency. For example for the nominal crystal frequency of 26.0 MHz, the image frequency of the chip is at 2 x IF=812.5 kHz (2 x 406.25 kHz = 812.5 kHz) below the actual RF frequency.
          Let’s return to the first figure. The offset frequency –the big red arrow- generates a not wanted signal inband. The little red arrow represents this signal.

          In order to receive the desired signal when the interferer is present, the desired signal must typically be 8–10 dB higher than the interferer. This is the co-channel rejection. As it can be seen on the Figure above, rejection is the ratio of the signal strength at the image frequency (interferer) to its counterpart at the interferer.
        2. Solution to measure the selectivity: This method is easier than the first one, because only one generator is needed and RSSI values need to be read back from the chip. The RSSI is measured continuously while the chip is in RX mode. The RSSI value represents the moving average of the signal strength.
          On the next figure two selectivity curves are shown in the 868 MHz band, which were measured with the two different ways on the same board. The red curve represents the RSSI measurements.

          As it can be seen on the figure, that there is a constant offset between the two curves. The explanation is, that the RSSI curve represents the rejection and not the selectivity. The RSSI method is only recommended to be used around the adjacent channels and at the image, because the RSSI has a minimum noise level, which is typically too high for measuring accurately at further out offsets.
      • Wireless Gecko (EFR32) Variable packet length

        mabuthi | 07/186/2016 | 10:32 AM

        Choosing the variable frame length algorithm is an option whereby the frame length information is available in the frame itself. This feature is especially valuable at the Rx side as frames with dynamically changing lengths can be received without any software intervention.


        When variable frame length algorithm is selected various parameters must be configured on the packet tab.

        1. First of all the header need to be enabled, because the length of the payload is placed in the header.fig1.png
        2. The variable length bit size, which sets the variable length word’s size in bits, and the maximum length of the payload need to be set on the “Frame Variable Length” tab. Please note that in case you set the variable length bit size to 10 bits, the maximum length of the payload is 1023 bytes. fig2.png
        3. On the graphical representation of the selected packet structure, click on the Header element and set the header size. The “variable length bit size” and the “variable length bit location” needs to be taken into account, while choosing the parameter of the header size. (For example: In case the variable length bit size is set to 8 and the variable length bit location is set to 2, the header needs to be set to 2 bytes, because it is not possible to shift 8 bit in one byte.)fig3.png

        In the IEEE 802.15.4 profile, the length byte is the first byte of the payload and it also covers the CRC length of the packet, which is 2 bytes.

        In the Bluetooth LE Profile the length byte is the second byte of the payload.

      • Setting up a one way link with the Si4010 Key Fob Development Kit (P/N 4010-KFOBDEV-xxx)

        tanagy | 07/183/2016 | 10:02 AM


        How can I set up a one way link with the Si4010 Key Fob Development Kit (P/N 4010-KFOBDEV-xxx)? (xxx is the frequency band of the kit)


        Setting up the Si4010 MSOP Key Fob Development Board (P/N 4010-DKPBxxx-BM) as the transmitting node of the link.

        1. Connect your 4010-DKPBxxx-BM board to your PC according to chapter 5 of AN690: Si4010 Development Kit Quick-Start Guide

        Note, that the Si4010 is an OTP device, but during this test it is used in debug mode, i.e. the example program is loaded in and run from the RAM of the device, so

        1. The 6.5 V programming voltage switch on the burning adapter board has to be in OFF state.
        2. The battery switch on the development board has to be in OFF state, the power to the Si4010 will be provided by the burning adapter board. If you switch on the battery switch, VDD of the Si4010 will be momentarily interrupted and your downloaded code from the RAM may get lost during the interruption.
        3. Make sure, that the Si4010 on the board is in factory new state, i.e. the NVM (OTP) memory of the device was not programmed previously.
        1. Install the Silicon Labs IDE from
        2. Download and extract the Si4010 example projects from​/
        3. Open the keyfob_demo_2 project in Silicon Labs IDE by clicking on \Si4010_example_programs\keyfob_demo_2\bin\keyfob_​demo_2.wsp
        4. Connect the Silabs IDE to your connected Si4010 device by clicking the Connect button or invoking the Debug -> Connect menu item.
        5. If your development kit is for the 434MHz band, you can skip steps 7, 8, 9 and 10.
        6. Install the unlimited Keil PK51 for 8-bit MCUs (Professional Developer's Kit) from​crocontroller-software.aspx#keil-pk51
        7. Register and receive the key to unlock your PK51 tools at
        8. To unlock your PK51 tools, follow the instructions in Application Note 104.
        9. In the keyfob_demo_2 project, modify the frequency setting according to the band of your development kit (434, 868 or 915 MHz). You can do this by changing the constants in the following lines of keyfob_demo_2_main.c:

                fDesiredFreqFSK      = f_433_RkeFreqFSK_c;

                bFskDev                       = b_433_RkeFskDev_c;

        The constants for the different bands are defined in the keyfob_demo_2.h file.

        1. Recompile the project by hitting the Rebuild All button on the tool bar of the IDE.
        2. Download the OMF file either by hitting the Download code (Alt+D) toolbar button or from the Debug -> Download object code menu item. The latter also allows IntelHEX download.
        3. Start the program by hitting the Disconnect button on the tool bar. Note, that the program is running from RAM, so it will be lost upon disconnecting the power to the Si4010.


        Setting up the Si4355 RFStick Receiver Board (P/N 4355-LED-xxx-SRX) as the receiving node of the link.

        1. Connect your 4355-LED-xxx-SRX board to an USB port of your PC via the Toolstick Base Adapter of the development kit.

        After power up the board is ready to receive the packets sent by the keyfob_demo_2 program.

        The operating frequency is set by the receiver program automatically according to the content of the on-board EBID (board identification) memory.

        1. The 8051F930 MCU on this board is factory-programmed with the Si4010/Si4355 EZRadio Remote Control Demo Kit receiver side sw. The full program project can be downloaded from the link. It contains a precompiled hex file that can be reloaded to the board if necessary, using the Silicon Labs IDE and the Toolstick Base Adapter.


        Operating the link:

        When a button is pressed on the 4010-DKPBxxx-BM transmitter board, LEDs flash on the 4355-LED-xxx-SRX receiver board according to which button was pressed. For details of the packet structure and RF parameters used in this demo, see the Si4010/Si4355 EZRadio® Remote Control Demo Kit User's Guide

        Note that the LED on the transmitter board won't flash because of a debug mode limitation. See details in section 7. of the kit's quick start guide (AN690).