The Project board is for sharing projects based on Silicon Labs' component with other community members. View Projects Guidelines ›


      • EZR32 WDS script donwload firmware (Easy config)

        atomamp | 11/328/2016 | 03:18 PM


        This program can use in a EFM32,EZR32, EFR32 MCU. The WDS generated script files and patch file can download with a simple terminal to the MCU and the program convert the data to Pro2 API code and send to the SPI bus to PRO2 chip. Complete API Command, Property  and Register read/write support.


        The API command are here:


        • patch file download
        • WDS batch file download
        • Read Rx buffer
        • Read CMD buffer
        • Set IO ports
        • Read IO ports
        • Reset radio command
        • USB communication if hardware support it
        • Routed radio GPIO0/1 to PA0/1 (connector P30/31)

        The Firmware

        The program communicate with the Pro2 chip over SPI bus and the PC over Uart or USB. The pc side needs a terminal program like Robot tongueUTTY The serial protocol supports the ANSI/ VT100 Terminal ESC sequences. The terminal settings are the following:

        • Flow control: RTS/CTS
        • Baud rate: 57600
        • 8 data, no parity, 1 stop bits
        • Terminal type ANSI or VT100

        The command line can edit with ‘Backspace/Home/End’ or ‘Left/Right’ cursor keys. The command line must be closed by ‘Enter’. The program trims all special character except the underscore“_” The excepted character list: “0-9”, “a-z”, “A-Z”, “space” and “_”.


        I attached the detailed documentacion and the Bin file.

        Just donwload the program into the Radio board flash.

        It is an first version if you found a bug please report to me!

      • Pump Studios' Connected Pinewood Derby Car

        PumpStudios | 10/288/2016 | 05:17 PM

        We created a modern Pinewood Derby Car that could be controlled with Silicon Labs' Thunderboard React MCU and app.




        We wanted to utilize Silicon Labs' Thunderboard React MCU which contains a Bluetooth Low Energy module, two LEDs (green and blue), two switches, an accelerometer/gyroscope, and plenty of GPIO pins. The app can connect to the Thunderboard via Bluetooth and can display the orientation and speed of the car in real time. You can also turn the two LEDs on/off via the app. Initially we intended on using the orientation and speed data to trigger lights and sounds, i.e. when the car is accelerating a revving sound could play and when decelerating a braking sound/light could trigger. We quickly found out that accessing the real time car data was beyond our software skills, so as self respecting engineers we created a hack!




        Since the only inputs we had access to via the app were turning the LEDs on/off, we decided to use those as triggers for our lights and sounds. When a LED was turned on, the respective GPIO pin would drop from 3.7 V to 0 V. This was used to send a signal to a connected Arduino that was then connected to an Adafruit Soundboard module. The Arduino would listen for either a high or low signal and send that signal to the Soundboard, which would play either the revving or braking sound file on loop. 






        Wiring Diagram.jpg                                                                                                                                                                Software:


        You can check out the Arduino code and sound files on GitHub:



        Derby Car Body:


        Both the derby frame and outer shell were 3D printed (Ultimaker 2+) so that we could secure all the electronic hardware in an organized way. The wheels were machined on a desktop CNC (Nomad 883 Pro) out of acrylic sheets. Keeping with our pickup truck theme, we added a payload to the bed of the truck body using stainless steel balls. The idea was to increase the total mass of the car so that it would have higher inertia coming off the derby ramp. The front hood of the truck has vents cut out for the speaker underneath.





        Thanks to Silicon Labs for providing the Thunderboard React module and thanks to everyone at the Derby Race that helped us win Hottest Design!

      • L/C meter with STK3400 Happy Gecko kit

        atomamp | 06/172/2016 | 12:08 PM

        We have one big non portable LC meter in the labor.

        I would like to do something new, portable.


        This is a low cost inductance and capacitance meter device. The main board is a SLSTK3400A with the EFM32 Happy Gecko Microcontroller and the measure module is a LC-meter 1.0 expansion board . The device can measure The Cx value between 0.1pF to 33mF(0.1 - 33,000,000,000pF), or Lx value between 100nH and 1H.(0.1-1,000,000uH)




        • intelligent change of measuring range
        • offset possibility or delta function
        • wide measure range
        • auto switch off
        • CR2032 battery as power source
        • display the measure frequency
        • banana probe connection
        • 10 pin female socket connection (1-9 raster) for different package
        • working software source code in Simplicity Studio

        The Expansion board contains the hardware part for the Smith-trigger oscillator, mode switch, button and banana connectors.


        The full document is here:



      • CP210x customization using a Python script

        ptesarik | 10/292/2015 | 03:10 PM

        As the current maintainer of an alternative open-source CP210x Programmer

        I got a question last Friday about customizing the CP2105. The person wanted to read the current configuration from the chip, but it failed.

        Over the weekend I tried it out with my CP2104 Evaluation Kit, kindly provided to me by Silicon Labs a while ago, and indeed, it did not work. After researching all available sources, I found out that:

        • There is no “EEPROM Dump” command for the CP210x chips. The original author probably found a bug in the CP2102 firmware (see below).
        • The CP2105 can be in fact customized with cp210x-program, e.g. I changed my evaluation kit's product string using the following command:
          cp210x-program -w --set-product-string='CP2104 EK for Peter'
        • Some features of the CP2105 cannot be customized at the moment:
          • Port Configuration
          • Flush Buffers Settings
          These features should be customizable in the next release of cp210x-program.

        However, these findings made me curious how the “dump EEPROM” feature works on a CP2102. The code in fact reads 1024 bytes from the Baud Rate Table. But the Baud Rate Table is only 320 bytes long! It turns out that the CP2102 firmware does not check transfer size for read (nor write) commands. Since the Baud Rate Table happens to be located at the very beginning of the 1024-byte EEPROM in the CP2102, the Baud Rate Config command (0x3709) becomes an EEPROM read/write command.

        This stopped working on CP2104, because this model does not have a Baud Rate Table; the necessary divider calculations are done directly by the firmware, removing the need to customize anything on the device when using an unusual baud rate. Kudos to Silicon Labs. But as a corollary, this broke the (undocumented) dump EEPROM hack.

        For the curious, there's nothing to regret. Unlike previous models, the CP2104 does not contain any EEPROM. Instead, there is a much more reliable One-time programmable ROM (PROM). It comes unprogrammed initially. For each customizable value, there is a flag indicating whether it has been programmed yet. If it is 0xff, a hard-wired default is used. After customization it becomes 0x00 and the value from the PROM is used. The customization process is physically irreversible; that's why you can safely X-Ray your PCB board with a CP2104 on it without fears that some of those zeros flip back to ones.

        How did I find out the implementation details of CP2102? Well, it appears that boundary checks are not very popular with the folks at Silicon Labs, so you can read up to 3073 bytes with the Flush Buffer Config command (0x370D) on a CP2104, which includes the customizable part of the PROM (1024 bytes), the hard-wired default values (following 1024 bytes) and a routine (or main program?) in the following bytes.

        By the way, the code appears to be valid 8051 machine code, with references to C8051F01x USB special function registers. This makes me wonder how hard it would be to turn a stock C8051F015 into a CP210x-compatible bridge. Not much, I guess, because good engineers prefer re-using proven designs over constantly re-inventing the wheel. ;-)

      • Dual Autonomous Motor - Designing a Small Electrical Car

        acracan | 07/183/2015 | 08:21 PM


        Silicon Labs provided our University design team with two free C8051F850 BLDC motor driver kits in exchange for a write-up on our project. Our team won second prize at the Electro-mobility 2015 student competition organized by Continental Iași on 8th-9th May at their location in Iași. We were then invited to showcase our project at the Euroinvent 2015 exhibition.


        The goal of the project was to come up with a design of an autonomous car that satisfied the requirements as stated in the Electro-Mobility Contest design specification document. Mainly, this implied the design of a car driven by brushless motors with the ability to drive unassisted along a specified track.




        Project Members:

        Team of students and a teaching assistant from the Faculty of Electronics, Telecommunications and Information Technology of the "Gh. Asachi" Technical University of Iași, Romania participating in the Electro-Mobility Contest 2015.


        Project description:

        The Dual Autonomous Motor design represents a wireless controlled 4 wheel drive car. The car steers by speed difference between left and right motors. A PiCamera records the car's movement and based on that information using the openCV image processing library the car can enter autonomous mode and drive itself under certain conditions (described in the contest track specification document).


        Dual Autonomous Motor 1.png


        The design can be broken down into three main parts: software, hardware and mechanical.


        Mechanical Implementation: A 4-wheel design was adopted due to stability issues of the 3 wheel design (2 front and 1 back). For better steering results an all-wheel drive solution had to be implemented.



        Fig: Final mechanical implementation


        Hardware Implementation: Industry proven solutions were preferred here, so the BLCD motors are controlled by two SiLabs C8051F850 BLDC motor driver kits. The drivers are connected to a Raspberry Pi 2 model B. Also connected to the Raspberry Pi is the PiCamera for track recognition in autonomous mode. Two Servo motors are used for adjusting the camera view angle. All the components are powered by a LiPo battery through dc-dc converters, except for the motor drivers which are connected directly. 


        original (1).png

        Fig: System model of 3-Phase BLDC Motor drive


        Software Implementation: Consists of three parts:

        • SiLabs MCU software for motor control
        • Raspberry Pi software for camera control and communication with the SiLabs MCU
        • PC software for image processing, communication with Raspberry Pi and motor control for autonomous drive, joystick controller management for manual drive

        This design can also be used for other purposes. With minimal addition to the image processing algorithms, a color object tracker can be easily implemented. Due to the video streaming feature the design can be used for access and vision in unfriendly environments. With the addition of some sensors (temperature, pressure, chemical) it can be used for collecting data from a specific environment. The design easily allows the addition of several I2C sensors.


        Materials used:

        1. Hardware tools:
        • 2 x brushless motor
        • 1V LiPo rechargeable battery
        • 3 dc-dc converters.
        • 4 wheels
        • Mechanical components (shafts, gears, bearings)
        • Raspberry Pi 2
        • USB wireless adapter
        • Raspberry Pi compatible video camera (PiCamera)
        • 2 x servo motors
        • accelerometer sensor
        • 2 x brushless motor driver kits (Silabs C8051F850)
        • generic PC Monitor
        • USB keyboard
        • USB hub
        • generic PC (ThinkPad T440p)
        • joystick controller
        1. Software tools:
        • Silicon Laboratories IDE
        • Qt5.4 & QtCreator
        • Avahi and Apple Bonjour libraries
        • openCV library
        • Raspberry Pi libraries: Gstreamer, WiringPi, pca9685
        • Both Windows and Linux OS
        • AutoCAD

        Source files:

        See attachment for detailed design description.

      • Pulse Mood based Music Player

        AnilPattni | 06/160/2015 | 11:08 PM

        This hack uses the Pulse sensor to detect heartbeat in BPM, transmit via BTLE to Android app and uses Spotify API to suggest music based on mood. Open to collaborating with anyone that has experience or suggestions.