8-bit Knowledge Base

      • Can the IDAC (Current DAC) Sink Current?

        delu | 04/103/2017 | 05:39 PM


        Can the C8051F41x/C8051F39x/C8051F33x IDAC sink current?


        No, the IDAC on these devices can only source current.

      • What Does "Under Bias" Mean for the 5V Tolerant GPIO?

        delu | 04/103/2017 | 05:37 PM


        I see in the data sheet of some 8-bit MCUs (e.g. EFM8LB1) that some pins are 5V tolerant under bias. What does this mean?


        In this context, "under bias" refers to the voltage tolerance of the "5V tolerant" device pins in relation to the voltage of VIO (the "bias" in this case).  Thus, as specified in Table 4.19. Absolute Maximum Ratings of the EFM8LB1 datasheet on page 30, the 5 V tolerant pins are tolerant to a voltage of 5.8 V or VIO+2.5 V, whichever is lower.


        Note: VDD must also be powered in this case, since Table 4.19 in the datasheet lists that the VIO voltage should not exceed VDD+0.3 V.

      • Locating a Function at an Absolute Flash Address

        delu | 04/103/2017 | 05:32 PM


        How do I locate a function at an absolute flash address in Simplicity Studio?


        Simplicity Studio supports both the Keil LX51 and BL51 linkers. To select between these, go to Project Properties->C/C++ Build->Settings->General Settings->Use Extended Linker (LX51) instead of BL51.


        If you check the checkbox, the LX51 linker will be selected; otherwise, BL51 will be selected.






        To locate code at an absolute address with BL51, use the following command-line flag in the Linker area under Project Properties->C/C++ Build->Settings:






        Where func is the function name and file is the file name where the function is located.  An example would be:









        To locate code at an absolute address with LX51, use the following command-line flag in the Linker area under Project Properties->C/C++ Build->Settings:






        Where func is the function name and file is the file name where the function is located in. An example would be:






      • Internal Flash Memory Endurance

        delu | 04/103/2017 | 05:27 PM


        I see some characterization data for the internal flash memory in the datasheet. Taking EFM8LB1 as example, the typical and min write/erase cycles are 100k and 20k. What does this mean?


        The flash endurance specification guarantees that each bit in the flash can be written and erased at least 20k times before bit errors can start to occur. Specifically, it refers to the number of times a bit can be transitioned from a '1' to a '0' (a write) and back to a '1' (an erase) before failure.

        Note: Erasing (setting to '1') a bit that is already a '1' does not contribute to flash fatigue, so erasing a flash page only affects the bits that were '0' before the erase operation. In the same way, writing a flash byte only impacts bits that transition from '1' to '0'.

      • FIT and MTTF Information

        delu | 04/103/2017 | 05:25 PM


        Where can I find FIT rate and MTTF information for Silicon Labs' MCU products?


        Silicon Labs publishes a quality and reliability report on a quarterly basis that's made available on the Quality page. We provide FIT and MTTF data in the report.  A direct link to the QR report is provided below:




        And a link to the Quality page is provided below:



      • Combining or Merging Two Hex Image Files with Simplicity Commander

        delu | 04/103/2017 | 05:23 PM


        I want to merge the EFM8LB1 bootloader and an application hex image file. Is there a tool available that can do this?


        Yes. To do this, use Simplicity Commander to merge the hex files. Refer to UG162 for more information and detailed command options for the merge command.


        Using the EFM8LB1 UART bootloader and blinky as an example (you can get these images in AN945SW), open the windows command console and input the command below:



        commander convert EFM8LB1_RainbowBlinky.hex EFM8LB12F64E_QFP32.hex -o Merge_uart.hex





        This will merge the two hex files together into a single hex file.

      • Power Negotiation Between the Source and Sink in PD (Power Delivery) Revision 2.0

        yucheng | 04/103/2017 | 05:18 PM

        In a power delivery system, the source port supplies power over VBUS and is most commonly a Host or Hub DFP downstream port.  The sink port consumes power from VBUS and is most commonly a Device. There are some devices that are capable of operating as either a Source or a Sink, and these are called Dual-Role power devices.


        In a PD system, the Source can provide various types of power, such as fixed supply (e.g. 5V, 9V), variable power supply, and battery. The Source will describe its power capabilities by sending a Source_Capabilities Message during power negotiation.


        For example, the figure below illustrates that a Source can provide four types of power: 5V, 9V, variable power, and battery. It describes its capabilities by sending Source_Capabilities message on the CC pin. 


        A capabilities message has at least one PDO (Power Data Object) for vSafe5V for backwards compatibility with legacy VBUS ports. The vSafe5V fixed supply object is always the first object.


        The corresponding message with 4 power data objects is shown below. The first Data Object describes the fixed 5V power, the second one is for the fixed 9V power, the third one is for the variable power, and the last one is for the battery.




        After receiving the Source_Capabilities Message, the Sink should send a Request Message to make a request for power.


        The Request Message returns one and only one Sink Request Data Object to identify the PDO (Power Data Object) being requested. The index value in the Object Position field of the request message indicates which object in the Source_Capabilities Message is being requested. The value 1 always indicates the 5V Fixed Supply PDO, as it is the first object following the Source_Capabilities Message Header, the number 2 refers to the next PDO, and so forth.


        For example, the received Source_Capabilities Message includes a Fixed Supply PDO described as above that offers 9V@1.5A. If the Sink wants 9V@1.5A, the index value in the Object position field of the request message should be 2.


        After receiving the request from Sink, the Source evaluates and accepts the request with an Accept Message and then transitions to the new power level. Finally, it informs the Sink by sending a PS_RDY Message. At this time, the Sink will start using the new power level.