Proprietary Knowledge Base

    Publish
     
      • How to set up 16 bit counter in MTP memory?

        tanagy | 12/349/2014 | 10:29 AM

        Question

        The Si4010 MTP counter examples show how to set up for between 20-bits and 32-bits. Can the user set this up for 16-bits?

         

        Answer

        The '20bit to 32bit' references the overall balanced counter width, which is needed to store the counter value in MTP.

        The counters can count up to 550k-1040k. The MTP API module does not implement a 16 bit counter.

        However, by using a normal 16bit counter without any Gray coding, counting up to 50k is possible. 50k is the guaranteed min. endurance of the MTP bits, first reached on LSB in this case. It is therefore possible to count up to at least 50000 by incrementing and storing a two byte variable in MTP, without an API to encode/decode.

      • Si4010 MTP memory usage example

        tanagy | 12/344/2014 | 12:03 PM

        Question

        I would like to write the MTP memory with my own values, I don´t want to use the inc/dec API functions. Can you give me some example ?

        Answer

        See the MTP memory usage details in chapter 7.8 of AN370.

        Below is an example for the scenario that is described in chapter 7.8.2.

         

        BYTE xdata *pbRData; //pointer to the copy of the MTP content in XRAM array

        //set bandgap/ldo for MTP use

        vSys_BandGapLdo(2);

        pbRData = pbMtp_Read(); //read MTP into XRAM array

        // manipulate data in the XRAM array:

        abButtonFrame[5] = pbRData[0]; //read byte

        .

        pbRData[3] = abButtonFrame[6]; //write byte

        .

        // write XRAM array to MTP memory

        EA=0;

        PCON = PCON; /* Dummy instruction required after EA setting */

        bMtp_Write(40);

        EA=1;

      • What HVRAM locations of the Si4010 are used by API?

        tanagy | 12/344/2014 | 11:58 AM

        Question

        What HVRAM locations of the Si4010 are used by the API? 

        Answer

        There are two API functions that write the HVRAM (beside vHvram_Write): 
        1. vSys_FirstPowerUp 
        a. Clears the HVRAM. 
        b. Initializes the HVRAM  byte at address 0x02 to 0xFF. 
        It happens only when battery was inserted, so this location can be used by the user code for any purpose. 
        2. vSys_Shutdown 
        Clears bit in HVRAM which means "chip didn't shut down correctly."(bit 0 at address 0x00) 
        If user wants to use this bit to check if shutdown was called, it has to be set by user code. 

         

        Conclusion: The whole HVRAM except the first bit can be used freely by the user code. 

      • Si4010 MTP counter

        tanagy | 12/344/2014 | 11:47 AM

        Question

        The Si4010 MTP counter examples show how to set up for between 20-bits and 32-bits. Can the user set this up for 16-bits?

        Answer

        The '20bit to 32bit' references the overall balanced counter width, which is needed to store the counter value in MTP memory. These balanced counters can count up to 550k-1040k. The MTP API module does not implement a 16 bit counter.

        However, by using a normal 16bit counter without any Gray coding, counting up to 50k is possible. 50k is the guaranteed minimum endurance of the MTP memory bits, first reached on LSB in this case. It is therefore possible to count up to at least 50000 by incrementing and storing a two byte variable in MTP memory, without an API to encode/decode.

      • Continuous preamble transmission with EZRadioPRO revC2A

        tanagy | 12/344/2014 | 11:25 AM

        Continuous preamble transmission

        Sometimes a continuous standard preamble comes in handy for testing purposes.

        With RevC2A chips it is possible to internally modulate with an infinite square wave pattern.  Basically, we use the PN9 modulation mode but load up a ‘1010…’ seed pattern into the LFSR and then just circulate it forever. 

        (There was a bug in RevB1B chips that prevented this from working directly)

        The following batch lines can be added to the end of a WDS generated CW batch:

        (Remember to remove the original MODEM_MOD_TYPE setting)

         

        # Set PN polynomial = 16-bit circulator

        'SET_PROPERTY' 'PKT_WHT_POLY_15_8' 80

        'SET_PROPERTY' 'PKT_WHT_POLY_7_0' 00

        # Set PN Polynomial seed value = 0xAAAA (1010... pattern)

        'SET_PROPERTY' 'PKT_WHT_SEED_15_8' AA

        'SET_PROPERTY' 'PKT_WHT_SEED_7_0' AA

        # Switch to PN9 mode (must be set after polynomial & seed)

        'SET_PROPERTY' 'MODEM_MOD_TYPE' 13

        'START_TX' 00 00 00 00

         

         

      • Si4010 external pull-up

        tanagy | 12/344/2014 | 10:29 AM

        Question

        The Si4010 datasheet states that the Roff option can be used to disable internal pull-up on GPIO1 and GPIO2, and external pull-up can be used.
        Is there a recommended maximum value of this external pull-up?

         

        Answer

        Yes, the recommended maximum value is 1MOhm.

      • RX FIFO Almost Full interrupt resolution

        tanagy | 12/344/2014 | 06:36 AM

        Question

        What is the resolution of the RX FIFO Almost Full interrupt on C2A revision of the EZRadioPRO radios?

        Answer

        The resolution is four bytes. This means that if the RX FIFO Almost Full threshold (PKT_RX_THRESHOLD) is set to 1, 2, 3 or 4 bytes, the RX Fifo Almost Full interrupt arrives after the reception of the fourth byte of the payload, plus about 30-60µs delay.

        If the threshold is 5,6,7 or 8 bytes, the interrupt arrives after the 8th byte, e.t.c.

      • EZRadioPRO backward compatibility

        atgosi | 12/343/2014 | 07:51 PM

        Question

        Will a code written for RevB1B be running on RevC2A?      

        Answer

        Yes, RevC2A is backward compatible with RevB1B. That is to say a code that was originally developed for a RevB1B chip, should be running on a RevC2A chip without any modification. Note, however, that if the RevC2A chip is using a feature that needs a patch (e.g. Patch ID 0x311A), the power-up sequence has to be slightly different, meaning that the host firmware has to be upgraded. Commands and properties that existed on RevB1B did not change on RevC2A, therefore the radio configuration does not have to change.

        The reverse is not true, however. Since there are new commands and properties on RevC2A, a code written for RevC2A may not run on RevB1B. 

      • 802.15.4g support

        atgosi | 12/343/2014 | 07:51 PM

        Question

        How is 802.15.4g supported on EZRadioPRO?

        Answer

        Both the Si4460/61/63 Rev C2A and Si4467/68 RevA2A chips can be configured to transmit and receive 802.15.4g compliant packets. The PHY layer of the standard is supported by HW. That includes CRC calculation (both 16- and 32-bit), data whitening, modulation type (2GFSK, 4GFSK), all sub-GHz frequency bands, PHR parsing (i.e. processing the packet header at the RX side in order to receive the right amount of bytes, select CRC type, enable/disable data whitening). There is an 802.15.4g bidirectional example project available under WDS, which is documented in AN633. Note that the MAC has to be implemented by the host MCU code, it is only the PHY that is supported by hardware.

         

      • Identify part number and chip FW

        atgosi | 12/343/2014 | 07:51 PM

        Question

        How to identify chip revision by firmware?

        Answer

        PART_INFO and FUNC_INFO API commands can be used for that purpose. For example, a Rev B1B chip corresponds to ROMID 3 (see PART_INFO), chip FW ID 3.0.15 (see FUNC_INFO:

        REV_EXT, REV_BRANCH, REV_INT). A Rev C2A chip corresponds to ROMID 6, FW ID 6.0.2, and a Rev A2A chip corresponds to ROMID 6, FW ID 6.0.7. If a patch is applied, it will be returned by FUNC_INFO. For example, Rev C2A has a published patch automatically being downloaded from within WDS, therefore FUNC_INFO will return Patch ID 0x311A.