8-bit Knowledge Base

      • Should I use an external brownout detector / supply voltage monitor with my Silicon Labs MCU?

        Stephen | 10/294/2014 | 03:22 PM


        Should I use an external brownout detector / supply voltage monitor with my Silicon Labs MCU?


        All Silicon Labs MCUs have an internal brown out detector / supply voltage monitor. In most cases, the internal supply monitor is sufficient and an external supply monitor is not required.


        However, an external supply monitor is recommended for devices where the supply monitor's reset threshold is below the minimum required supply voltage.


        For example, the C8051F36x's supply voltage must be between 3.0V and 3.6V when SYSCLK > 50 MHz:



        And the supply monitor's reset threshold is 2.55V typical:



        For SYSCLK > 50 MHz and the typical case reset threshold, the MCU will be operating out of specification and unpredictably when the supply voltage is between 2.55V and 3.0V. Therefore, an external supply monitor should be used to reset the MCU when the supply voltage reaches 3.0V. This guarantees that MCU operation is within specification and predictable at all times.

      • VREF slow discharge time

        ChrisM | 10/294/2014 | 02:55 PM


        • ADC readings using VREF, such as the internal temperature sensor, take 200 ms or more to stabilize
        • Internal temperature reading is incorrect for the first few seconds after power up
        • Affected devices: C8051F38x



        The on-chip reference buffer has a quick turn-on time of about 3 ms when using the recommended 4.7 uF tantalum and 0.1 uF ceramic bypass capacitors.


        The reference can source current to quickly charge the bypass capacitors from 0 V to the VREF output voltage in the specified turn-on time.


        However, the reference is unable to quickly sink current to discharge the bypass capacitors from voltages above the VREF output voltage.


        Since port pins, during power-on reset, are open-drain, hi-impedance with a weak pull up to VIO/VDD, the reference bypass capacitors can potentially charge up to VIO/VDD until the MCU exits POR and the VREF pin is configured for analog mode.  Once the bypass capacitors are fully charged to VIO/VDD, it can take several hundred milliseconds to discharge the capacitors back down to VREF.  Analog measurements taken while VREF is settling will be very inaccurate.





        Since the reference buffer can't sink current quickly, it is recommended to short the VREF pin to ground after POR (driving the pin low) to discharge the VREF bypass capacitors.  Once the capacitors have been discharged below VREF, the pin can be configured for analog mode and the reference buffer can be enabled to quickly charge the capacitors up to VREF.



      • Multiple MCUs on the same C2 bus

        Stephen | 10/294/2014 | 02:55 PM


        Can multiple MCUs be placed on the same C2 bus?


        No. The C2 pins on one MCU should not be connected to another MCU's C2 pins.

      • How do I construct a CP2114 DAC configuration string?

        jonorem | 10/294/2014 | 02:54 PM


        How do I construct a CP2114 DAC configuration string?


          The DAC configuration string accepted by the CP2114 configuration utility (AN712) consists of 3 parts. To explore how each operates let's take a look at the configuration for the CS42L55 which can be found in the file CP2114_config_0_CS42L55.txt



          The first part of the configuration string is 30 bytes long. It contains CP2114 settings as described in Table 23 (section 9.1.4) of the CP2114 Datasheet.


        01 00 94 A6 C4 0C 01 E0 1C 1D 1A 1B 1C 1D 1A 1B 70 77 44 0C 00 00 00 00 00 00 00 00 00 00


          The second part consists of in-band commands (Table 24) to the CP2114. In this case the CP2114 is instructed to set GPIO4 low, wait for 1020 uS, set GPIO 4 high, and wait 1 uS.


        FE 04 FD FF FD FF FD FF FD FF FE 84 FD 01


        The last section lists commands to be sent to the codec. In this case each pair of bytes represents an address and data byte. For example the first thing done is to set register 0x00 to 0x99.


        00 99 2E 30 32 07 33 FD 34 F8 35 DC 36 F8 37 6C 3A F8 3C D3 3D 23 3E 81 3F 46 00 00 
        04 02 05 09 1A C4 1B C4 1C C4 1D C4 
        02 08 


         Codec data and in-band instructions may occur in any order. The last two lines of this file pause for 765 uS before writing the final 3 coded registers. 


        FD FF FD FF FD FF 
        03 00 06 10 2A 00

      • Creating a project for C8051 MCUs in IAR Embedded Workbench

        BrianL | 10/294/2014 | 12:36 PM

        This guide will walk through creating and configuring a project for a C8051 MCU. This example uses a C8051F930 MCU and the F93x_Blinky example project that is bundled with the Silicon Labs 8-bit IDE and Simplicity Studio.


        1. First, create a new project by navigating to Project -> Create New Project...




        2. Choose 8051 as the Tool chain, and C project as the project template.





        3. Add the project's source files to the project. The F93x_Blinky example here was found in the \Examples directory of the Silicon Labs 8-bit IDE install directory - the default directory for this file is C:\Silabs\MCU\Examples\C8051F93x_92x\Blinky.




        4. Point the compiler to the appropriate include directories. This is done through the project Options window, which is accessed by first highlighting the base project in the Workspace window, then navigating the Project -> Options, or by using ALT-F7. In my example, the compiler_defs.h and C8051F930_defs.h files are found within C:\Silabs\MCU_2\INC, so I add this directory to the include path.






        6. Configure the debug tools. In the same Options window, navigate to the Debugger tab and select "Silabs" as the Driver.




        7. Additional configuration is required in the Silabs tab. If using a USB debugger, "USB interface" and "SiLabs 2-wire (C2) interface" must be checked. If powering the device from the debugger, "Continuously power target" must be checked. Additionally, the flash page size must be set to match the size of the MCU. In the case of the C8051F93x series, this page size is 1024 bytes. See the Flash Memory section of the MCU's datasheet for this value.




        8. The project setup should be complete. Selecting "Download and Debug" should successfully build and download the project to the connected device.





      • Regulator leakage when VDD is tied to REGIN

        Stephen | 10/294/2014 | 12:36 PM


        When an external voltage is applied to VDD and VDD is connected to REGIN, is there any leakage current due to the internal regulator?


        There is no leakage because the internal regulator input (REGIN) is tied to the internal regulator output (VDD).


        If REGIN is left floating, leakage is on the order of ~uA. Therefore, REGIN must be connected to VDD. 

      • Capacitive Sensing library on F99x XRAM usage

        ChrisM | 10/294/2014 | 12:34 PM


        Why do I get the following error when using the Capacitive Sensing library on the F99x when trying to increase the number of sensors:



        SPACE: XDATA 


        The F99x device has 256 bytes of XRAM.  The capacitive sensing library needs RAM to store internal variables for excellent capacitive sensitivity, robustness, and dynamic runtime thresholds.  The RAM usage scales up with number of sensors as defined in:


        #define DEF_NUM_SENSORS


        The library running on the F99x currently supports up to 2 sensors given the amount of RAM.  The F97x is also supported by the capacitive sensing library and has 8 KB of XRAM, which would support more sensors.

      • Support for SMBus Hardware Acknowledge and Addressing in 8-bit MCU's

        jonorem | 10/294/2014 | 12:28 PM


        Which MCU's Support  SMBus Hardware Acknowledge and Addressing?


        The families listed below support hardware decode of the slave address. Those with an asterisk  '*' after them also support full hardware acknowledge of all receive bytes.