AN440 S i4430/31/ 32 R E G I S T E R D E S C R I P T I O N S 1. Complete Register Summary Table 1. Register Descriptions Add R/W Function/Desc D7 D6 D5 Data D4 D3 D2 D1 D0 POR Default 00 R Device Type 0 0 0 dt[4] dt[3] dt[2] dt[1] dt[0] 08h 01 R Device Version 0 0 0 vc[4] vc[3] vc[2] vc[1] vc[0] — 02 R Device Status ffovfl ffunfl rxffem headerr reserved reserved cps[1] cps[0] — 03 R Interrupt Status 1 ifferr itxffafull itxffaem irxffafull iext ipksent ipkvalid icrcerror — 04 R Interrupt Status 2 iswdet ipreaval ipreainval irssi iwut ilbd ichiprdy ipor — 05 R/W Interrupt Enable 1 enfferr entxffafull entxffaem enrxffafull enext enpksent enpkvalid encrcerror 00h 06 R/W Interrupt Enable 2 enswdet enpreaval enpreainval enrssi enwut enlbd enchiprdy enpor 03h 07 R/W Operating & Function Control 1 swres enlbd enwt x32ksel txon rxon pllon xton 01h 08 R/W Operating & Function Control 2 antdiv[2] antdiv[1] antdiv[0] rxmpk autotx enldm ffclrrx ffclrtx 00h 09 R/W Crystal Oscillator Load Capacitance xtalshft xlc[6] xlc[5] xlc[4] xlc[3] xlc[2] xlc[1] xlc[0] 7Fh 0A R/W Microcontroller Output Clock Reserved Reserved clkt[1] clkt[0] enlfc mclk[2] mclk[1] mclk[0] 06h 0B R/W GPIO0 Configuration gpio0drv[1] gpio0drv[0] pup0 gpio0[4] gpio0[3] gpio0[2] gpio0[1] gpio0[0] 00h 0C R/W GPIO1 Configuration gpio1drv[1] gpio1drv[0] pup1 gpio1[4] gpio1[3] gpio1[2] gpio1[1] gpio1[0] 00h 0D R/W GPIO2 Configuration gpio2drv[1] gpio2drv[0] pup2 gpio2[4] gpio2[3] gpio2[2] gpio2[1] gpio2[0] 00h 0E R/W I/O Port Configuration Reserved extitst[2] extitst[1] extitst[0] itsdo dio2 dio1 dio0 00h 0F R/W ADC Configuration adcstart/adcdone adcsel[2] adcsel[1] adcsel[0] adcref[1] adcref[0] adcgain[1] adcgain[0] 00h 10 R/W ADC Sensor Amplifier Offset Reserved Reserved Reserved Reserved adcoffs[3] adcoffs[2] adcoffs[1] adcoffs[0] 00h 11 R ADC Value adc[7] adc[6] adc[5] adc[4] adc[3] adc[2] adc[1] adc[0] — 12 R/W Temperature Sensor Control tsrange[1] tsrange[0] entsoffs entstrim tstrim[3] tstrim[2] tstrim[1] tstrim[0] 20h 13 R/W Temperature Value Offset tvoffs[7] tvoffs[6] tvoffs[5] tvoffs[4] tvoffs[3] tvoffs[2] tvoffs[1] tvoffs[0] 00h 14 R/W Wake-Up Timer Period 1 Reserved Reserved Reserved wtr[4] wtr[3] wtr[2] wtr[1] wtr[0] 03h 15 R/W Wake-Up Timer Period 2 wtm[15] wtm[14] wtm[13] wtm[12] wtm[11] wtm[10] wtm[9] wtm[8] 00h 16 R/W Wake-Up Timer Period 3 wtm[7] wtm[6] wtm[5] wtm[4] wtm[3] wtm[2] wtm[1] wtm[0] 01h 17 R Wake-Up Timer Value 1 wtv[15] wtv[14] wtv[13] wtv[12] wtv[11] wtv[10] wtv[9] wtv[8] — 18 R Wake-Up Timer Value 2 wtv[7] wtv[6] wtv[5] wtv[4] wtv[3] wtv[2] wtv[1] wtv[0] — ldc[4] ldc[3] ldc[2] ldc[1] ldc[0] 00h 14h 19 R/W Low-Duty Cycle Mode Duration ldc[7] ldc[6] ldc[5] 1A R/W Low Battery Detector Threshold Reserved Reserved Reserved lbdt[4] lbdt[3] lbdt[2] lbdt[1] lbdt[0] 1B R Battery Voltage Level 0 0 0 vbat[4] vbat[3] vbat[2] vbat[1] vbat[0] — 1C R/W IF Filter Bandwidth dwn3_bypass ndec[2] ndec[1] ndec[0] filset[3] filset[2] filset[1] filset[0] 01h 1D R/W AFC Loop Gearshift Override afcbd enafc afcgearh[2] afcgearh[1] afcgearh[0] 1p5 bypass matap ph0size 40h 1E R/W AFC Timing Control swait_timer[1] swait_timer[0] shwait[2] shwait[1] shwait[0] anwait[2] anwait[1] anwait[0] 0Ah 1F R/W Clock Recovery Gearshift Override Reserved Reserved crfast[2] crfast[1] crfast[0] crslow[2] crslow[1] crslow[0] 03h 20 R/W Clock Recovery Oversampling Ratio rxosr[7] rxosr[6] rxosr[5] rxosr[4] rxosr[3] rxosr[2] rxosr[1] rxosr[0] 64h 21 R/W Clock Recovery Offset 2 rxosr[10] rxosr[9] rxosr[8] stallctrl ncoff[19] ncoff[18] ncoff[17] ncoff[16] 01h 22 R/W Clock Recovery Offset 1 ncoff[15] ncoff[14] ncoff[13] ncoff[12] ncoff[11] ncoff[10] ncoff[9] ncoff[8] 47h 23 R/W Clock Recovery Offset 0 ncoff[7] ncoff[6] ncoff[5] ncoff[4] ncoff[3] ncoff[2] ncoff[1] ncoff[0] AEh Rev 0.9 8/15 Copyright © 2015 by Silicon Laboratories 4430/31/32 AN440 Table 1. Register Descriptions (Continued) Add R/W Function/Desc D7 D6 D5 Data D4 D3 D2 D1 D0 POR Default 24 R/W Clock Recovery Timing Loop Gain 1 Reserved Reserved Reserved rxncocomp crgain2x crgain[10] crgain[9] crgain[8] 02h 25 R/W Clock Recovery Timing Loop Gain 0 crgain[7] crgain[6] crgain[5] crgain[4] crgain[3] crgain[2] crgain[1] crgain[0] 8Fh 26 R Received Signal Strength Indicator rssi[7] rssi[6] rssi[5] rssi[4] rssi[3] rssi[2] rssi[1] rssi[0] — 27 R/W RSSI Threshold for Clear Channel Indicator rssith[7] rssith[6] rssith[5] rssith[4] rssith[3] rssith[2] rssith[1] rssith[0] 1Eh 28 R Antenna Diversity Register 1 adrssi1[7] adrssia[6] adrssia[5] adrssia[4] adrssia[3] adrssia[2] adrssia[1] adrssia[0] — 29 R Antenna Diversity Register 2 adrssib[7] adrssib[6] adrssib[5] adrssib[4] adrssib[3] adrssib[2] adrssib[1] adrssib[0] — 2A R/W AFC Limiter Afclim[7] Afclim[6] Afclim[5] Afclim[4] Afclim[3] Afclim[2] Afclim[1] Afclim[0] 00h 2B R AFC Correction Read afc_corr[9] afc_corr[8] afc_corr[7] afc_corr[6] afc_corr[5] afc_corr[4] afc_corr[3] afc_corr[2] 00h 2C R/W OOK Counter Value 1 afc_corr[9] afc_corr[9] ookfrzen peakdeten madeten ookcnt[10] ookcnt[9] ookcnt[8] 18h 2D R/W OOK Counter Value 2 ookcnt[7] ookcnt[6] ookcnt[5] ookcnt[4] ookcnt[3] ookcnt[2] ookcnt[1] ookcnt[0] BCh 2E R/W Slicer Peak Hold Reserved attack[2] attack[1] attack[0] decay[3] decay[2] decay[1] decay[0] 26h 8Dh 2F Reserved 30 R/W Data Access Control enpacrx lsbfrst crcdonly skip2ph enpactx encrc crc[1] crc[0] 0 rxcrc1 pksrch pkrx pkvalid crcerror pktx pksent 31 R EzMAC status 32 R/W Header Control 1 33 R/W Header Control 2 skipsyn hdlen[2] hdlen[1] hdlen[0] fixpklen synclen[1] synclen[0] prealen[8] 22h 34 R/W Preamble Length prealen[7] prealen[6] prealen[5] prealen[4] prealen[3] prealen[2] prealen[1] prealen[0] 08h 35 R/W Preamble Detection Control preath[4] preath[3] preath[2] preath[1] preath[0] rssi_off[2] rssi_off[1] rssi_off[0] 2Ah 36 R/W Sync Word 3 sync[31] sync[30] sync[29] sync[28] sync[27] sync[26] sync[25] sync[24] 2Dh 37 R/W Sync Word 2 sync[23] sync[22] sync[21] sync[20] sync[19] sync[18] sync[17] sync[16] D4h 38 R/W Sync Word 1 sync[15] sync[14] sync[13] sync[12] sync[11] sync[10] sync[9] sync[8] 00h 39 R/W Sync Word 0 sync[7] sync[6] sync[5] sync[4] sync[3] sync[2] sync[1] sync[0] 00h 3A R/W Transmit Header 3 txhd[31] txhd[30] txhd[29] txhd[28] txhd[27] txhd[26] txhd[25] txhd[24] 00h bcen[3:0] hdch[3:0] — 0Ch 3B R/W Transmit Header 2 txhd[23] txhd[22] txhd[21] txhd[20] txhd[19] txhd[18] txhd[17] txhd[16] 00h 3C R/W Transmit Header 1 txhd[15] txhd[14] txhd[13] txhd[12] txhd[11] txhd[10] txhd[9] txhd[8] 00h 3D R/W Transmit Header 0 txhd[7] txhd[6] txhd[5] txhd[4] txhd[3] txhd[2] txhd[1] txhd[0] 00h 3E R/W Transmit Packet Length pklen[7] pklen[6] pklen[5] pklen[4] pklen[3] pklen[2] pklen[1] pklen[0] 00h 3F R/W Check Header 3 chhd[31] chhd[30] chhd[29] chhd[28] chhd[27] chhd[26] chhd[25] chhd[24] 00h 40 R/W Check Header 2 chhd[23] chhd[22] chhd[21] chhd[20] chhd[19] chhd[18] chhd[17] chhd[16] 00h 41 R/W Check Header 1 chhd[15] chhd[14] chhd[13] chhd[12] chhd[11] chhd[10] chhd[9] chhd[8] 00h 42 R/W Check Header 0 chhd[7] chhd[6] chhd[5] chhd[4] chhd[3] chhd[2] chhd[1] chhd[0] 00h 43 R/W Header Enable 3 hden[31] hden[30] hden[29] hden[28] hden[27] hden[26] hden[25] hden[24] FFh 44 R/W Header Enable 2 hden[23] hden[22] hden[21] hden[20] hden[19] hden[18] hden[17] hden[16] FFh 45 R/W Header Enable 1 hden[15] hden[14] hden[13] hden[12] hden[11] hden[10] hden[9] hden[8] FFh 46 R/W Header Enable 0 hden[7] hden[6] hden[5] hden[4] hden[3] hden[2] hden[1] hden[0] FFh 47 R Received Header 3 rxhd[31] rxhd[30] rxhd[29] rxhd[28] rxhd[27] rxhd[26] rxhd[25] rxhd[24] — 48 R Received Header 2 rxhd[23] rxhd[22] rxhd[21] rxhd[20] rxhd[19] rxhd[18] rxhd[17] rxhd[16] — — 49 R Received Header 1 rxhd[15] rxhd[14] rxhd[13] rxhd[12] rxhd[11] rxhd[10] rxhd[9] rxhd[8] 4A R Received Header 0 rxhd[7] rxhd[6] rxhd[5] rxhd[4] rxhd[3] rxhd[2] rxhd[1] rxhd[0] — 4B R Received Packet Length rxplen[7] rxplen[6] rxplen[5] rxplen[4] rxplen[3] rxplen[2] rxplen[1] rxplen[0] — adc8[4] adc8[3] adc8[2] adc8[1] adc8[0] 10h Reserved Reserved Reserved Reserved 00h 4C-4E 4F Reserved R/W ADC8 Control Reserved 50-5F Reserved adc8[5] Reserved 60 R/W 2 Channel Filter Coefficient Address Inv_pre_th[3] Inv_pre_th[2] Inv_pre_th[1] Inv_pre_th[0] Rev 0.9 A N 440 Table 1. Register Descriptions (Continued) Add R/W Function/Desc D7 D6 D5 pwst[2] pwst[1] pwst[0] 61 62 D3 D2 D1 D0 POR Default clkhyst enbias2x enamp2x bufovr enbuf 24h lnagain pga3 pga2 pga1 pga0 20h Reserved R/W Crystal Oscillator/Control Test 63-68 69 Data D4 Reserved R/W AGC Override 1 Reserved sgi 6A-6C agcen Reserved 6D R/W TX Power Reserved Reserved Reserved Reserved Ina_sw txpow[2] txpow[1] txpow[0] 18h 6E R/W TX Data Rate 1 txdr[15] txdr[14] txdr[13] txdr[12] txdr[11] txdr[10] txdr[9] txdr[8] 0Ah 6F R/W TX Data Rate 0 txdr[7] txdr[6] txdr[5] txdr[4] txdr[3] txdr[2] txdr[1] txdr[0] 3Dh 70 R/W Modulation Mode Control 1 Reserved Reserved txdtrtscale enphpwdn manppol enmaninv enmanch enwhite 0Ch 71 R/W Modulation Mode Control 2 trclk[1] trclk[0] dtmod[1] dtmod[0] eninv fd[8] modtyp[1] modtyp[0] 00h 72 R/W Frequency Deviation fd[7] fd[6] fd[5] fd[4] fd[3] fd[2] fd[1] fd[0] 20h 73 R/W Frequency Offset 1 fo[7] fo[6] fo[5] fo[4] fo[3] fo[2] fo[1] fo[0] 00h 74 R/W Frequency Offset 2 Reserved Reserved Reserved Reserved Reserved Reserved fo[9] fo[8] 00h 75 R/W Frequency Band Select Reserved sbsel hbsel fb[4] fb[3] fb[2] fb[1] fb[0] 75h 76 R/W Nominal Carrier Frequency 1 fc[15] fc[14] fc[13] fc[12] fc[11] fc[10] fc[9] fc[8] BBh 77 R/W Nominal Carrier Frequency 0 fc[7] fc[6] fc[5] fc[4] fc[3] fc[2] fc[1] fc[0] 80h 78 Reserved 79 R/W Frequency Hopping Channel Select fhch[7] fhch[6] fhch[5] fhch[4] fhch[3] fhch[2] fhch[1] fhch[0] 00h 7A R/W Frequency Hopping Step Size fhs[7] fhs[6] fhs[5] fhs[4] fhs[3] fhs[2] fhs[1] fhs[0] 00h 7B Reserved 7C R/W TX FIFO Control 1 Reserved Reserved txafthr[5] txafthr[4] txafthr[3] txafthr[2] txafthr[1] txafthr[0] 37h 7D R/W TX FIFO Control 2 7E R/W RX FIFO Control Reserved Reserved txaethr[5] txaethr[4] txaethr[3] txaethr[2] txaethr[1] txaethr[0] 04h Reserved Reserved rxafthr[5] rxafthr[4] rxafthr[3] rxafthr[2] rxafthr[1] rxafthr[0] 7F R/W FIFO Access fifod[7] 37h fifod[6] fifod[5] fifod[4] fifod[3] fifod[2] fifod[1] fifod[0] — Rev 0.9 3 AN440 2. Detailed Register Descriptions Register 00h. Device Type Code (DT) Bit D7 D6 D5 D4 D3 Name Type D2 D1 D0 D1 D0 dt[4:0] R R R R Reset value = 00001000 Bit Name 7:5 Reserved 4:0 dt[4:0] Function Device Type Code. EZRadioPRO: 01000. Register 01h. Version Code (VC) Bit D7 D6 D5 D4 D3 Name Type D2 vc[4:0] R R R R Reset value = xxxxxxxx 4 Bit Name 7:5 Reserved 4:0 vc[4:0] Function Version Code. Code indicating the version of the chip. Si4430/31/32 Rev B1: 00110. Si100x Rev C, Si101x Rev A, Si102x/3x Rev A: 00110. Si100x Rev E, Si101x Rev B: Si102x/3x Rev B: 00111. Rev 0.9 A N 440 Register 02h. Device Status Bit D7 D6 D5 D4 D3 Name ffovfl ffunfl rxffem headerr freqerr Type R R R R R D2 D1 D0 cps[1:0] R R Reset value = xxxxxxxx Bit Name Function 7 ffovfl RX/TX FIFO Overflow Status. 6 ffunfl RX/TX FIFO Underflow Status. 5 rxffem 4 headerr Header Error Status. Indicates if the received packet has a header check error. 3 freqerr Frequency Error Status. The programmed frequency is outside of the operating range. The actual frequency is saturated to the max/min value. 2 Reserved 1:0 cps[1:0] RX FIFO Empty Status. Chip Power State. 00: Idle State 01: RX State 10: TX State Rev 0.9 5 AN440 Register 03h. Interrupt/Status 1 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name ifferr itxffafull ixtffaem irxffafull iext ipksent ipkvalid icrerror Type R R R R R R R R Reset value = xxxxxxxx Bit Name Function 7 ifferr 6 itxffafull TX FIFO Almost Full. When set to 1 the TX FIFO has met its almost full threshold and needs to be transmitted. 5 itxffaem TX FIFO Almost Empty. When set to 1 the TX FIFO is almost empty and needs to be filled. 4 irxffafull RX FIFO Almost Full.When set to 1 the RX FIFO has met its almost full threshold and needs to be read by the microcontroller. 3 iext 2 ipksent Packet Sent Interrupt. When set to1 a valid packet has been transmitted. 1 ipkvalid Valid Packet Received.When set to 1 a valid packet has been received. 0 icrcerror FIFO Underflow/Overflow Error. When set to 1 the TX or RX FIFO has overflowed or underflowed. External Interrupt. When set to 1 an interrupt occurred on one of the GPIO’s if it is programmed so. The status can be checked in register 0Eh. See GPIOx Configuration section for the details. CRC Error. When set to 1 the cyclic redundancy check is failed. When any of the Interrupt/Status 1 register bits change state from 0 to 1 the device will notify the microcontroller by setting the nIRQ pin LOW = 0 if the corresponding enable bit is set in the Interrupt Enable 1 register. The nIRQ pin will go to HIGH and all the enabled interrupt bits will be cleared when the microcontroller reads this address. If any of these bits are not enabled in the Interrupt Enable 1 register, they then become status signals that can be read at any time. They will not be cleared by reading the register. 6 Rev 0.9 A N 440 Table 2. When Individual Status Bits are Set/Cleared if not Enabled as Interrupts Bit Status Name Set/Clear Conditions 7 ifferr 6 itxffafull 5 itxffaem Set if there is a TX or RX FIFO Overflow or Underflow condition. It is cleared only by applying FIFO reset to the specific FIFO that caused the condition. Will be set when the number of bytes written to the TX FIFO is greater than the TX Almost Full Threshold set in SPI Reg 7Ch. Example: If Reg 7Ch =0x3C=60d, the itxffafull interrupt will not be generated if 60 bytes (or less) are written to the TX FIFO, but will be generated if 61 bytes (or more) are written to the TX FIFO. It is automatically cleared when a sufficient number of bytes have been read from the TX FIFO and transmitted, such that the remaining number of bytes in the TX FIFO is less than or equal to the TX Almost Full Threshold. Will be set when the number of bytes remaining for transmission in the TX FIFO is less than or equal to the TX Almost Empty Threshold set in SPI Reg 7Dh, plus one byte. Example: If Reg 7Dh=0x05, the itxffaem interrupt will be generated when 6 or less bytes remain in the TX FIFO. It is automatically cleared when a sufficient number of bytes have been written to the TX FIFO, such that the number of data bytes not yet transmitted is above the TX Almost Empty Threshold. Update of this status flag requires a clock from the internal TX domain circuitry, and thus may not indicate accurately until TX mode is entered. 4 irxffafull 3 iext 2 ipksent Will be set upon complete transmission of a packet (no TX abort). This status will be cleared if 1) The chip is commanded to leave FIFO mode, or 2) While the chip is in FIFO mode a new transmission is started. Packet Sent functionality remains available even if the TX Packet Handler (enpactx bit D3 in SPI Reg 30h) is not enabled, as it is possible construct and send an entire packet from the FIFO without making use of the Packet Handler. 1 ipkvalid Will be set upon full and correct reception of a packet (no RX abort). It is not automatically cleared by simply re-entering RX mode, but is only cleared upon detection of a valid Sync Word in the next RX packet. Packet Valid functionality is not available if the RX Packet Handler (enpacrx bit D7 in SPI Reg 30h) is not enabled. 0 icrcerror Will be set if the CRC computed during RX differs from the CRC sent in the packet by the TX. It is cleared upon start of data reception in a new packet. CRC functionality is not available if the RX Packet Handler (enpacrx bit D7 in SPI Reg 30h) is not enabled. Will be set when the number of bytes received (and not yet read-out) in RX FIFO is greater than the RX Almost Full threshold set in SPI Reg 7Eh. Example: If Reg 7EH=0x3C=60d, the irxffafull interrupt will not be generated if 60 bytes (or less) are received and stored to the RX FIFO, but will be generated if 61 bytes (or more) are received and stored to the RXFIFO. It is automatically cleared when a sufficient number of bytes are read from the RX FIFO, such that the remaining number of bytes in the RX FIFO is below the RX Almost Full Threshold. Update of this status flag requires a clock from the internal RX domain circuitry, and thus may not indicate accurately until RX mode is entered. External interrupt source. Rev 0.9 7 AN440 Register 04h. Interrupt/Status 2 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name iswdet ipreaval ipreainval irssi iwut ilbd ichiprdy ipor Type R R R R R R R R Reset value = xxxxxxxx Bit Name Function 7 iswdet Sync Word Detected. When a sync word is detected this bit will be set to 1. 6 ipreaval Valid Preamble Detected. When a preamble is detected this bit will be set to 1. 5 ipreainval 4 irssi RSSI. When RSSI level exceeds the programmed threshold this bit will be set to 1. 3 iwut Wake-Up-Timer. On the expiration of programmed wake-up timer this bit will be set to 1. 2 ilbd Low Battery Detect. When a low battery event has been detected this bit will be set to 1. This interrupt event is saved even if it is not enabled by the mask register bit and causes an interrupt after it is enabled. 1 ichiprdy 0 ipor Invalid Preamble Detected. When the preamble is not found within a period of time set by the invalid preamble detection threshold in Register 60h, this bit will be set to 1. Chip Ready (XTAL). When a chip ready event has been detected this bit will be set to 1. Power-on-Reset (POR). When the chip detects a Power on Reset above the desired setting this bit will be set to 1. When any of the Interrupt/Status 2 register bits change state from 0 to 1 the device will notify the microcontroller by setting the nIRQ pin LOW = 0 if the corresponding enable bit is set in the Interrupt Enable 2 register. The nIRQ pin will go to HIGH and all the enabled interrupt bits will be cleared when the microcontroller reads this address. If any of these bits are not enabled in the Interrupt Enable 2 register, they then become status signals that can be read at any time. They will not be cleared by reading the register. 8 Rev 0.9 A N 440 Table 3. Detailed Description of Status Registers when not Enabled as Interrupts Bit Status Name Set/Clear Conditions 7 iswdet Goes high once the Sync Word is detected. Goes low once we are done receiving the current packet. 6 ipreaval 5 ipreainval 4 irssi Should remain high as long as the RSSI value is above programmed threshold level 3 iwut Wake time timer interrupt. Use as an interrupt, not as a status. 2 ilbd Low Battery Detect. When a low battery event has been detected this bit will be set to 1. It will remain set as long as the battery voltage is below the threshold but will reset if the voltage returns to a level higher than the threshold. 1 ichiprdy 0 ipor Goes high once the preamble is detected. Goes low once the sync is detected or the RX wait for the sync times-out. Self clearing, user should use this as an interrupt source rather than a status. Chip ready goes high once we enable the xtal, TX or RX, and a settling time for the Xtal clock elapses. The status stay high unless we go back to Idle mode. Power on status. Rev 0.9 9 AN440 Register 05h. Interrupt Enable 1 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name enfferr entxffafull entxffaem enrxffafull enext enpksent enpkvalid encrcerror Type R/W R/W R/W R/W R/W R/W R/W R/W Reset value = 00000000 10 Bit Name Function 7 enfferr 6 entxffafull Enable TX FIFO Almost Full. When set to 1 the TX FIFO Almost Full interrupt will be enabled. 5 entxffaem Enable TX FIFO Almost Empty. When set to 1 the TX FIFO Almost Empty interrupt will be enabled. 4 enrxffafull Enable RX FIFO Almost Full. When set to 1 the RX FIFO Almost Full interrupt will be enabled. 3 enext 2 enpksent Enable Packet Sent. When ipksent =1 the Packet Sense Interrupt will be enabled. 1 enpkvalid Enable Valid Packet Received. When ipkvalid = 1 the Valid Packet Received Interrupt will be enabled. 0 encrcerror Enable CRC Error. When set to 1 the CRC Error interrupt will be enabled. Enable FIFO Underflow/Overflow. When set to 1 the FIFO Underflow/Overflow interrupt will be enabled. Enable External Interrupt. When set to 1 the External Interrupt will be enabled. Rev 0.9 A N 440 Register 06h. Interrupt Enable 2 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name enswdet enpreaval enpreainval enrssi enwut enlbd enchiprdy enpor Type R/W R/W R/W R/W R/W R/W R/W R/W Reset value = 00000011 Bit Name Function 7 enswdet 6 enpreaval 5 enpreainval 4 enrssi Enable RSSI. When set to 1 the RSSI Interrupt will be enabled. 3 enwut Enable Wake-Up Timer. When set to 1 the Wake-Up Timer interrupt will be enabled. 2 enlbd Enable Low Battery Detect. When set to 1 the Low Battery Detect interrupt will be enabled. 1 enchiprdy 0 enpor Enable Sync Word Detected. When set to 1 the Syn Word Detected Interrupt will be enabled. Enable Valid Preamble Detected. When set to 1 the Valid Preamble Detected Interrupt will be enabled. Enable Invalid Preamble Detected. When set to 1 the Invalid Preamble Detected Interrupt will be enabled. Enable Chip Ready (XTAL). When set to 1 the Chip Ready interrupt will be enabled. Enable POR. When set to 1 the POR interrupt will be enabled. Rev 0.9 11 AN440 Register 07h. Operating Mode and Function Control 1 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name swres enlbd enwt x32ksel txon rxon pllon xton Type R/W R/W R/W R/W R/W R/W R/W R/W Reset value = 00000001 12 Bit Name Function 7 swres Software Register Reset Bit. This bit may be used to reset all registers simultaneously to a DEFAULT state, without the need for sequentially writing to each individual register. The RESET is accomplished by setting swres = 1. This bit will be automatically cleared. The user should wait until the CHIPRDY status flag/interrupt is issued before sending further SPI commands to the chip. 6 enlbd Enable Low Battery Detect. When this bit is set to 1 the Low Battery Detector circuit and threshold comparison will be enabled. 5 enwt Enable Wake-Up-Timer. Enabled when enwt = 1. If the Wake-up-Timer function is enabled it will operate in any mode and notify the microcontroller through the GPIO interrupt when the timer expires. 4 x32ksel 3 txon TX on in Manual Transmit Mode. Automatically cleared in FIFO mode once the packet is sent. 2 rxon RX on in Manual Receiver Mode. Automatically cleared if Multiple Packets config. is disabled and a valid packet received. 1 pllon TUNE Mode (PLL is ON). When pllon = 1 the PLL will remain enabled in Idle State. This allows for faster turnaround time at the cost of increased current consumption in Idle State. 0 xton READY Mode (Xtal is ON). 32,768 kHz Crystal Oscillator Select. 0: RC oscillator 1: 32 kHz crystal Rev 0.9 A N 440 Register 08h. Operating Mode and Function Control 2 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name antdiv[2:0] rxmpk autotx enldm ffclrrx ffclrtx Type R/W R/W R/W R/W R/W R/W Reset value = 00000000 Bit Name 7:5 antdiv[2:0] Function Enable Antenna Diversity. The GPIO must be configured for Antenna Diversity for the algorithm to work properly. RX/TX state GPIO Ant1 non RX/TX state GPIO Ant2 GPIO Ant1 GPIO Ant2 000 1 0 0 0 001 0 1 0 0 010 1 0 1 1 011 0 1 1 1 100 antenna diversity algorithm 0 0 101 antenna diversity algorithm 1 1 110 antenna diversity algorithm in beacon mode 0 0 111 antenna diversity algorithm in beacon mode 1 1 4 rxmpk RX Multi Packet. When the chip is selected to use FIFO Mode (dtmod[1:0]) and RX Packet Handling (enpacrx) then it will fill up the FIFO with multiple valid packets if this bit is set, otherwise the transceiver will automatically leave the RX State after the first valid packet has been received. 3 autotx Automatic Transmission. When autotx = 1 the transceiver will enter automatically TX State when the FIFO is almost full. When the FIFO is empty it will automatically return to the Idle State. 2 enldm Enable Low Duty Cycle Mode. If this bit is set to 1 then the chip turns on the RX regularly. The frequency should be set in the Wake-Up Timer Period register, while the minimum ON time should be set in the Low-Duty Cycle Mode Duration register. The FIFO mode should be enabled also. Rev 0.9 13 AN440 Bit Name Function 1 ffclrrx RX FIFO Reset/Clear. This has to be a two writes operation: Setting ffclrrx =1 followed by ffclrrx = 0 will clear the contents of the RX FIFO. 0 ffclrtx TX FIFO Reset/Clear. This has to be a two writes operation: Setting ffclrtx =1 followed by ffclrtx = 0 will clear the contents of the TX FIFO. Register 09h. 30 MHz Crystal Oscillator Load Capacitance Bit D7 D6 D5 D4 D3 Name xtalshft xlc[6:0] Type R/W R/W D2 D1 D0 Reset value = 01111111 14 Bit Name Function 7 xtalshft Additional capacitance to coarse shift the frequency if xlc[6:0] is not sufficient. Not binary with xlc[6:0]. 6:0 xlc[6:0] Tuning Capacitance for the 30 MHz XTAL. Rev 0.9 A N 440 Register 0Ah. Microcontroller Output Clock Bit D7 D6 Name Type R R D5 D4 D3 D2 D1 clkt[1:0] enlfc mclk[2:0] R/W R/W R/W D0 Reset value = xx000110 Bit Name Function 7:6 Reserved 5:4 clkt[1:0] Clock Tail. If enlfc = 0 then it can be useful to provide a few extra cycles for the microcontroller to complete its operation. Setting the clkt[1:0] register will provide the addition cycles of the clock before it shuts off. 00: 0 cycle 01: 128 cycles 10: 256 cycles 11: 512 cycles 3 enlfc Enable Low Frequency Clock. When enlfc = 1 and the chip is in Sleep mode then the 32.768 kHz clock will be provided to the microcontroller no matter what the selection of mclk[2:0] is. For example if mclk[2:0] = 000, 30 MHz will be available through the GPIO to output to the microcontroller in all Idle, TX, or RX states. When the chip is commanded to Sleep mode the 30 MHz clock will become 32.768 kHz. 2:0 mclk[2:0] Microcontroller Clock. Different clock frequencies may be selected for configurable GPIO clock output. All clock frequencies are created by dividing the XTAL except for the 32 kHz clock which comes directly from the 32 kHz RC Oscillator. The mclk[2:0] setting is only valid when xton = 1 except the 111. 000: 30 MHz 001: 15 MHz 010: 10 MHz 011: 4 MHz 100: 3 MHz 101: 2 MHz 110: 1 MHz 111: 32.768 kHz Rev 0.9 15 AN440 Register 0Bh. GPIO Configuration 0 Bit D7 D6 D5 D4 D3 D2 Name gpiodrv0[1:0] pup0 gpio0[4:0] Type R/W R/W R/W D1 D0 Reset value = 00000000 Bit 7:6 Name gpiodrv0[1:0] GPIO Driving Capability Setting. 5 pup0 4:0 gpio0[4:0] 16 Function Pullup Resistor Enable on GPIO0. When set to 1 a 200 kresistor is connected internally between VDD and the pin if the GPIO is configured as a digital input. GPIO0 Pin Function Select. 00000: Power-On-Reset (output) 00001: Wake-Up Timer: 1 when WUT has expired (output) 00010: Low Battery Detect: 1 when battery is below threshold setting (output) 00011: Direct Digital Input 00100: External Interrupt, falling edge (input) 00101: External Interrupt, rising edge (input) 00110: External Interrupt, state change (input) 00111: ADC Analog Input 01000: Reserved (Analog Test N Input) 01001: Reserved (Analog Test P Input) 01010: Direct Digital Output 01011: Reserved (Digital Test Output) 01100: Reserved (Analog Test N Output) 01101: Reserved (Analog Test P Output) 01110: Reference Voltage (output) 01111: TX/RX Data CLK output to be used in conjunction with TX/RX Data pin (output) 10000: TX Data input for direct modulation (input) 10001: External Retransmission Request (input) 10010: TX State (output) 10011: TX FIFO Almost Full (output) 10100: RX Data (output) 10101: RX State (output) 10110: RX FIFO Almost Full (output) 10111: Antenna 1 Switch used for antenna diversity (output) 11000: Antenna 2 Switch used for antenna diversity (output) 11001: Valid Preamble Detected (output) 11010: Invalid Preamble Detected (output) 11011: Sync Word Detected (output) 11100: Clear Channel Assessment (output) 11101: VDD else : GND Rev 0.9 A N 440 Register 0Ch. GPIO Configuration 1 Bit D7 D6 D5 D4 D3 D2 Name gpiodrv1[1:0] pup1 gpio1[4:0] Type R/W R/W R/W D1 D0 Reset value = 00000000 Bit 7:6 Name Function gpiodrv1[1:0] GPIO Driving Capability Setting. 5 pup1 4:0 gpio1[4:0] Pullup Resistor Enable on GPIO1. When set to 1 a 200 kresistor is connected internally between VDD and the pin if the GPIO is configured as a digital input. GPIO1 Pin Function Select. 00000: Inverted Power-On-Reset (output) 00001: Wake-Up Timer: 1 when WUT has expired (output) 00010: Low Battery Detect: 1 when battery is below threshold setting (output) 00011: Direct Digital Input 00100: External Interrupt, falling edge (input) 00101: External Interrupt, rising edge (input) 00110: External Interrupt, state change (input) 00111: ADC Analog Input 01000: Reserved (Analog Test N Input) 01001: Reserved (Analog Test P Input) 01010: Direct Digital Output 01011: Reserved (Digital Test Output) 01100: Reserved (Analog Test N Output) 01101: Reserved (Analog Test P Output) 01110: Reference Voltage (output) 01111: TX/RX Data CLK output to be used in conjunction with TX/RX Data pin (output) 10000: TX Data input for direct modulation (input) 10001: External Retransmission Request (input) 10010: TX State (output) 10011: TX FIFO Almost Full (output) 10100: RX Data (output) 10101: RX State (output) 10110: RX FIFO Almost Full (output) 10111: Antenna 1 Switch used for antenna diversity (output) 11000: Antenna 2 Switch used for antenna diversity (output) 11001: Valid Preamble Detected (output) 11010: Invalid Preamble Detected (output) 11011: Sync Word Detected (output) 11100: Clear Channel Assessment (output) 11101: VDD else : GND Rev 0.9 17 AN440 Register 0Dh. GPIO Configuration 2 Bit D7 D6 D5 D4 D3 D2 Name gpiodrv2[1:0] pup2 gpio2[4:0] Type R/W R/W R/W D1 D0 Reset value = 00000000 Bit 7:6 Name gpiodrv2[1:0] GPIO Driving Capability Setting. 5 pup2 4:0 gpio2[4:0] 18 Function Pullup Resistor Enable on GPIO2. When set to 1 a 200 kresistor is connected internally between VDD and the pin if the GPIO is configured as a digital input. GPIO2 Pin Function Select. 00000: Microcontroller Clock 00001: Wake-Up Timer: 1 when WUT has expired (output) 00010: Low Battery Detect: 1 when battery is below threshold setting (output) 00011: Direct Digital Input 00100: External Interrupt, falling edge (input) 00101: External Interrupt, rising edge (input) 00110: External Interrupt, state change (input) 00111: ADC Analog Input 01000: Reserved (Analog Test N Input) 01001: Reserved (Analog Test P Input) 01010: Direct Digital Output 01011: Reserved (Digital Test Output) 01100: Reserved (Analog Test N Output) 01101: Reserved (Analog Test P Output) 01110: Reference Voltage (output) 01111: TX/RX Data CLK output to be used in conjunction with TX/RX Data pin (output) 10000: TX Data input for direct modulation (input) 10001: External Retransmission Request (input) 10010: TX State (output) 10011: TX FIFO Almost Full (output) 10100: RX Data (output) 10101: RX State (output) 10110: RX FIFO Almost Full (output) 10111: Antenna 1 Switch used for antenna diversity (output) 11000: Antenna 2 Switch used for antenna diversity (output) 11001: Valid Preamble Detected (output) 11010: Invalid Preamble Detected (output) 11011: Sync Word Detected (output) 11100: Clear Channel Assessment (output) 11101: VDD else : GND Rev 0.9 A N 440 Register 0Eh. I/O Port Configuration Bit D7 Name Type D6 D5 D4 D3 D2 D1 D0 extitst[2] extitst[1] extitst[0] itsdo dio2 dio1 dio0 R R R R/W R/W R/W R/W R Reset value = 00000000 Bit Name Function 7 Reserved 6 extitst[2] External Interrupt Status. If the GPIO2 is programmed to be an external interrupt source then the status can be read here. 5 extitst[1] External Interrupt Status. If the GPIO1 is programmed to be an external interrupt source then the status can be read here. 4 extitst[0] External Interrupt Status. If the GPIO0 is programmed to be an external interrupt source then the status can be read here. 3 itsdo Interrupt Request Output on the SDO Pin. nIRQ output is present on the SDO pin if this bit is set and the nSEL input is inactive (high). 2 dio2 Direct I/O for GPIO2. If the GPIO2 is configured to be a direct output then the value on the GPIO pin can be set here. If the GPIO2 is configured to be a direct input then the value of the pin can be read here. 1 dio1 Direct I/O for GPIO1. If the GPIO1 is configured to be a direct output then the value on the GPIO pin can be set here. If the GPIO1 is configured to be a direct input then the value of the pin can be read here. 0 dio0 Direct I/O for GPIO0. If the GPIO0 is configured to be a direct output then the value on the GPIO pin can be set here. If the GPIO0 is configured to be a direct input then the value of the pin can be read here. Rev 0.9 19 AN440 Register 0Fh. ADC Configuration Bit D7 D6 D5 D4 D3 D2 D1 D0 Name adcstart/ adcdone adcsel[2:0] adcref[1:0] adcgain[1:0] Type R/W R/W R/W R/W Reset value = 00000000 Bit 7 20 Name Function adcstart/adc- ADC Measurement Start Bit. done Set this bit=1 starts the ADC measurement process. This bit self-clears during the measurement cycle and returns high when the measurement is complete. The conversion process is fast; reading this bit may always appear to return a 1. 6:4 adcsel[2:0] ADC Input Source Selection. The internal 8-bit ADC input source can be selected as follows: 000: Internal Temperature Sensor 001: GPIO0, single-ended 010: GPIO1, single-ended 011: GPIO2, single-ended 100: GPIO0(+) – GPIO1(–), differential 101: GPIO1(+) – GPIO2(–), differential 110: GPIO0(+) – GPIO2(–), differential 111: GND 3:2 adcref[1:0] ADC Reference Voltage Selection. The reference voltage of the internal 8-bit ADC can be selected as follows: 0X: bandgap voltage (1.2 V) 10: VDD/3 11: VDD/2 1:0 adcgain[1:0] ADC Sensor Amplifier Gain Selection. The full scale range of the internal 8-bit ADC in differential mode (see adcsel) can be set as follows: adcref[0]=0 FS=0.014 x (adcgain[1:0] + 1) x VDD adcref[0]=1 FS=0.021 x (adcgain[1:0] + 1) x VDD Rev 0.9 A N 440 Register 10h. ADC Sensor Amplifier Offset Bit D7 D6 D5 D4 D3 Name Type D2 D1 D0 adcoffs[3:0] R R R R R/W Reset value = xxxx0000 Bit Name 7:4 Reserved 3:0 adcoffs[3:0] Function ADC Sensor Amplifier Offset*. *Note: The offset can be calculated as Offset = adcoffs[2:0] x VDD/1000; MSB = adcoffs[3] = Sign bit. Register 11h. ADC Value Bit D7 D6 D5 D4 D3 Name adc[7:0] Type R D2 D1 D0 Reset value = xxxxxxxx Bit Name 7:0 adc[7:0] Function Internal 8 bit ADC Output Value. Rev 0.9 21 AN440 Register 12h. Temperature Sensor Calibration Bit D7 D6 D5 D4 D3 D2 D1 Name tsrange[1:0] entsoffs entstrim tstrim[3:0] Type R/W R/W R/W R/W D0 Reset value = 00100000 Bit Name Function 7:6 tsrange[1:0] 5 entsoffs Temperature Sensor Offset to Convert from K to ºC. Default is 1. Test mode only, to use set tsrange and entsoffs to 0. 4 entstrim Temperature Sensor Trim Enable. 3:0 tstrim[3:0] Temperature Sensor Range Selection. (FS range is 0–1024 mV) 00: –64 to 64 C (full operating range), with 0.5 C resolution (1 LSB in the 8-bit ADC) 01: –64 to 192 C, with 1 C resolution (1 LSB in the 8-bit ADC) 11: 0 to128 C, with 0.5 C resolution (1 LSB in the 8-bit ADC) 10: –40 to 216 F, with 1 F resolution (1 LSB in the 8-bit ADC) Temperature Sensor Trim Value. Register 13h. Temperature Value Offset Bit D7 D6 D5 D4 D3 Name tvoffs[7:0] Type R/W D2 D1 Reset value = 00000000 22 Bit Name 7:0 tvoffs[7:0] Function Temperature Value Offset. This value is added to the measured temperature value. (MSB, tvoffs[8]: sign bit). Rev 0.9 D0 A N 440 Note: If a new configuration is needed (e.g., for the WUT or the LDC), proper functionality is required. The function must first be disabled, then the settings changed, then enabled back on. Register 14h. Wake-Up Timer Period 1 Bit Name D7 Type R/W D6 D5 D4 D3 D2 D1 D0 wtr[4:0] R/W R/W R/W Reset value = xxx00011 Bit Name 7:5 Reserved 4:0 wtr[4:0] Function Wake Up Timer Exponent (R) Value*. Maximum value for R is decimal 20. A value greater than 20 will yield a result as if 20 were written. R Value = 0 can be written here. *Note: The period of the wake-up timer can be calculated as TWUT = (4 x M x 2R)/32.768 ms. R = 0 is allowed, and the maximum value for R is decimal 20. A value greater than 20 will result in the same as if 20 was written. Register 15h. Wake-Up Timer Period 2 Bit Name D7 D6 D5 D4 D3 D2 D1 D0 D1 D0 wtm[15:8] Type R/W Reset value = 00000000 Bit 7:0 Name wtm[15:8] Function Wake Up Timer Mantissa (M) Value*. *Note: The period of the wake-up timer can be calculated as TWUT = (4 x M x 2R)/32.768 ms. Register 16h. Wake-Up Timer Period 3 Bit D7 D6 D5 D4 D3 Name wtm[7:0] Type R/W D2 Reset value = 00000001 Bit Name 7:0 wtm[7:0] Function Wake Up Timer Mantissa (M) Value*. M[7:0] = 0 is not valid here. Write at least decimal 1. *Note: The period of the wake-up timer can be calculated as TWUT = (4 x M x 2R)/32.768 ms. Rev 0.9 23 AN440 Register 17h. Wake-Up Timer Value 1 Bit D7 D6 D5 D4 D3 Name wtv[15:8] Type R D2 D1 D0 Reset value = xxxxxxxx Bit Name 7:0 wtv[15:8] Function Wake Up Timer Current Mantissa (M) Value. The value in wtv[15:0] reflects the current count value of the timer. Register 18h. Wake-Up Timer Value 2 Bit D7 D6 D5 D4 D3 Name wtv[7:0] Type R D2 D1 D0 Reset value = xxxxxxxx Bit Name Function 7:0 wtv[7:0] Wake Up Timer Current Mantissa (M) Value. The value in wtv[15:0] reflects the current value of the timer. Register 19h. Low-Duty Cycle Mode Duration Bit D7 D6 D5 D4 D3 Name ldc[7:0] Type R/W D2 D1 D0 Reset value = 00000001 Bit Name 7:0 ldc[7:0] Function Low-Duty Cycle Mode Duration (LDC)*. If enabled, the LDC will start together when the WUT is supposed to start, and the duration of the LDC is specified by the address 19h and the equation that goes with it. In order for the LDC to work, the LDC value has to be smaller than the M value specified in registers 15h and 16h. LDC = 0 is not allowed here. Write at least decimal 1. *Note: The period of the low-duty cycle ON time can be calculated as TLDC_ON = (4 x LDC x 2R)/32.768 ms. R is the same as in the wake-up timer setting in "Register 14h. Wake-Up Timer Period 1". The LDC works in conjunction with the WUT. The LDC period must be specified to be smaller than the WUT period. (i.e., the LDC register must be smaller than the M register). The LDC may not be programmed to 0. 24 Rev 0.9 A N 440 Register 1Ah. Low Battery Detector Threshold Bit D7 D6 D5 D4 D3 Name Type D2 D1 D0 lbdt[4:0] R R R R/W Reset value = xxx10100 Bit Name 7:5 Reserved 4:0 lbdt[4:0] Function Low Battery Detector Threshold. This threshold is compared to Battery Voltage Level. If the Battery Voltage is less than the threshold the Low Battery Interrupt is set. Default = 2.7 V.* *Note: The threshold can be calculated as Vthreshold = 1.7 + lbdt x 50 mV. Register 1Bh. Battery Voltage Level Bit D7 D6 D5 D4 D3 Name Type D2 D1 D0 vbat[4:0] R R R R Reset value = xxxxxxxx Bit Name 7:5 Reserved 4:0 vbat[4:0] Function Battery Voltage Level. The battery voltage is converted by a 5 bit ADC if the LBD bit D6 of Reg 07h is also set. In Sleep Mode the register is updated in every 1 s. In other states it measures continuously. The measured voltage is calculated by the following formula: Vbat_meas=1.7V + vbat[4:0] x 50 mV Rev 0.9 25 AN440 Register 1Ch. IF Filter Bandwidth Bit D7 Name dwn3_bypass Type R/W D6 D5 D4 D3 D2 D1 ndec_exp[2:0] filset[3:0] R/W R/W D0 Reset value = 00000001 Bit 7 Name Function dwn3_bypass Bypass Decimate-by-3 Stage. If set, results in bypassing a decimate-by-3 stage in the path of the oversampled data path for the digital filter for the IF bandwidth. 6:4 3:0 ndec_exp[2:0] IF Filter Decimation Rates. The oversampled data in the receive data path is decimated by a factor of 2^ndec_exp. A higher decimation factor (i.e., larger value of ndec_exp) results in a lower IF filter bandwidth. filset[3:0] IF Filter Coefficient Sets. Selects one of 15 pre-calculated sets of digital FIR filter tap coefficients. Along with the decimation ratios selected by dwn3_bypass and ndec_exp, the filter coefficients determine the bandwidth of the IF filter. For a required IF filter bandwidth, the recommended values of the three filter parameters (ndec_exp, dwn3_bypass, and filset) may be found from the table below. If the desired filter bandwidth is not exactly available, the next higher available bandwidth should be selected. Not all possible permutations of filter parameters are listed in the table below. Those permutations not shown have similar bandwidths to entries listed here, but have different performance with regard to clock jitter and/or selectivity. Contact Silicon Labs Technical Support for assistance in using alternate filter settings. BW [kHz] ndec_exp dwn3_bypass 2.6 5 0 2.8 5 0 3.1 5 0 3.2 5 0 3.7 5 0 4.2 5 0 4.5 5 0 4.9 4 0 5.4 4 0 5.9 4 0 6.1 4 0 7.2 4 0 8.2 4 0 8.8 4 0 9.5 3 0 10.6 3 0 11.5 3 0 12.1 3 0 14.2 3 0 16.2 3 0 26 filset 1 2 3 4 5 6 7 1 2 3 4 5 6 7 1 2 3 4 5 6 BW [kHz] ndec_exp dwn3_bypass 41.7 1 0 45.2 1 0 47.9 1 0 56.2 1 0 64.1 1 0 69.2 1 0 75.2 0 0 83.2 0 0 90.0 0 0 95.3 0 0 112.1 0 0 127.9 0 0 137.9 0 0 142.8 1 1 167.8 1 1 181.1 1 1 191.5 0 1 225.1 0 1 248.8 0 1 269.3 0 1 Rev 0.9 filset 2 3 4 5 6 7 1 2 3 4 5 6 7 4 5 9 15 1 2 3 A N 440 BW [kHz] ndec_exp dwn3_bypass 17.5 3 0 18.9 2 0 21.0 2 0 22.7 2 0 24.0 2 0 28.2 2 0 32.2 2 0 34.7 2 0 37.7 1 0 filset 7 1 2 3 4 5 6 7 1 BW [kHz] ndec_exp dwn3_bypass 284.9 0 1 335.5 0 1 361.8 0 1 420.2 0 1 468.4 0 1 518.8 0 1 577.0 0 1 620.7 0 1 filset 4 8 9 10 11 12 13 14 Register 1Dh. AFC Loop Gearshift Override Bit D7 D6 D5 D4 D3 Name afcbd enafc afcgearh[2:0] Type R/W R/W R/W D2 D1 D0 1p5bypass matap ph0size R/W R/W Reset value = 01000100 Bit Name Function 7 afcbd AFC Wideband Enable (active high). If set, the IF filter bandwidth is reduced after preamble detection, in order to optimize RX sensitivity. The IF filter bandwidth used during preamble detection is programmed by the FILSET, NDEC, and DWN3BYPASS parameters in SPI Register 1CH. After preamble detection, the chip automatically selects the next lower IF filter bandwidth by internally decreasing the FILSET parameter by 1. The resulting filter bandwidth may be determined from the bandwidth table provided under the description for SPI Register 1CH. 6 enafc AFC Enable. 5:3 afcgearh[2:0] AFC High Gear Setting. Feedback loop gain during AFC setting process is proportional to 2^(–afcgearh[2:0]). 2 1p5bypass If high (1), select 0dB bias for the second phase antenna selection, if low (0), select 1.5 dB. The default is (1), selecting 0 dB. 1 matap Number of taps for moving average filter during Antenna Diversity RSSI evaluation. Allows for reduced noise variation on measured RSSI value but with slower update rate. If high (1), filter tap length = 8*Tb. If low (0=default), filter tap length = 8*Tb prior to first PREAMBLE_VALID, and 4*Tb thereafter. 0 ph0size If low, we will reset the Preamble detector if there are 5 consecutive zero phases. If high, the reset will happen after 3 consecutive zero phases. Rev 0.9 27 AN440 Register 1Eh. AFC Timing Control Bit D7 D6 D5 D4 D3 D2 D1 Name swant_timer[1:0] shwait[2:0] anwait[2:0] Type R/W R/W R/W D0 Reset value = xx001010 Bit Name Function 7:6 swant_timer[1:0] swant_timer=additional number of bit periods to wait for RSSI value to stabilize during Antenna Diversity 2nd phase antenna evaluation. If matap=0, total wait time=8 x Tb+swant_timer[1:0]. If matap=1, total wait time=12*Tb+swant_timer{1:0]. Effective only during Antenna Diversity. 5:3 shwait[2:0] shwait[2:0]=short wait periods after AFC correction used before preamble is detected. Short wait=(RegValue+1) x 2Tb. If set to 0 then no AFC correction will occur before preamble detect, i.e., AFC will be disabled. 2:0 anwait[2:0] anwait[2:0]= Antenna switching wait time. Number of bit periods between toggling selection of antennas in AntDiv mode, prior to reception of first PREAMBLE_VALID. Number of bit periods = ( anwait[2:0] + 2 ) x 4 +3 (when AFC = enabled) Number of bit periods = ( anwait[2:0] + 2 ) x 2 +3 (when AFC = disabled) Default value = 3'b010 = 19 bit periods (AFC = enabled). Register 1Fh. Clock Recovery Gearshift Override Bit D7 D6 Name Type R/W R/W D5 D4 D3 D2 D1 crfast[2:0] crslow[2:0] R/W R/W D0 Reset value = 00000011 Bit Name Function 7:6 Reserved 5:3 crfast[2:0] Clock Recovery Fast Gearshift Value. 2:0 crslow[2:0] Clock Recovery Slow Gearshift Value. The gear-shift register controls BCR loop gain. Before the preamble is detected, BCR loop gain is as follows: Once the preamble is detected, internal state machine automatically shift BCR loop gain to the following: crfast = 3’b000 and crslow = 3’b101 are recommended for most applications. The value of “crslow” should be greater than “crfast”. 28 Rev 0.9 A N 440 Register 20h. Clock Recovery Oversampling Rate Bit D7 D6 D5 D4 D3 Name rxosr[7:0] Type R/W D2 D1 D0 Reset value = 01100100 Bit Name 7:0 rxosr[7:0] Function Oversampling Rate. 3 LSBs are the fraction, default = 0110 0100 = 12.5 clock cycles per data bit The oversampling rate can be calculated as rxosr = 500 kHz/(2ndec_exp x RX_DR). The ndec_exp and the dwn3_bypass values found at Address: 1Ch–IF Filter Bandwidth register together with the receive data rate (Rb) are the parameters needed to calculate rxosr: The Rb unit used in this equation is in kbps. The enmanch is the Manchester Coding parameter (see Reg. 70h, enmach is 1 when Manchester coding is enabled, enmanch is 0 when disabled). The number found in the equation should be rounded to an integer. The integer can be translated to a hexadecimal. For optimal modem performance it is recommended to set the rxosr to at least 8. A higher rxosr can be obtained by choosing a lower value for ndec_exp or enable dwn3_bypass. A correction in filset might be needed to correct the channel select bandwidth to the desired value. Note that when ndec_exp or dwn3_bypass are changed the related parameters (rxosr, ncoff and crgain) need to be updated. Rev 0.9 29 AN440 Register 21h. Clock Recovery Offset 2 Bit D7 D6 D5 D4 D3 D2 D1 Name rxosr[10:8] skip2phth ncoff[19:16] Type R/W R/W R/W D0 Reset value = 00000001 Bit Name Function 7:5 rxosr[10:8] Oversampling Rate. Upper bits. 4 skip2phth Skip 2nd Phase Ant Div Threshold. Threshold for skipping the 2nd phase of RSSI detection during antenna diversity algorithm. 0=16 dB (default), 1=11 dB. NOT RECOMMENDED FOR USER CONFIGURATION. 3:0 ncoff[19:16] NCO Offset. See formula above. The offset can be calculated as follows: The default values for register 20h to 23h gives 40 kbps RX_DR with Manchester coding is disabled. Register 22h. Clock Recovery Offset 1 Bit D7 D6 D5 D4 D3 Name ncoff[15:8] Type R/W Reset value = 01000111 30 Bit Name 7:0 ncoff[15:8] Function NCO Offset. See formula above. Rev 0.9 D2 D1 D0 A N 440 Register 23h. Clock Recovery Offset 0 Bit D7 D6 D5 D4 D3 Name ncoff[7:0] Type R/W D2 D1 D0 D2 D1 D0 Reset value = 10101110 Bit Name 7:0 ncoff[7:0] Function NCO Offset. See formula above Register 24h. Clock Recovery Timing Loop Gain 1 Bit D7 D6 D5 Name Type R/W R/W R/W D4 D3 rxncocomp cgainx2 crgain[10:8] R/W R/W R/W Reset value = 00000010 Bit Name 7:5 Reserved 4 rxncocomp 3 cgainx2 2:0 crgain[10:8] Function Receive Compensation Enable for High Data Rate Offset. Multiplying the CR Gain by 2. Clock Recovery Timing Loop Gain. The loop gain can be calculated as follows: 16 1 + enmanch Rbcrgain = 2 + 2 ----------------------------------------------------------------------rxosr Fd Register 25h. Clock Recovery Timing Loop Gain 0 Bit D7 D6 D5 D4 D3 Name crgain[7:0] Type R/W D2 D1 D0 Reset value = 10001111 Bit Name 7:0 crgain[7:0] Function Clock Recovery Timing Loop Gain. Rev 0.9 31 AN440 Register 26h. Received Signal Strength Indicator Bit D7 D6 D5 D4 D3 Name rssi[7:0] Type R D2 D1 D0 D2 D1 D0 D1 D0 Reset value = xxxxxxxx Bit Name 7:0 rssi[7:0] Function Received Signal Strength Indicator Value. Register 27h. RSSI Threshold for Clear Channel Indicator Bit D7 D6 D5 D4 D3 Name rssith[7:0] Type R/W Reset value = 00011110 Bit Name 7:0 rssith[7:0] Function RSSI Threshold. Interrupt is set if the RSSI value is above this threshold. Register 28h. Antenna Diversity 1 Bit D7 D6 D5 D4 D3 Name adrssi[7:0] Type R Reset value = xxxxxxxx 32 Bit Name 7:0 adrssi[7:0] Function Measured RSSI Value on Antenna 1. Rev 0.9 D2 A N 440 Register 29h. Antenna Diversity 2 Bit D7 D6 D5 D4 D3 Name adrssi2[7:0] Type R D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = xxxxxxxx Bit Name 7:0 adrssi2[7:0] Function Measured RSSI Value on Antenna 2. Register 2Ah. AFC Limiter Bit D7 D6 D5 D4 D3 Name Afclim[7:0] Type R/W Reset value = 00000000 Bit Name 7:0 Afclim[7:0] Function AFC Limiter. AFC limiter value. Register 2Bh. AFC Correction (MSBs) Bit D7 D6 D5 D4 D3 Name afc_corr[9:2] Type R Reset value = xxxxxxxx Bit Name Function 7:0 afc_corr[9:2] AFC Correction Values. AFC loop correction values [9:2] (MSBs only). Values are updated once, after sync word is found during receiving. See also address 2Ch. Rev 0.9 33 AN440 Register 2Ch. OOK Counter Value 1 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name afc_corr[1:0] ookfrzen peakdeten madeten ookcnt[10] ookcnt[9] ookcnt[8] Type R R/W R/W R/W R/W R/W R/W Reset value = 00011000 34 Bit Name Function 7:6 afc_corr[1:0] 5 ookfrzen OOK Freeze. ookfrzen= when ‘0’ (default), AGC and OOK Moving Average Detector threshold operate continuously. When ‘1’, AGC and OOK MA Detector threshold operate until PREAMBLE_VALID signal is detected; values are frozen thereafter. Recommended for use with non-Manchestered payload data. 4 peakdeten Peak Detector Enable. peakdeten= when ‘1’ (default), Peak Detector for OOK Modem is enabled. Provides improved performance in presence of co-channel interferers, at slight reduction of sensitivity. Peak Detector output is logically AND’ed with Moving Average Detector output. 3 madeten MA_Enable. madeten= when ‘1’ (default), Moving Average Detector for OOK Modem is enabled. Provides best sensitivity, but requires DC-balanced data (e.g., Manchester data) and is more sensitive to co-channel interference. Peak Detector output is logically AND’ed with Moving Average Detector output. 2:0 ookcnt[10:8] AFC Correction Values. AFC loop correction values [1:0] (LSBs). Values are updated once, after sync word is found during receiving. See also address 2Bh. OOK Counter [10:8]. OOK counter [10:8] =OOK counter Value MSBs. This counter value will affect the OOK AGC’s decay time. Rev 0.9 A N 440 Register 2Dh. OOK Counter Value 2 Bit D7 D6 D5 D4 D3 Name ookcnt[7:0] Type R/W D2 D1 D0 Reset value = 10111100 Bit Name 7:0 ookcnt[7:0] Function OOK Counter [7:0]. OOK counter value LSBs. This counter value will affect the OOK AGC’s decay time. For the following registers (addresses 2Ch and 2Dh), use the following equation: where Rb's unit is in kHz and “enmanch” is the Manchester Enable bit (found at address 71h bit [1]). Therefore, the minimal data rate that this register can support without Manchester is 0.366 kbps. Register 2Eh. Slicer Peak Holder Bit D7 Name Type R/W D6 D5 D4 D3 D2 D1 attack[2:0] decay[3:0] R/W R/W D0 Reset value = 00101100 Bit Name Function 7 Reserved 6:4 attack[2:0] Attack. attack [2:0}=OOK Peak Detector attack time. Peak detector value charges up at rate proportional to 2^(-attack[2:0]). OOK slicing threshold is set 6 dB below peak detector value. Effective only when OOK Peak Detector is enabled. 3:0 decay[3:0] Decay. decay[3:0]=OOK Peak Detector decay time. Peak detector value discharges at rate proportional to 2^(-decay[3:0]). OOK slicing threshold is set 6 dB below peak detector value. Effective only when OOK Peak Detector is enabled. Rev 0.9 35 AN440 Register 30h. Data Access Control Bit D7 D6 D5 D4 D3 D2 D1 D0 Name enpacrx lsbfrst crcdonly skip2ph enpactx encrc crc[1:0] Type R/W R/W R/W R/W R/W R/W R/W Reset value = 10001101 36 Bit Name Function 7 enpacrx 6 lsbfrst 5 crcdonly CRC Data Only Enable. When this bit is set to 1 the CRC is calculated on and checked against the packet data fields only. 4 skip2ph 3 enpactx 2 encrc 1:0 crc[1:0] Skip 2nd Phase of Preamble Detection. If set, we skip the second phase of the preamble detection (under certain conditions) if antenna diversity is enabled. Enable Packet TX Handling. If FIFO Mode (dtmod = 10) is being used automatic packet handling may be enabled. Setting enpactx = 1 will enable automatic packet handling in the TX path. Register 30–4D allow for various configurations of the packet structure. Setting enpactx = 0 will not do any packet handling in the TX path. It will only transmit what is loaded to the FIFO. CRC Enable. Cyclic Redundancy Check generation is enabled if this bit is set. CRC Polynomial Selection. 00: CCITT 01: CRC-16 (IBM) 10: IEC-16 11: Biacheva Enable Packet RX Handling. If FIFO Mode (dtmod = 10) is being used automatic packet handling may be enabled. Setting enpacrx = 1 will enable automatic packet handling in the RX path. Register 30–4D allow for various configurations of the packet structure. Setting enpacrx = 0 will not do any packet handling in the RX path. It will only receive everything after the sync word and fill up the RX FIFO. LSB First Enable. The LSB of the data will be transmitted/received first if this bit is set. Rev 0.9 A N 440 Register 31h. EZMAC® Status Bit D7 Name Type R D6 D5 D4 D3 D2 D1 D0 rxcrc1 pksrch pkrx pkvalid crcerror pktx pksent R R R R R R R Reset value = 00000000 Bit Name 7 Reserved 6 rxcrc1 5 pksrch 4 pkrx 3 pkvalid 2 crcerror 1 pktx 0 pksent Function If high, it indicates the last CRC received is all ones. May indicated Transmitter underflow in case of CRC error. Packet Searching. When pksrch = 1 the radio is searching for a valid packet. Packet Receiving. When pkrx = 1 the radio is currently receiving a valid packet. Valid Packet Received. When a pkvalid = 1 a valid packet has been received by the receiver. (Same bit as in register 03, but reading it does not reset the IRQ) CRC Error. When crcerror = 1 a Cyclic Redundancy Check error has been detected. (Same bit as in register 03, but reading it does not reset the IRQ) Packet Transmitting. When pktx = 1 the radio is currently transmitting a packet. Packet Sent. A pksent = 1 a packet has been sent by the radio. (Same bit as in register 03, but reading it does not reset the IRQ) Rev 0.9 37 AN440 Register 32h. Header Control 1 Bit D7 D6 D5 D4 D3 D2 D1 Name bcen[3:0] hdch[3:0] Type R/W R/W D0 Reset value = 00001100 38 Bit Name Function 7:4 bcen[3:0] Broadcast Address (FFh) Check Enable. If it is enabled together with Header Byte Check then the header check is OK if the incoming header byte equals with the appropriate check byte or FFh). One hot encoding. 0000: No broadcast address enable. 0001: Broadcast address enable for header byte 0. 0010: Broadcast address enable for header byte 1. 0011: Broadcast address enable for header bytes 0 & 1. 0100: … 3:0 hdch[3:0] Received Header Bytes to be Checked Against the Check Header Bytes. One hot encoding. The receiver will use hdch[2:0] to know the position of the Header Bytes. 0000: No Received Header check 0001: Received Header check for byte 0. 0010: Received Header check for bytes 1. 0011: Received header check for bytes 0 & 1. 0100: … Rev 0.9 A N 440 Register 33h. Header Control 2 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name skipsyn hdlen[2:0] fixpklen synclen[1:0] prealen[8] Type R/W R/W R/W R/W R/W Reset value = 00100010 Bit Name Function 7 skipsyn Skipsyn. Skip Sync Word search timeout. If high, the system will ignore the search timeout period when failing to find Sync Word and will not return to searching for Preamble. Setting this bit does not eliminate the search for Sync Word. Proper detection of Sync Word remains necessary in FIFO mode in order to determine the start of the Payload field and to thus store the correct bytes in the RX FIFO. 6:4 hdlen[2:0] Header Length. Transmit/Receive Header Length. Length of header used if packet handler is enabled for TX/RX (enpactx/rx). Headers are transmitted/received in descending order. 000: No TX/RX header 001: Header 3 010: Header 3 and 2 011: Header 3 and 2 and 1 100: Header 3 and 2 and 1 and 0 3 fixpklen Fix Transmit/Receive Packet Length. When fixpklen = 1 the packet length (pklen[7:0]) is not included in the transmit header. When fixpklen = 0 the packet length is included in the transmit header. In receive mode, if this bit is set the packet length is obtained from the pklen[7:0] field in Reg 3Eh; otherwise the packet length is obtained from the received header packet length byte. 2:1 synclen[1:0] Synchronization Word Length. The value in this register corresponds to the number of bytes used in the Synchronization Word. The synchronization word bytes are transmitted in descending order. 00: Synchronization Word 3 01: Synchronization Word 3 and 2 10: Synchronization Word 3 and 2 and 1 11: Synchronization Word 3 and 2 and 1 and 0 0 prealen[8] MSB of Preamble Length. See register Preamble Length. Rev 0.9 39 AN440 Register 34h. Preamble Length Bit D7 D6 D5 D4 D3 Name prealen[7:0] Type R/W D2 D1 D0 Reset value = 00001000 Bit Name Function 7:0 prealen[7:0] Preamble Length. The value in the prealen[8:0] register corresponds to the number of nibbles (4 bits) in the packet. For example prealen[8:0] = ‘000001000’ corresponds to a preamble length of 32 bits (8 x 4bits) or 4 bytes. The maximum preamble length is prealen[8:0] = 111111111 which corresponds to a 255 bytes Preamble. Writing 0 will have the same result as if writing 1, which corresponds to one single nibble of preamble. Register 35h. Preamble Detection Control 1 Bit D7 D6 D5 D4 D3 D2 D1 Name preath[4:0] rssi_offset[2:0] Type R/W R/W D0 Reset value = 00101010 Bit Name Function 7:3 preath[4:0] Preamble Detection Threshold. The value in the preath[4:0] register corresponds to the number of nibbles (4 bits) of preamble pattern (i.e., 01010...) that must be received correctly, before a PREAMBLE_VALID signal is issued. This threshold helps guard against false preamble detection upon noise. 2:0 40 rssi_offset[2:0] rssi_offset[2:0] Value added as offset to RSSI calculation. Every increment in this register results in an increment of +4 dB in the RSSI. Rev 0.9 A N 440 Register 36h. Synchronization Word 3 Bit D7 D6 D5 D4 D3 Name sync[31:24] Type R/W D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 00101101 Bit Name 7:0 sync[31:24] Function Synchronization Word 3. 4th byte of the synchronization word. Register 37h. Synchronization Word 2 Bit D7 D6 D5 D4 D3 Name sync[23:16] Type R/W Reset value = 11010100 Bit Name 7:0 sync[23:16] Function Synchronization Word 2. 3rd byte of the synchronization word. Register 38h. Synchronization Word 1 Bit D7 D6 D5 D4 D3 Name sync[15:8] Type R/W Reset value = 00000000 Bit Name 7:0 sync[15:8] Function Synchronization Word 1. 2nd byte of the synchronization word. Rev 0.9 41 AN440 Register 39h. Synchronization Word 0 Bit D7 D6 D5 D4 D3 Name sync[7:0] Type R/W D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 00000000 Bit Name 7:0 sync[7:0] Function Synchronization Word 0. 1st byte of the synchronization word. Register 3Ah. Transmit Header 3 Bit D7 D6 D5 D4 D3 Name txhd[31:24] Type R/W Reset value = 00000000 Bit Name 7:0 txhd[31:24] Function Transmit Header 3. 4th byte of the header to be transmitted. Register 3Bh. Transmit Header 2 Bit D7 D6 D5 D4 D3 Name txhd[23:16] Type R/W Reset value = 00000000 42 Bit Name 7:0 txhd[23:16] Function Transmit Header 2. 3rd byte of the header to be transmitted. Rev 0.9 A N 440 Register 3Ch. Transmit Header 1 Bit D7 D6 D5 D4 D3 Name txhd[15:8] Type R/W D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 00000000 Bit Name 7:0 txhd[15:8] Function Transmit Header 1. 2nd byte of the header to be transmitted. Register 3Dh. Transmit Header 0 Bit D7 D6 D5 D4 D3 Name txhd[7:0] Type R/W Reset value = 00000000 Bit Name 7:0 txhd[7:0] Function Transmit Header 0. 1st byte of the header to be transmitted. Register 3Eh. Packet Length Bit D7 D6 D5 D4 D3 Name pklen[7:0] Type R/W Reset value = 00000000 Bit Name Function 7:0 pklen[7:0] Packet Length. The value in the pklen[7:0] register corresponds directly to the number of bytes in the Packet. For example pklen[7:0] = ‘00001000’ corresponds to a packet length of 8 bytes. The maximum packet length is pklen[7:0] = ‘11111111’, a 255 byte packet. Writing 0 is possible, in this case we do not send any data in the packet. During RX, if fixpklen = 1, this will specify also the Packet Length for RX mode. Rev 0.9 43 AN440 Check Header bytes 3 to 0 are checked against the corresponding bytes in the Received Header if the check is enabled in “Register 31h. EZMAC® Status,” on page 37. Register 3Fh. Check Header 3 Bit D7 D6 D5 D4 D3 Name chhd[31:24] Type R/W D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 00000000 Bit Name 7:0 chhd[31:24] Function Check Header 3. 4th byte of the check header. Register 40h. Check Header 2 Bit D7 D6 D5 D4 D3 Name chhd[23:16] Type R/W Reset value = 00000000 Bit Name 7:0 chhd[23:16] Function Check Header 2. 3rd byte of the check header. Register 41h. Check Header 1 Bit D7 D6 D5 D4 D3 Name chhd[15:8] Type R/W Reset value = 00000000 44 Bit Name 7:0 chhd[15:8] Function Check Header 1. 2nd byte of the check header. Rev 0.9 A N 440 Register 42h. Check Header 0 Bit D7 D6 D5 D4 D3 Name chhd[7:0] Type R/W D2 D1 D0 Reset value = 00000000 Bit Name 7:0 chhd[7:0] Function Check Header 0. 1st byte of the check header. Header Enable bytes 3 to 0 control which bits of the Check Header bytes are checked against the corresponding bits in the Received Header. Only those bits are compared where the enable bits are set to 1. Register 43h. Header Enable 3 Bit D7 D6 D5 D4 D3 Name hden[31:24] Type R/W D2 D1 D0 D2 D1 D0 Reset value = 11111111 Bit Name 7:0 hden[31:24] Function Header Enable 3. 4th byte of the check header. Register 44h. Header Enable 2 Bit D7 D6 D5 D4 D3 Name hden[23:16] Type R/W Reset value = 11111111 Bit Name 7:0 hden[23:16] Function Header Enable 2. 3rd byte of the check header. Rev 0.9 45 AN440 Register 45h. Header Enable 1 Bit D7 D6 D5 D4 D3 Name hden[15:8] Type R/W D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 11111111 Bit Name 7:0 hden[15:8] Function Header Enable 1. 2nd byte of the check header. Register 46h. Header Enable 0 Bit D7 D6 D5 D4 D3 Name hden[7:0] Type R/W Reset value = 11111111 Bit Name 7:0 hden[7:0] Function Header Enable 0. 1st byte of the check header. Register 47h. Received Header 3 Bit D7 D6 D5 D4 D3 Name rxhd[31:24] Type R Reset value = 00000000 46 Bit Name 7:0 rxhd[31:24] Function Received Header 3. 4th byte of the received header. Rev 0.9 A N 440 Register 48h. Received Header 2 Bit D7 D6 D5 D4 D3 Name rxhd[23:16] Type R D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 00000000 Bit Name 7:0 rxhd[23:16] Function Received Header 2. 3rd byte of the received header. Register 49h. Received Header 1 Bit D7 D6 D5 D4 D3 Name rxhd[15:8] Type R Reset value = 00000000 Bit Name 7:0 rxhd[15:8] Function Received Header 1. 2nd byte of the received header. Register 4Ah. Received Header 0 Bit D7 D6 D5 D4 D3 Name rxhd[7:0] Type R Reset value = 00000000 Bit Name 7:0 rxhd[7:0] Function Received Header 0. 1st byte of the received header. Rev 0.9 47 AN440 Register 4Bh. Received Packet Length Bit D7 D6 D5 D4 D3 Name rxplen[7:0] Type R D2 D1 D0 Reset value = xxxxxxxx Bit Name 7:0 rxplen[7:0] Function Length Byte of the Received Packet during fixpklen = 0. This register specifies the number of Data bytes in the last received packet, and reflects the value of the packet length byte in the received header. This is relevant ONLY if the fixpklen bit D3 of Reg 33h is cleared. If the fixpklen bit is set, then the expected number of received Data bytes must be programmed into the pklen[7:0] field in Reg 3Eh. Register 4Fh. ADC8 Control Bit D7 D6 D5 D4 Name Type D3 D2 adc8[5:0] R/W R/W R/W Reset value = 00010000 48 Bit Name 7:6 Reserved 5:0 adc8[5:0] Function ADC8 Control Bits. Rev 0.9 D1 D0 A N 440 Register 60h. Channel Filter Coefficient Address Bit D7 D6 D5 Name invalid_preamble_threshold[3:0] Type R/W D4 D3 D2 D1 D0 R/W R/W R/W R/W Reset value = 00000000 Bit 7:4 3:0 Name Function invalid_preamInvalid Preamble Threshold. ble_threshold[3:0] invalid_preamble_threshold[3:0}=This configures (in nibbles) for how long we will search for preamble. If during this time the preamble is not detected, we will send a signal (which can be configured as interrupt) and restart looking for the preamble again. The interval between each interrupt is given by the formula below. Reserved Register 62h. Crystal Oscillator/Power-on-Reset Control Bit D7 D6 D5 D4 D3 D2 D1 D0 Name pwst[2:0] clkhyst enbias2x enamp2x bufovr enbuf Type R R/W R/W R/W R/W R/W Reset value = xxx00100 Bit Name Function 7:5 pwst[2:0] 4 clkhyst 3 enbias2x 2 Times Higher Bias Current Enable. 2 enamp2x 2 Times Higher Amplification Enable. 1 bufovr Output Buffer Enable Override. If set to 1 then the enbuf bit controls the output buffer. 0: output buffer is controlled by the state machine. 1: output buffer is controlled by the enbuf bit. 0 enbuf Output Buffer Enable. This bit is active only if the bufovr bit is set to 1. Internal Power States of the Chip. LP: 000 RDY: 001 Tune: 011 TX: 010 RX: 111 Clock Hysteresis Setting. Rev 0.9 49 AN440 Register 69h. AGC Override 1 Bit D7 Name Type R D6 D5 D4 D3 D2 D1 sgin agcen lnagain pga[3:0] R/W R/W R/W R/W D0 Reset value = 00100000 50 Bit Name Function 7 Reserved 6 sgin sgin=AGC stop increasing gain override bit (active low). When ‘0’ (default), AGC gain increases during signal reductions are prevented. When ‘1’, AGC gain increases during signal reductions are allowed. Only effective during Preamble, prior to detection of PREAMBLE_VALID signal. 5 agcen Automatic Gain Control Enable. agcen=Automatic Gain Control enable. When this bit is set then the result of the control can be read out from bits [4:0], otherwise the gain can be controlled manually by writing into bits [4:0]. 4 lnagain LNA Gain Select. Inagain=LNA Gain select. 0 – min. gain = 5 dB 1 – max. gain = 25 dB 3:0 pga[3:0] PGA Gain Override Value. 0000: 0 dB 0001: 3 dB 0010: 6 dB ... 1000: 24 dB max. Rev 0.9 A N 440 Register 6Dh. TX Power Bit D7 D6 D5 D4 D3 Name Type R R/W R/W R/W D2 D1 lna_sw txpow[2:0] R/W R/W D0 Reset value = x0011000 Bit Name 7:4 Reserved 3 lna_sw 2:0 txpow[2:0] Function LNA Switch Controller. This bit determines when internal MOS switches at the LNA input(s) are invoked. When lna_sw=0, these switches open. When lna_sw=1, these switches are closed in TX mode and open at all other times. This bit MUST be set for proper operation in any Direct Tie application. TX Output Power. The output power is configurable from +13 dBm to –8 dBm (Si4430/31), and from +20 dBM to –1 dBM (Si4432) in ~3 dB steps. txpow[2:0]=000 corresponds to min output power, while txpow[2:0]=111 corresponds to max output power. Register 6Eh. TX Data Rate 1 Bit D7 D6 D5 D4 D3 Name txdr[15:8] Type R/W D2 D1 D0 Reset value = 00001010 Bit Name 7:0 txdr[15:8] Function Data Rate Upper Byte. See formula above. The data rate can be calculated as: TX_DR = 106 x txdr[15:0]/216 [bps] (if address 70[5] = 0) or The data rate can be calculated as: TX_DR = 106 x txdr[15:0]/221 [bps] (if address 70[5] = 1) Rev 0.9 51 AN440 Register 6Fh. TX Data Rate 0 Bit D7 D6 D5 D4 D3 Name txdr[7:0] Type R/W D2 D1 D0 Reset value = 00111101 Bit Name 7:0 txdr[7:0] Function Data Rate Lower Byte. See formula above. Defaults = 40 kbps. Register 70h. Modulation Mode Control 1 Bit D7 D6 Name Type R R D5 D4 D3 D2 D1 D0 txdtrtscale enphpwdn manppol enmaninv enmanch enwhite R/W R/W R/W R/W R/W R/W Reset value = 00001100 52 Bit Name Function 7:6 Reserved 5 txdtrtscale This bit should be set for Data Rates below 30 kbps. 4 enphpwdn If set, the Packet Handler will be powered down when chip is in low power mode. 3 manppol Manchester Preamble Polarity (will transmit a series of 1 if set, or series of 0 if reset). This bit affects only the transmitter side, not the receiver. This is valid only if Manchester Mode is enabled. 2 enmaninv Manchester Data Inversion is Enabled if this bit is set. When this bit is low, a 10 pair is considered a Manchester 0, and a 01 pair as a Manchester 1. By setting this bit, do the opposite: every 10 will be considered as a 1, and every 01 will be considered as a 0. This function is relevant only if the Manchester mode is enabled. 1 enmanch Manchester Coding is Enabled if this bit is set. What Manchester coding does is to replace a single high bit (1) with two bits starting with low followed by high (01) and a low bit (0) with a high bit followed by a low bit (10). When Manchester is enabled, please configure as well the enmaninv at 70h bit [2] since it influences the Manchester encoding/decoding process. 0 enwhite Data Whitening is Enabled if this bit is set. Rev 0.9 A N 440 Register 71h. Modulation Mode Control 2 Bit D7 D6 D5 D4 D3 D2 D1 D0 Name trclk[1:0] dtmod[1:0] eninv fd[8] modtyp[1:0] Type R/W R/W R/W R/W R/W Reset value = 00000000 Bit Name Function 7:6 trclk[1:0] TX Data Clock Configuration. 00: No TX Data CLK is available (asynchronous mode – Can only work with modulations FSK or OOK). 01: TX Data CLK is available via the GPIO (one of the GPIO’s should be programmed as well). 10: TX Data CLK is available via the SDO pin. 11: TX Data CLK is available via the nIRQ pin. 5:4 dtmod[1:0] Modulation Source. 00: Direct Mode using TX_Data function via the GPIO pin (one of the GPIO’s should be programmed accordingly as well) 01: Direct Mode using TX_Data function via the SDI pin (only when nSEL is high) 10: FIFO Mode 11: PN9 (internally generated) 3 eninv Invert TX and RX Data. 2 fd[8] MSB of Frequency Deviation Setting, see "Register 72h. Frequency Deviation". 1:0 modtyp[1:0] Modulation Type. 00: Unmodulated carrier 01: OOK 10: FSK 11: GFSK (enable TX Data CLK (trclk[1:0]) when direct mode is used) Rev 0.9 53 AN440 The frequency deviation can be calculated: Fd = 625 Hz x fd[8:0]. Register 72h. Frequency Deviation Bit D7 D6 D5 D4 D3 Name fd[7:0] Type R/W D2 D1 D0 Reset value = 00100000 Bit Name 7:0 fd[7:0] Function Frequency Deviation Setting. See formula above. Note: It's recommended to use modulation index of 1 or higher (maximum allowable modulation index is 32). The modulation index is defined by 2FN/FR were FD is the deviation and RB is the data rate. When Manchester coding is enabled the modulation index is defined by FD/RB. Register 73h. Frequency Offset 1 Bit D7 D6 D5 D4 D3 Name fo[7:0] Type R/W D2 D1 D0 Reset value = 00000000 54 Bit Name 7:0 fo[7:0] Function Frequency Offset Setting. The frequency offset can be calculated as Offset = 156.25 Hz x (hbsel + 1) x fo[7:0]. fo[9:0] is a twos complement value. Rev 0.9 A N 440 Register 74h. Frequency Offset 2 Bit D7 D6 D5 D4 D3 D2 D1 Name Type D0 fo[9:8] R R R R R R R/W Reset value = 00000000 Bit Name 7:2 Reserved 1:0 fo[9:8] Function Upper Bits of the Frequency Offset Setting. fo[9] is the sign bit. The frequency offset can be calculated as Offset = 156.25 Hz x (hbsel + 1) x fo[7:0]. fo[9:0] is a twos complement value. Register 75h. Frequency Band Select Bit D7 Name Type R D6 D5 D4 D3 D2 sbsel hbsel fb[4:0] R/W R/W R/W D1 D0 Reset value = 01110101 Bit Name Function 7 Reserved 6 sbsel Side Band Select. Setting sbsel = 1 (recommended setting) will result in tuning the RX LO below the desired channel frequency in RX mode (low-side injection) such that the high-side sideband is selected. Note that setting sbsel = 0 will result in positioning the RX LO above the desired tuned frequency (high-side injection), but will NOT additionally flip the processing of the complex (I + jQ) signals in the IF chain necessary to select the lower sideband as the desired signal. 5 hbsel High Band Select. Setting hbsel = 1 will choose the frequency range from 480–960 MHz (high bands). Setting hbsel = 0 will choose the frequency range from 240–479.9 MHz (low bands). 4:0 fb[4:0] Frequency Band Select. Every increment corresponds to a 10 MHz increase in frequency (when hbsel=0) or a 20 MHz increase in frequency (when hbsel=1). Example: Setting fb[4:0]=00000 will result inn tuning within the 240-250 MHz frequency range (for hbsel=0) or within the 480-500 MHz frequency range (for hbsel=1). Setting fb[4:0]=00001 will result in tuning within the 250-260 MHz frequency range (hbsel=0) or 500-520 MHz range (hbsel=1), and so on. The RF carrier frequency can be calculated as follows: fcarrier = (fb+24+(fc+fo)/64000) x 10000 x (hbsel+1) + (fhch x fhs x 10) [kHz], Rev 0.9 55 AN440 where parameters fc, fo, fb and hb_sel come from registers 73h–77h. Parameters fhch and fhs come from register 79h and 7Ah. Register 76h. Nominal Carrier Frequency Bit D7 D6 D5 D4 D3 Name fc[15:8] Type R/W D2 D1 D0 D2 D1 D0 D2 D1 D0 Reset value = 10111011 Bit Name 7:0 fc[15:8] Function Nominal Carrier Frequency Setting. See formula above. Register 77h. Nominal Carrier Frequency Bit D7 D6 D5 D4 D3 Name fc[7:0] Type R/W Reset value = 10000000 Bit Name 7:0 fc[7:0] Function Nominal Carrier Frequency Setting. See formula above. Register 79h. Frequency Hopping Channel Select Bit D7 D6 D5 D4 D3 Name fhch[7:0] Type R/W Reset value = 00000000 56 Bit Name 7:0 fhch[7:0] Function Frequency Hopping Channel Number. Rev 0.9 A N 440 Register 7Ah. Frequency Hopping Step Size Bit D7 D6 D5 D4 D3 Name fhs[7:0] Type R/W D2 D1 D0 Reset value = 00000000 Bit Name 7:0 fhs[7:0] Function Frequency Hopping Step Size in 10 kHz Increments. See formula for the nominal carrier frequency at "Register 76h. Nominal Carrier Frequency". Important: The EZHop method of frequency programming only works while remaining entirely within one of the following defined frequency sub-bands: 240-320 MHz, 320-480 MHz, 480-640 MHz, and 640-960 MHz. It is not allowed to define a base frequency that falls in one sub-band while the selected channel number falls in another sub-band. Register 7Ch. TX FIFO Control 1 Bit D7 D6 D5 D4 Name Type D3 D2 D1 D0 txafthr[5:0] R/W R/W R/W Reset value = 00110111 Bit Name 7:6 Reserved 5:0 txafthr[5:0] Function TX FIFO Almost Full Threshold. This register specifies the threshold value at which the TXFFAFULL status bit/interrupt will be generated, as data bytes are stored into the TX FIFO for later transmission. This value should be programmed to 1 byte less than the desired threshold value. Example: A value of 0x3C=60d will not generate an interrupt if 60 bytes (or less) are written to the TX FIFO, but will generate an interrupt when 61 bytes (or more) are written to the TX FIFO. Rev 0.9 57 AN440 Register 7Dh. TX FIFO Control 2 Bit D7 D6 D5 D4 D3 Name D2 D1 D0 txfaethr[5:0] Type R/W R/W Reset value = 00000100 Bit Name 7:6 Reserved 5:0 txfaethr[5:0] R/W Function TX FIFO Almost Empty Threshold. This register specifies the threshold value at which the TXFFAEM status bit/interrupt will be generated, as data bytes are pulled from the TX FIFO and transmitted. This value should be programmed to 1 byte less than the desired threshold value. Example: A value of 0x05 will generate an interrupt when 6 bytes remain in the TX FIFO. Register 7Eh. RX FIFO Control Bit D7 D6 D5 D4 D3 Name D2 D1 D0 rxafthr[5:0] Type R/W R/W Reset value = 00110111 Bit Name 7:6 Reserved 5:0 rxafthr[5:0] R/W Function RX FIFO Almost Full Threshold. This register specifies the threshold value at which the RXFFAFULL status bit/interrupt will be generated, as data bytes are received and stored into the RX FIFO for later retrieval. This value should be programmed to 1 byte less than the desired threshold value. Example: A value of 0x3C=60d will not generate an interrupt if 60 bytes (or less) are received and stored to the RX FIFO, but will generate an interrupt when 61 bytes (or more) are received and stored to the RX FIFO. Register 7Fh. FIFO Access Bit D7 Name D5 D4 D3 D2 D1 D0 fifod[7:0] Type Reset value = NA 58 D6 R/W Bit Name Function 7:0 fifod[7:0] FIFO Data. A Write (R/W = 1) to this Address will begin a Burst Write to the TX FIFO. The FIFO will be loaded in the same manner as a Burst SPI Write but the SPI address will not be incremented. To conclude the TX FIFO Write the SEL pin should be brought HIGH. A Read (R/W = 0) to this address will begin a burst read of the RX FIFO, in the same manner. Rev 0.9 A N 440 DOCUMENT CHANGE LIST Revision 0.3 to Revision 0.4 Corrected description of ”afcbd” functionality in SPI Reg 1Dh. Revision 0.4 to Revision 0.5 Added wireless MCU devices to Register 01h, Version Code. Revision 0.5 to Revision 0.6 Modified description of Reg 7Ch–7Eh to clarify exact byte value(s) at which the interrupts are triggered. Revision 0.6 to Revision 0.7 Modified description of Reg 07h to clarify that the muser must wait for CHIPRDY after issuing a SWRESET. Revision 0.7 to Revision 0.8 Clarified description of ‘sbsel’ bit in Reg 75h. Modified descriptions of Reg 1Ch to clarify interaction of filter parameters. Revision 0.8 to Revision 0.9 Clarified that the EZHop method of frequency programming must not cross VCO sub-bands. Rev 0.9 59 Simplicity Studio One-click access to MCU tools, documentation, software, source code libraries & more. Available for Windows, Mac and Linux! www.silabs.com/simplicity MCU Portfolio www.silabs.com/mcu SW/HW www.silabs.com/simplicity Quality www.silabs.com/quality Support and Community community.silabs.com Disclaimer Silicon Laboratories intends to provide customers with the latest, accurate, and in-depth documentation of all peripherals and modules available for system and software implementers using or intending to use the Silicon Laboratories products. Characterization data, available modules and peripherals, memory sizes and memory addresses refer to each specific device, and "Typical" parameters provided can and do vary in different applications. Application examples described herein are for illustrative purposes only. Silicon Laboratories reserves the right to make changes without further notice and limitation to product information, specifications, and descriptions herein, and does not give warranties as to the accuracy or completeness of the included information. Silicon Laboratories shall have no liability for the consequences of use of the information supplied herein. This document does not imply or express copyright licenses granted hereunder to design or fabricate any integrated circuits. The products must not be used within any Life Support System without the specific written consent of Silicon Laboratories. A "Life Support System" is any product or system intended to support or sustain life and/or health, which, if it fails, can be reasonably expected to result in significant personal injury or death. Silicon Laboratories products are generally not intended for military applications. Silicon Laboratories products shall under no circumstances be used in weapons of mass destruction including (but not limited to) nuclear, biological or chemical weapons, or missiles capable of delivering such weapons. Trademark Information Silicon Laboratories Inc., Silicon Laboratories, Silicon Labs, SiLabs and the Silicon Labs logo, CMEMS®, EFM, EFM32, EFR, Energy Micro, Energy Micro logo and combinations thereof, "the world’s most energy friendly microcontrollers", Ember®, EZLink®, EZMac®, EZRadio®, EZRadioPRO®, DSPLL®, ISOmodem ®, Precision32®, ProSLIC®, SiPHY®, USBXpress® and others are trademarks or registered trademarks of Silicon Laboratories Inc. ARM, CORTEX, Cortex-M3 and THUMB are trademarks or registered trademarks of ARM Holdings. Keil is a registered trademark of ARM Limited. All other products or brand names mentioned herein are trademarks of their respective holders. Silicon Laboratories Inc. 400 West Cesar Chavez Austin, TX 78701 USA http://www.silabs.com