CC2430 A True System-on-Chip solution for 2.4 GHz IEEE 802.15.4 / ZigBee™ Applications • • • • 2.4 GHz IEEE 802.15.4 systems ZigBee™ systems Home/building automation Industrial Control and Monitoring • • • • Low power wireless sensor networks PC peripherals Set-top boxes and remote controls Consumer Electronics Product Description The CC2430 comes in three different versions: CC2430-F32/64/128, with 32/64/128 KB of flash memory respectively. The CC2430 is a true System-on-Chip (SoC) solution specifically tailored for IEEE 802.15.4 and ZigBee™ applications. It enables ZigBee™ nodes to be built with very low total bill-ofmaterial costs. The CC2430 combines the excellent performance of the leading CC2420 RF transceiver with an industry-standard enhanced 8051 MCU, 32/64/128 KB flash memory, 8 KB RAM and many other powerful features. Combined with the industry leading ZigBee™ protocol stack (Z-Stack) from Figure 8 Wireless / Chipcon, the CC2430 provides the market’s most competitive ZigBee™ solution. The CC2430 is highly suited for systems where ultra low power consumption is required. This is ensured by various operating modes. Short transition times between operating modes further ensure low power consumption. This data sheet contains preliminary data, and supplementary data will be published at a later date. Chipcon reserves the right to make changes at any time without notice in order to improve design and supply the best possible product. The product is not yet fully qualified at this point. Key Features • • • • • • • • • High performance and low power 8051 microcontroller core. 2.4 GHz IEEE 802.15.4 compliant RF transceiver (industry leading CC2420 radio core). Excellent receiver sensitivity and robustness to interferers 32, 64 or 128 KB in-system programmable flash 8 KB RAM, 4 KB with data retention in all power modes Powerful DMA functionality Very few external components Only a single crystal needed for mesh network systems Low current consumption (RX: 27mA, TX: 25mA, microcontroller running at 32 MHz) • • • • • • • • • • • Only 0.9µA current consumption in power-down mode, where external interrupts or the RTC can wake up the system Less than 0.6µA current consumption in standby mode, where external interrupts can wake up the system Very fast transition times from low-power modes to active mode enables ultra low average power consumption in low duty-cycle systems CSMA/CA hardware support. Wide supply voltage range (2.0V – 3.6V) Digital RSSI / LQI support Battery monitor and temperature sensor. 8-14 bits ADC with up to eight inputs AES security coprocessor Two powerful USARTs with support for several serial protocols. Watchdog timer CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 1 of 232 CC2430 • • • • • One IEEE 802.15.4 MAC Timer, one general 16-bit timer and two 8-bit timers Hardware debug support 21 general I/O pins, two with 20mA sink/source capability Powerful and flexible development tools available RoHS compliant 7x7mm QLP48 package CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 2 of 232 CC2430 Table Of Contents 1 ABBREVIATIONS..................................................................................................................... 6 2 REFERENCES ........................................................................................................................... 8 3 REGISTER CONVENTIONS................................................................................................... 9 4 4.1 4.2 4.3 4.4 4.5 4.6 4.7 5 FEATURES (CONTINUED FROM FRONT PAGE)........................................................... 10 HIGH-PERFORMANCE AND LOW-POWER 8051-COMPATIBLE MICROCONTROLLER ................ 10 UP TO 128 KB NON-VOLATILE PROGRAM MEMORY AND 2 X 4 KB DATA MEMORY .............. 10 HARDWARE AES ENCRYPTION/DECRYPTION......................................................................... 10 PERIPHERAL FEATURES .......................................................................................................... 10 LOW POWER ........................................................................................................................... 10 802.15.4 MAC HARDWARE SUPPORT ..................................................................................... 10 INTEGRATED 2.4GHZ DSSS DIGITAL RADIO ......................................................................... 10 ABSOLUTE MAXIMUM RATINGS..................................................................................... 11 6 OPERATING CONDITIONS ................................................................................................. 11 7 7.1 7.2 7.3 7.4 7.5 7.6 7.7 7.8 7.9 7.10 7.11 7.12 7.13 7.14 7.15 7.16 8 ELECTRICAL SPECIFICATIONS ....................................................................................... 12 GENERAL CHARACTERISTICS ................................................................................................. 13 RF RECEIVE SECTION ............................................................................................................. 14 RF TRANSMIT SECTION .......................................................................................................... 15 32 MHZ CRYSTAL OSCILLATOR ............................................................................................. 16 32.768 KHZ CRYSTAL OSCILLATOR ....................................................................................... 16 LOW POWER RC OSCILLATOR ................................................................................................ 16 HIGH SPEED RC OSCILLATOR ................................................................................................ 17 FREQUENCY SYNTHESIZER CHARACTERISTICS ....................................................................... 17 ANALOG TEMPERATURE SENSOR ........................................................................................... 18 8-14 BIT ADC......................................................................................................................... 18 CONTROL AC CHARACTERISTICS ........................................................................................... 19 SPI AC CHARACTERISTICS ..................................................................................................... 20 DEBUG INTERFACE AC CHARACTERISTICS ............................................................................ 21 PORT OUTPUTS AC CHARACTERISTICS .................................................................................. 21 TIMER INPUTS AC CHARACTERISTICS .................................................................................... 22 DC CHARACTERISTICS ........................................................................................................... 22 PIN AND I/O PORT CONFIGURATION ............................................................................. 23 9 9.1 9.2 10 CIRCUIT DESCRIPTION ...................................................................................................... 25 CPU AND PERIPHERALS ......................................................................................................... 26 RADIO .................................................................................................................................... 27 POWER MANAGEMENT ...................................................................................................... 28 11 11.1 11.2 11.3 11.4 11.5 12 12.1 12.2 12.3 12.4 12.5 12.6 APPLICATION CIRCUIT ...................................................................................................... 29 INPUT / OUTPUT MATCHING .................................................................................................... 29 BIAS RESISTORS ...................................................................................................................... 29 CRYSTAL ................................................................................................................................ 29 VOLTAGE REGULATORS.......................................................................................................... 29 POWER SUPPLY DECOUPLING AND FILTERING ......................................................................... 29 8051 CPU................................................................................................................................... 32 8051 CPU INTRODUCTION ..................................................................................................... 32 RESET ..................................................................................................................................... 32 MEMORY ................................................................................................................................ 32 SFR REGISTERS ...................................................................................................................... 43 CPU REGISTERS ..................................................................................................................... 46 INSTRUCTION SET SUMMARY ................................................................................................. 48 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 3 of 232 CC2430 12.7 INTERRUPTS ........................................................................................................................... 52 12.8 OSCILLATORS AND CLOCKS .................................................................................................... 62 12.9 DEBUG INTERFACE ................................................................................................................. 62 12.10 RAM...................................................................................................................................... 66 12.11 FLASH MEMORY ..................................................................................................................... 66 12.12 MEMORY ARBITER ................................................................................................................. 66 13 PERIPHERALS........................................................................................................................ 69 13.1 I/O PORTS ............................................................................................................................... 69 13.2 DMA CONTROLLER ............................................................................................................... 86 13.3 16-BIT TIMER, TIMER1 ........................................................................................................... 98 13.4 MAC TIMER (TIMER 2) ........................................................................................................ 110 13.5 SLEEP TIMER ........................................................................................................................ 117 13.6 8-BIT TIMER 3 AND TIMER 4 ................................................................................................. 118 13.7 ADC..................................................................................................................................... 127 13.8 RANDOM NUMBER GENERATOR ........................................................................................... 133 13.9 AES COPROCESSOR.............................................................................................................. 135 13.10 POWER MANAGEMENT ......................................................................................................... 140 13.11 POWER ON RESET AND BROWN OUT DETECTOR .................................................................. 144 13.12 WATCHDOG TIMER............................................................................................................... 145 13.13 USART ................................................................................................................................ 147 13.14 FLASH CONTROLLER ............................................................................................................ 157 14 RADIO..................................................................................................................................... 164 14.1 IEEE 802.15.4 MODULATION FORMAT ................................................................................ 165 14.2 COMMAND STROBES ............................................................................................................. 166 14.3 RF REGISTERS ...................................................................................................................... 166 14.4 INTERRUPTS ......................................................................................................................... 166 14.5 FIFO ACCESS........................................................................................................................ 169 14.6 DMA.................................................................................................................................... 170 14.7 RECEIVE MODE ..................................................................................................................... 170 14.8 RXFIFO OVERFLOW ............................................................................................................ 170 14.9 TRANSMIT MODE .................................................................................................................. 171 14.10 GENERAL CONTROL AND STATUS ......................................................................................... 172 14.11 DEMODULATOR, SYMBOL SYNCHRONIZER AND DATA DECISION ......................................... 172 14.12 FRAME FORMAT ................................................................................................................... 173 14.13 SYNCHRONIZATION HEADER................................................................................................. 173 14.14 LENGTH FIELD ...................................................................................................................... 174 14.15 MAC PROTOCOL DATA UNIT ................................................................................................ 175 14.16 FRAME CHECK SEQUENCE ..................................................................................................... 175 14.17 RF DATA BUFFERING ........................................................................................................... 176 14.18 ADDRESS RECOGNITION ....................................................................................................... 177 14.19 ACKNOWLEDGE FRAMES ...................................................................................................... 178 14.20 RADIO CONTROL STATE MACHINE ........................................................................................ 179 14.21 MAC SECURITY OPERATIONS (ENCRYPTION AND AUTHENTICATION) ................................. 181 14.22 LINEAR IF AND AGC SETTINGS ........................................................................................... 181 14.23 RSSI / ENERGY DETECTION ................................................................................................. 181 14.24 LINK QUALITY INDICATION .................................................................................................. 182 14.25 CLEAR CHANNEL ASSESSMENT ............................................................................................ 182 14.26 FREQUENCY AND CHANNEL PROGRAMMING ........................................................................ 183 14.27 VCO AND PLL SELF-CALIBRATION ..................................................................................... 183 14.28 OUTPUT POWER PROGRAMMING .......................................................................................... 183 14.29 INPUT / OUTPUT MATCHING ................................................................................................. 184 14.30 TRANSMITTER TEST MODES ................................................................................................. 184 14.31 SYSTEM CONSIDERATIONS AND GUIDELINES ....................................................................... 186 14.32 PCB LAYOUT RECOMMENDATION ....................................................................................... 188 14.33 ANTENNA CONSIDERATIONS ................................................................................................ 189 14.34 CSMA/CA STROBE PROCESSOR .......................................................................................... 189 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 4 of 232 CC2430 14.35 RADIO REGISTERS ................................................................................................................ 203 15 RADIO TEST OUTPUT SIGNALS...................................................................................... 222 16 16.1 17 VOLTAGE REGULATORS ................................................................................................. 223 VOLTAGE REGULATORS POWER-ON ..................................................................................... 223 EVALUATION SOFTWARE ............................................................................................... 223 18 REGISTER OVERVIEW ...................................................................................................... 224 19 19.1 19.2 19.3 19.4 19.5 20 PACKAGE DESCRIPTION (QLP 48)................................................................................. 227 RECOMMENDED PCB LAYOUT FOR PACKAGE (QLP 48) ....................................................... 228 PACKAGE THERMAL PROPERTIES .......................................................................................... 228 SOLDERING INFORMATION.................................................................................................... 228 PLASTIC TUBE SPECIFICATION .............................................................................................. 228 CARRIER TAPE AND REEL SPECIFICATION ............................................................................. 229 ORDERING INFORMATION.............................................................................................. 229 21 21.1 21.2 21.3 21.4 21.5 GENERAL INFORMATION................................................................................................ 230 DOCUMENT HISTORY ........................................................................................................... 230 PRODUCT STATUS DEFINITIONS ........................................................................................... 231 DISCLAIMER ......................................................................................................................... 232 TRADEMARKS ....................................................................................................................... 232 LIFE SUPPORT POLICY .......................................................................................................... 232 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 5 of 232 CC2430 1 Abbreviations ADC Analog to Digital Converter I/O Input / Output AES Advanced Encryption Standard I/Q In-phase / Quadrature-phase AGC Automatic Gain Control IEEE ARIB Association of Radio Industries and Businesses Institute of Electrical and Electronics Engineers IF Intermediate Frequency BCD Binary Coded Decimal IOC I/O Controller BER Bit Error Rate ISM Industrial, Scientific and Medical BOD Brown Out Detector ITU-T BOM Bill of Materials International Telecommunication Union – Telecommunication Standardization Sector CBC Cipher Block Chaining IV Initialization Vector CBC-MAC Cipher Block Chaining Message Authentication Code IRQ Interrupt Request JEDEC Joint Electron Device Engineering Council CCA Clear Channel Assessment CCM Counter mode + CBC-MAC KB 1024 bytes CFB Cipher Feedback kbps kilo bits per second CFR Code of Federal Regulations LC Inductor-capacitor CMOS Complementary Metal Oxide Semiconductor LFSR Linear Feedback Shift Register CPU Central Processing Unit LNA Low-Noise Amplifier LO Local Oscillator LQI Link Quality Indication LSB Least Significant Bit / Byte CSMA/CA Strobe Processor LSB Least Significant Byte CTR Counter mode (encryption) MAC Medium Access Control CW Continuous Wave MAC Message Authentication Code DAC Digital to Analog Converter MCU Microcontroller Unit DC Direct Current MFR MAC Footer DMA Direct Memory Access MHR MAC Header DSM Delta Sigma Modulator MIC Message Integrity Code DSSS Direct Sequence Spread Spectrum MISO Master In Slave Out ECB Electronic Code Book (encryption) MPDU MAC Protocol Data Unit EM Evaluation Module MOSI Master Out Slave In ESD Electro Static Discharge MSB Most Significant Byte ESR Equivalent Series Resistance MSDU MAC Service Data Unit ETSI European Telecommunications Standards Institute MUX Multiplexer NA Not Available EVM Error Vector Magnitude NC Not Connected FCC Federal Communications Commission OFB Output Feedback (encryption) FCF Frame Control Field O-QPSK Offset - Quadrature Phase Shift Keying FCS Frame Check Sequence PA Power Amplifier FFCTRL FIFO and Frame Control PCB Printed Circuit Board FIFO First In First Out PER Packet Error Rate HSSD High Speed Serial Data PHR PHY Header CRC Cyclic Redundancy Check CSMA-CA Carrier Sense Multiple Access with Collision Avoidance CSP CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 6 of 232 CC2430 PHY Physical Layer PLL Phase Locked Loop PM{0-3} Power Mode 0-3 PMC Power Management Controller POR Power On Reset PSDU PHY Service Data Unit PWM Pulse Width Modulator QLP Quad Leadless Package RAM Random Access Memory RBW Resolution Bandwidth RC Resistor-Capacitor RCOSC RC Oscillator RF Radio Frequency RoHS Restriction on Hazardous Substances RSSI Receive Signal Strength Indicator RTC Real-Time Clock RX Receive SCK Serial Clock SFD Start of Frame Delimiter SFR Special Function Register SHR Synchronization Header SINAD Signal-to-noise and distortion ratio SPI Serial Peripheral Interface SRAM Static Random Access Memory ST Sleep Timer T/R Transmit / Receive T/R Tape and reel TBD To Be Decided / To Be Defined THD Total Harmonic Distortion TX Transmit UART Universal Asynchronous Receiver/Transmitter USART Universal Synchronous/Asynchronous Receiver/Transmitter VCO Voltage Controlled Oscillator VGA Variable Gain Amplifier WDT Watchdog Timer XOSC Crystal Oscillator CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 7 of 232 CC2430 2 [1] References IEEE std. 802.15.4 - 2003: Wireless Medium Access Control (MAC) and Physical Layer (PHY) specifications for Low Rate Wireless Personal Area Networks (LR-WPANs) http://standards.ieee.org/getieee802/download/802.15.4-2003.pdf [2] NIST FIPS Pub 197: Advanced Encryption Standard (AES), Federal Information Processing Standards Publication 197, US Department of Commerce/N.I.S.T., November 26, 2001. Available from the NIST website. http://csrc.nist.gov/publications/fips/fips197/fips-197.pdf CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 8 of 232 CC2430 3 Register conventions Each SFR register is described in a separate table. The table heading is given in the following format: REGISTER NAME (SFR Address) - Register Description. Each RF register is described in a separate table. The table heading is given in the following format: REGISTER NAME (XDATA Address) In the register descriptions, each register bit is shown with a symbol indicating the access mode of the register bit. The register values are always given in binary notation unless prefixed by ‘0x’ which indicates hexadecimal notation. Symbol Access Mode R/W Read/write R Read only R0 Read as 0 R1 Read as 1 W Write only W0 Write as 0 W1 Write as 1 H0 Hardware clear H1 Hardware set Table 1: Register bit conventions CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 9 of 232 CC2430 4 Features (continued from front page) • 4.1 High-Performance and Low-Power 8051-Compatible Microcontroller • Optimized 8051 core, which typically gives 8x the performance of a standard 8051 • Dual data pointers • In-circuit interactive debugging is supported for the IAR Embedded Workbench through a simple two-wire serial interface 4.2 32/64/128 KB of non-volatile flash memory in-system programmable through a simple two-wire interface or by the 8051 core • Worst-case flash memory 1000 write/erase cycles. • Programmable read and write lock of portions of Flash memory for software security • 4.3 • 4.4 Low Power • Four flexible power modes for reduced power consumption • System can wake up on external interrupt or real-time counter event • Low-power fully static CMOS design • System clock source can be 16 MHz RC oscillator or 32 MHz crystal oscillator. The 32 MHz oscillator is used when radio is active. • Optional clock source for ultra-low power operation can be either low-power RC oscillator or an optional 32.768 kHz crystal oscillator. Up to 128 KB Non-volatile Program Memory and 2 x 4 KB Data Memory • • 4.5 True random number generator endurance: 4.6 802.15.4 MAC hardware support • Automatic preamble generator • Synchronization word insertion/detection • Additional 4096 bytes of internal SRAM with data retention in power modes 0 and 1. CRC-16 computation and checking over the MAC payload • Clear Channel Assessment • Energy detection / digital RSSI Hardware AES Encryption/Decryption • Link Quality Indication • CSMA/CA Coprocessor 4096 bytes of internal SRAM with data retention in all power modes. AES supported in hardware coprocessor 4.7 Peripheral Features • Powerful DMA Controller • Power On Reset/Brown-Out Detection • Eight channel, 8-14 bit ADC • Programmable watchdog timer • Real time clock with 32.768 kHz crystal oscillator • Four timers: one general 16-bit timer, two general 8-bit timers, one MAC timer • Two programmable USARTs master/slave SPI or UART operation • 21 configurable general-purpose digital I/O-pins for Integrated 2.4GHz DSSS Digital Radio • 2.4 GHz IEEE 802.15.4 compliant RF transceiver (based on industry leading CC2420 radio core). • Excellent receiver sensitivity robustness to interferers • 250 kbps data rate, 2 MChip/s chip rate • Complies with worldwide radio frequency regulations covered by ETSI EN 300 328 and EN 300 440 class 2 (Europe), FCC CFR47 Part 15 (US) and ARIB STD-T66 (Japan). CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 10 of 232 and CC2430 5 Absolute Maximum Ratings Under no circumstances must the absolute maximum ratings given in Table 2 be violated. Stress exceeding one or more of the limiting values may cause permanent damage to the device. Parameter Min Max Units Supply voltage –0.3 3.6 V Voltage on any digital pin –0.3 VDD+0.3, max 3.6 V Voltage on the 1.8V pins (pin no. 22, 25-40 and 42) –0.3 2.0 V 10 dBm 150 °C Device not programmed 260 °C According to IPC/JEDEC J-STD-020C Input RF level Storage temperature range –50 Reflow soldering temperature Condition All supply pins must have the same voltage Table 2: Absolute Maximum Ratings Caution! ESD sensitive device. Precaution should be used when handling the device in order to prevent permanent damage. 6 Operating Conditions The operating conditions for CC2430 are listed Table 3 in below. Parameter Min Max Unit Operating ambient temperature range, TA -40 85 °C Operating supply voltage 2.0 3.6 V Condition The supply pins to the radio part must be driven by the on-chip regulator Table 3: Operating Conditions CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 11 of 232 CC2430 7 Electrical Specifications TA=25°C, VDD=3.0V if nothing else stated. Parameter Min Power On Reset Voltage Typ Max Unit Condition 1.1 V Monitors the unregulated supply MCU Active Mode, static 492 µA Digital regulator on, High Speed RCOSC running. No radio, crystals, or peripherals. MCU Active Mode, dynamic 210 µA/MHz Digital regulator on, High Speed RCOSC running. No radio, crystals, or peripherals. MCU Active Mode, highest speed 7.0 mA MCU running at full speed (32MHz), 32MHz XOSC running. No peripherals. MCU Active and RX Mode 27 mA MCU running at full speed (32MHz), 32MHz XOSC running, radio in RX mode. No peripherals. MCU Active and TX Mode, 0dBm 24.7 mA MCU running at full speed (32MHz), 32MHz XOSC running, radio in TX mode. No peripherals. Power mode 1 296 µA Digital regulator on, High Speed RCOSC and crystal oscillator off. 32.768kHz XOSC, POR and ST active. RAM retention. Power mode 2 0.9 µA Digital regulator off, High Speed RCOSC and crystal oscillator off. 32.768kHz XOSC, POR and ST active. RAM retention. Power mode 3 0.6 µA No clocks. RAM retention. Power On Reset (POR) active. Current Consumption Peripheral Current Consumption Adds to the figures above if the peripheral unit is activated Timer 1 10 µA/MHz When enabled Timer 2 10 µA/MHz When enabled Timer 3 10 µA/MHz When enabled Timer 4 10 µA/MHz When enabled Sleep Timer 0.5 µA AES 50 µA/MHz ADC 0.9 mA USART1 / USART2 12 µA/MHz For each USART in use. Not including current for driving I/O pins. DMA 30 µA/MHz When operating, not including current for memory access Flash write 3 mA Including low-power RC oscillator or 32.768kHz XOSC When encrypting/decrypting When converting Table 4: Electrical Specifications CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 12 of 232 CC2430 7.1 General Characteristics TA=25°C, VDD=3.0V if nothing else stated. Parameter Min Typ Max Unit Condition/Note Wake-Up and Timing Power mode 1 Æ power mode 0 2 µs Digital regulator on, High Speed RCOSC and crystal oscillator off. Start-up of High Speed RCOSC. Power mode 2 or 3 Æ power mode 0 54 µs Digital regulator off, High Speed RCOSC and crystal oscillator off. Start-up of regulator and High Speed RCOSC. Active Æ RX 32MHz XOSC initially OFF. Voltage regulator initially OFF 450 µs Time from enabling radio part in power mode 0, until RX starts. Includes start-up of voltage regulator and crystal oscillator. Crystal ESR=16Ω. Active Æ TX 32MHz XOSC initially OFF. Voltage regulator initially OFF 525 µs Time from enabling radio part in power mode 0, until TX starts. Includes start-up of voltage regulator and crystal oscillator. Crystal ESR=16Ω. Active Æ RX Voltage regulator initially OFF 250 µs Time from enabling radio part in power mode 0, until RX starts. Includes start-up of voltage regulator. Active Æ TX Voltage regulator initially OFF 320 µs Time from enabling radio part in power mode 0, until TX starts. Includes start-up of voltage regulator. Radio part already enabled. Time until RX or TX starts. Active Æ RX or TX 192 µs RX/TX turnaround 192 µs Radio part RF Frequency Range 2400 2483.5 MHz Programmable in 1 MHz steps, 5 MHz steps for compliance with [1] Radio bit rate 250 kbps As defined by [1] Radio chip rate 2.0 MChip/s As defined by [1] Table 5: General Characteristics CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 13 of 232 CC2430 7.2 RF Receive Section TA=25°C, VDD=3.0V if nothing else stated. Measured on Chipcon’s CC2430 EM reference design. Parameter Min Receiver sensitivity Typ -94 Max Unit Condition/Note dBm PER = 1%, as specified by [1] Measured in 50 Ω single endedly through a balun. [1] requires –85 dBm Saturation (maximum input level) 0 10 dBm PER = 1%, as specified by [1] Measured in 50 Ω single endedly through a balun. [1] requires –20 dBm Adjacent channel rejection + 5 MHz channel spacing 41 dB Wanted signal 3 dB above the sensitivity level, adjacent modulated channel at +5 MHz, PER = 1 %, as specified by [1]. [1] requires 0 dB Adjacent channel rejection - 5 MHz channel spacing 29 dB Wanted signal 3 dB above the sensitivity level, adjacent modulated channel at -5 MHz, PER = 1 %, as specified by [1]. [1] requires 0 dB Alternate channel rejection + 10 MHz channel spacing 54 dB Wanted signal 3 dB above the sensitivity level, adjacent modulated channel at +10 MHz, PER = 1 %, as specified by [1] [1] requires 30 dB Alternate channel rejection - 10 MHz channel spacing 53 dB Wanted signal 3 dB above the sensitivity level, adjacent modulated channel at -10 MHz, PER = 1 %, as specified by [1] [1] requires 30 dB Channel rejection ≥ + 15 MHz 53 dB ≤ - 15 MHz 57 dB Wanted signal @ -82 dBm. Undesired signal is an 802.15.4 modulated channel, stepped through all channels from 2405 to 2480 MHz. Signal level for PER = 1%. dB Wanted signal @ -82 dBm. Undesired signal is 802.15.4 modulated at the same frequency as the desired signal. Signal level for PER = 1%. Co-channel rejection -4 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 14 of 232 CC2430 Parameter Min Typ Max Unit Condition/Note dBm dBm dBm dBm Wanted signal 3 dB above the sensitivity level, CW jammer, PER = 1%. Measured according to EN 300 440 class 2. −57 −47 dBm dBm Conducted measurement in a 50 Ω single ended load. Complies with EN 300 328, EN 300 440 class 2, FCC CFR47, Part 15 and ARIB STD-T-66 300 kHz Difference between centre frequency of the received RF signal and local oscillator frequency Blocking / Desensitization +/- 5 MHz from band edge +/- 20 MHz from band edge +/- 30 MHz from band edge +/- 50 MHz from band edge -29 -25 -19 -17 Spurious emission 30 – 1000 MHz 1 – 12.75 GHz Frequency error tolerance -300 [1] requires 200 kHz Symbol rate error tolerance 120 ppm Difference between incoming symbol rate and the internally generated symbol rate [1] requires 80 ppm Table 6: RF Receive Section 7.3 RF Transmit Section TA=25°C, VDD=3.0V if nothing else stated. Measured on Chipcon’s CC2430 EM reference design. Parameter Nominal output power Min Typ -3 0 Max Unit dBm Condition/Note Delivered to a single ended 50 Ω load through a balun. [1] requires minimum –3 dBm Programmable output power range 24 dB The output power is programmable in 8 steps from approximately –24 to 0 dBm. nd -56 dBm rd -60 dBm Measured conducted with 1 MHz resolution bandwidth on spectrum analyser. At max output power delivered to a single ended 50 Ω load through a balun. Harmonics 2 harmonic 3 harmonic Spurious emission Maximum output power. 30 - 1000 MHz -58 dBm 1– 12.75 GHz -48 dBm 1.8 – 1.9 GHz -58 dBm 5.15 – 5.3 GHz -56 dBm Error Vector Magnitude (EVM) 11 % Optimum load impedance Chipcon’s CC2430 EM reference design complies with EN 300 328, EN 300 440, FCC CFR47 Part 15 and ARIB STD-T-66 Measured as defined by [1] [1] requires max. 35 % 115 + j180 Ω Differential impedance as seen from the RF-port (RF_P and RF_N) towards the antenna. Table 7: RF Transmit Parameters CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 15 of 232 CC2430 7.4 32 MHz Crystal Oscillator TA=25°C, VDD=3.0V if nothing else is stated. Parameter Min Crystal frequency Crystal frequency accuracy requirement Typ Max Unit 32 MHz - 40 40 ppm Ω ESR 6 16 60 C0 1 1.9 7 pF CL 10 13 16 pF Start-up time Condition/Note 140 Including aging and temperature dependency, as specified by [1] µs Table 8: 32 MHz Crystal Oscillator Parameters 7.5 32.768 kHz Crystal Oscillator TA=25°C, VDD=3.0V if nothing else is stated. Parameter Min Crystal frequency Crystal frequency accuracy requirement Typ Max Unit 32.768 –40 kHz 40 ppm kΩ ESR 40 130 C0 0.9 2.0 pF CL 12 16 pF 450 ms Start-up time Condition/Note Including aging and temperature dependency, as specified by [1] Table 9: 32.768 kHz Crystal Oscillator Parameters 7.6 Low Power RC Oscillator TA=25°C, VDD=3.0V if nothing else is stated. Parameter Calibrated frequency Min Typ 32.768 Max Unit Condition/Note kHz Calibrated Low Power RC Oscillator frequency is XTAL frequency multiplied by 16/15625 Frequency accuracy after calibration ±0.2 % Temperature coefficient +0.4 % / °C Frequency drift when temperature changes after calibration +3 %/V Frequency drift when supply voltage changes after calibration ms When the Low Power RC Oscillator is enabled, calibration is continuously done in the background as long as the crystal oscillator is running. Supply voltage coefficient Initial calibration time 4 Table 10: Low Power RC Oscillator parameters CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 16 of 232 CC2430 7.7 High Speed RC Oscillator TA=25°C, VDD=3.0V if nothing else is stated. Parameter Min Typ Max Unit Condition/Note Frequency 16 MHz Calibrated High Speed RC Oscillator frequency is XTAL frequency multiplied by 1/2 Uncalibrated frequency accuracy ±18 % Measured on Chipcon’s CC2430 EM reference design. Calibrated frequency accuracy ±0.6 Start-up time Temperature coefficient Supply voltage coefficient Initial calibration time ±1 % 10 µs -325 ppm / °C Frequency drift when temperature changes after calibration 28 ppm / mV Frequency drift when supply voltage changes after calibration µs When the High Speed RC Oscillator is enabled, calibration is continuously done in the background as long as the crystal oscillator is running. 50 Table 11: High Speed RC Oscillator parameters 7.8 Frequency Synthesizer Characteristics TA=25°C, VDD=3.0V if nothing else stated. Measured on Chipcon’s CC2430 EM reference design. Parameter Min Typ Max Unit Phase noise Unmodulated carrier −107 −113 −119 −121 PLL lock time Condition/Note 192 dBc/Hz dBc/Hz dBc/Hz dBc/Hz At ±1 MHz offset from carrier At ±2 MHz offset from carrier At ±3 MHz offset from carrier At ±5 MHz offset from carrier µs The startup time when the crystal oscillator is running and RX / TX turnaround time Table 12: Frequency Synthesizer Parameters CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 17 of 232 CC2430 7.9 Analog Temperature Sensor TA=25°C, VDD=2.0 V to 3.6V if nothing else stated. Parameter Min Typ Max Unit Output voltage at –40°C 0.638 0.648 0.706 V Output voltage at 0°C 0.733 0.743 0.793 V Output voltage at +40°C 0.828 0.840 0.891 V Output voltage at +80°C 0.924 0.939 0.992 V Output voltage at +120°C 1.022 1.039 1.093 V Temperature coefficient 2.35 2.45 2.46 mV/°C Fitted from –20°C to +80°C Absolute error in calculated temperature –14 –8 +14 °C From –20°C to +80°C when assuming best fit for absolute accuracy: 0.763V at 0°C and 2.44mV / °C Error in calculated temperature, calibrated –2 +2 °C From –20°C to +80°C when using 2.44mV / °C, after 1-point calibration at room temperature Current consumption increase when enabled 0.3 Condition/Note mA Table 13: Analog Temperature Sensor Parameters 7.10 8-14 bit ADC TA=25°C, VDD=3.0V if nothing else stated. Differential input and differential reference. Parameter Min Typ Max Unit Condition/Note Input voltage 0 AVDD V AVDD is voltage on AVDD_SOC pin External reference voltage 0 AVDD V AVDD is voltage on AVDD_SOC pin External reference voltage differential 0 AVDD V AVDD is voltage on AVDD_SOC pin Number of bits (ENOB) 8 13 bits The ADC is a delta-sigma. Effective resolution depends on sample rate used. Differential input signal and reference. Offset Conversion time TBD 20 LSB 132 µs Differential nonlinearity (DNL) ±0.3 LSB 8-bits setting Integral nonlinearity (INL) ±0.8 LSB 8-bits setting SINAD 45 dB 8-bits setting (sine input) 56 dB 10-bits setting 66 dB 12-bits setting 75 dB 14-bits setting Table 14: 8-14 bit ADC Characteristics CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 18 of 232 CC2430 7.11 Control AC Characteristics TA= -40°C to 85°C, VDD=3.0V if nothing else stated. Parameter System clock, fSYSCLK Min Typ 16 Max Unit Condition/Note 32 MHz System clock is when 32 MHz crystal oscillator is used. System clock is 16 MHz when high speed RC oscillator is used. tSYSCLK= 1/ fSYSCLK RESET_N low width 2.5 ns See item 1, Figure 1. This is the shortest pulse that is guaranteed to be recognized as a reset pin request. Interrupt pulse width tSYSCLK ns See item 2, Figure 1.This is the shortest pulse that is guaranteed to be recognized as an interrupt request. In PM2/3 the internal synchronizers are bypassed so this requirement does not apply in PM2/3. Table 15: Control Inputs AC Characteristics 1 RESET_N Px.n 2 2 Px.n Figure 1: Control Inputs AC Characteristics CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 19 of 232 CC2430 7.12 SPI AC Characteristics TA= -40°C to 85°C, VDD=3.0V if nothing else stated. Parameter Min Typ SCK period Max See sectio n 13.13. 3 SCK duty cycle Unit Condition/Note ns Master. See item 1 Figure 2 50% Master. SSN low to SCK 2*tSYSCLK See item 5 Figure 2 SCK to SSN high 30 ns See item 6 Figure 2 MISO setup 10 ns Master. See item 2 Figure 2 MISO hold 10 ns Master. See item 3 Figure 2 ns Master. See item 4 Figure 2, load = 10 pF ns Slave. See item 1 Figure 2 SCK to MOSI SCK period 25 100 SCK duty cycle 50% Slave. MOSI setup 10 ns Slave. See item 2 Figure 2 MOSI hold 10 ns Slave. See item 3 Figure 2 ns Slave. See item 4 Figure 2, load = 10 pF SCK to MISO 25 Table 16: SPI AC Characteristics Figure 2: SPI AC Characteristics CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 20 of 232 CC2430 7.13 Debug Interface AC Characteristics TA= -40°C to 85°C, VDD=3.0V if nothing else stated. Parameter Min Unit Condition/Note 31.25 ns See item 1 Figure 3 Debug data setup 5 ns See item 2 Figure 3 Debug data hold 5 ns See item 3 Figure 3 ns See item 4 Figure 3, load = 10 pF ns See item 5 Figure 3 Debug clock period Typ Clock to data delay Max 10 RESET_N inactive after P2_2 rising 10 Table 17: Debug Interface AC Characteristics 1 DEBUG CLK P2_2 3 2 DEBUG DATA P2_1 4 DEBUG DATA P2_1 5 RESET_N Figure 3: Debug Interface AC Characteristics 7.14 Port Outputs AC Characteristics TA= -40°C to 85°C, VDD=3.0V if nothing else stated. Parameter P0, P1, P2 Port output pins, rise and fall time Min Typ 10 Max Unit Condition/Note ns Load = 10 pF Timing is with respect to 10% VDD and 90% VDD levels. Table 18: Port Outputs AC Characteristics CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 21 of 232 CC2430 7.15 Timer Inputs AC Characteristics TA= -40°C to 85°C, VDD=3.0V if nothing else stated. Parameter Input capture pulse width Min Typ Max tSYSCLK Unit Condition/Note ns Synchronizers determine the shortest input pulse that can be recognized. The synchronizers operate at the current system clock rate Table 19: Timer Inputs AC Characteristics 7.16 DC Characteristics The DC Characteristics of CC2430 are listed in Table 20 below. TA=25°C, VDD=3.0V if nothing else stated. Digital Inputs/Outputs Min Typ Max Unit Condition Logic "0" input voltage 0 0.7 0.9 V Logic "1" input voltage VDD-0.7 VDD VDD V Logic "0" output voltage 0 0 0.25 V For up to 4mA output current on all pins except P1_0 and P1_1 which are up to 20 mA Logic "1" output voltage VDD-0.25 VDD VDD V For up to 4mA output current on all pins except P1_0 and P1_1 which are up to 20 mA Logic "0" input current NA –1 –1 µA Input equals 0V Logic "1" input current NA 1 1 µA Input equals VDD I/O pin pull-up and pull-down resistor 17 20 23 kΩ Table 20: DC Characteristics CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 22 of 232 CC2430 8 Pin and I/O Port Configuration AVDD_IF2 AVDD_ADC DVDD_ADC AVDD_DGUARD AVDD_DREG DCOUPL P2_4/XOSC_Q2 P2_3/XOSC_Q1 P2_2 P2_1 DVDD P2_0 The CC2430 pinout is shown in Figure 4 and Table 21. See section 13.1 for details on the configuration of digital I/O ports. 48 47 46 45 44 43 42 41 40 39 38 37 P1_7 1 36 AVDD_RF2 P1_6 2 35 AVDD_SW P1_5 3 34 RF_N P1_4 4 33 TXRX_SWITCH P1_3 5 32 RF_P P1_2 6 31 AVDD_RF1 DVDD 7 30 AVDD_PRE P1_1 8 29 AVDD_VCO P1_0 9 28 VCO_GUARD RESET_N 10 27 AVDD_CHP P0_0 11 26 RBIAS2 P0_1 12 25 AVDD_IF1 13 14 15 16 17 18 19 20 21 22 23 24 RREG_OUT AVDD_RREG RBIAS1 XOSC_Q1 AVDD_SOC XOSC_Q2 P0_7 P0_6 P0_5 P0_4 P0_3 P0_2 AGND Exposed die attached pad Figure 4: Pinout top view Note: The exposed die attach pad must be connected to a solid ground plane as this is the ground connection for the chip. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 23 of 232 CC2430 Pin 1 Pin name GND P1_7 Pin type Ground Digital I/O Description The exposed die attach pad must be connected to a solid ground plane Port 1.7 2 3 4 5 6 7 8 P1_6 P1_5 P1_4 P1_3 P1_2 DVDD P1_1 Digital I/O Digital I/O Digital I/O Digital I/O Digital I/O Power (Digital) Digital I/O Port 1.6 Port 1.5 Port 1.4 Port 1.3 Port 1.2 2.0V-3.6V digital power supply for digital I/O Port 1.1 – 20 mA drive capability 9 10 11 12 13 14 P1_0 RESET_N P0_0 P0_1 P0_2 P0_3 Digital I/O Digital input Digital I/O Digital I/O Digital I/O Digital I/O Port 1.0 – 20 mA drive capability Reset, active low Port 0.0 Port 0.1 Port 0.2 Port 0.3 15 16 17 18 19 20 21 P0_4 P0_5 P0_6 P0_7 XOSC_Q2 AVDD_SOC XOSC_Q1 Digital I/O Digital I/O Digital I/O Digital I/O Analog I/O Power (Analog) Analog I/O Port 0.4 Port 0.5 Port 0.6 Port 0.7 32 MHz crystal oscillator pin 2 2.0V-3.6V analog power supply connection 32 MHz crystal oscillator pin 1, or external clock input 22 23 24 RBIAS1 AVDD_RREG RREG_OUT Analog I/O Power (Analog) Power output 25 AVDD_IF1 Power (Analog) External precision bias resistor for reference current 2.0V-3.6V analog power supply connection 1.8V Voltage regulator power supply output. Only intended for supplying the analog 1.8V part (power supply for pins 25, 27-31, 35-40). 1.8V Power supply for the receiver band pass filter, analog test module, global bias and first part of the VGA External precision resistor, 43 kΩ, ±1 % 1.8V Power supply for phase detector, charge pump and first part of loop filter Connection of guard ring for VCO (to AVDD) shielding 1.8V Power supply for VCO and last part of PLL loop filter 26 RBIAS2 Analog output 27 28 29 AVDD_CHP VCO_GUARD AVDD_VCO Power (Analog) Power (Analog) Power (Analog) 30 31 32 AVDD_PRE AVDD_RF1 RF_P Power (Analog) Power (Analog) RF I/O 33 34 TXRX_SWITCH RF_N Power (Analog) RF I/O 35 36 AVDD_SW AVDD_RF2 Power (Analog) Power (Analog) 1.8V Power supply for Prescaler, Div-2 and LO buffers 1.8V Power supply for LNA, front-end bias and PA Positive RF input signal to LNA during RX. Positive RF output signal from PA during TX Regulated supply voltage for PA Negative RF input signal to LNA during RX Negative RF output signal from PA during TX 1.8V Power supply for LNA / PA switch 1.8V Power supply for receive and transmit mixers 37 38 39 40 41 42 AVDD_IF2 AVDD_ADC DVDD_ADC AVDD_DGUARD AVDD_DREG DCOUPL Power (Analog) Power (Analog) Power (Digital) Power (Digital) Power (Digital) Power (Digital) 1.8V Power supply for transmit low pass filter and last stages of VGA 1.8V Power supply for analog parts of ADCs and DACs 1.8V Power supply for digital parts of ADCs Power supply connection for digital noise isolation 2.0V-3.6V digital power supply for digital core voltage regulator 1.8V digital power supply decoupling. Do not use for supplying external circuits. 43 44 45 46 47 48 P2_4/XOSC_Q2 P2_3/XOSC_Q1 P2_2 P2_1 DVDD P2_0 Digital I/O Digital I/O Digital I/O Digital I/O Power (Digital) Digital I/O Port 2.4/32.768 kHz XOSC Port 2.3/32.768 kHz XOSC Port 2.2 Port 2.1 2.0V-3.6V digital power supply for digital I/O Port 2.0 Table 21: Pinout overview CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 24 of 232 CC2430 9 Circuit Description Figure 5: CC2430 Block Diagram A block diagram of CC2430 is shown in Figure 5. The modules can be roughly divided into one of three categories: CPU-related modules, radio-related modules and modules related to power, test and clock distribution. In the following subsections, a short description of each module that appears in Figure 5 is given. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 25 of 232 CC2430 9.1 CPU and Peripherals The 8051 CPU core is a single-cycle 8051compatible core. It has three different memory access buses (SFR, DATA and CODE/XDATA), a debug interface and an 18input extended interrupt unit. See section 12 for details on the CPU. The memory crossbar/arbitrator is at the heart of the system as it connects the CPU and DMA controller with the physical memories and all peripherals through the SFR bus. The memory arbitrator has four memory access points, access at which can map to one of three physical memories: an 8 KB SRAM, flash memory or RF and SFR registers. The memory arbitrator is responsible for performing arbitration and sequencing between simultaneous memory accesses to the same physical memory. The SFR bus is drawn conceptually in the block diagram as a common bus that connects all hardware peripherals to the memory arbitrator. The SFR bus in the block diagram also provides access to the radio registers in the radio register bank even though these are indeed mapped into XDATA memory space. The 8 KB SRAM maps to the DATA memory space and to part of the XDATA memory spaces. 4 KB of the 8 KB SRAM is an ultralow-power SRAM that retains its contents even when the digital part is powered off (power modes 2 and 3). The rest of the SRAM loses its contents when the digital part is powered off. The 32/64/128 KB flash block provides incircuit programmable non-volatile program memory for the device and maps into the CODE and XDATA memory spaces. Table 22 shows the available devices in the CC2430 family. The available devices differ only in flash memory size. Writing to the flash block is performed through a flash controller that allows page-wise (2048 byte) erasure and byte-wise reprogramming. See section 13.14 for details on the flash controller. A versatile five-channel DMA controller is available in the system and accesses memory using a unified memory space (XDATA) and thus has access to all physical memories. Each channel is configured (trigger, priority, transfer mode, addressing mode, source and destination pointers, and transfer count) with DMA descriptors anywhere in memory. Many of the hardware peripherals rely on the DMA controller for efficient operation (AES core, flash write controller, USARTs, Timers, ADC interface) by performing data transfers between a single SFR address and flash/SRAM. See section 13.2 for details. The interrupt controller services a total of 18 interrupt sources, divided into six interrupt groups, each of which is associated with one of four interrupt priorities. An interrupt request is serviced even if the device is in a sleep mode (power modes 1-3) by bringing the CC2430 back to active mode (power mode 0). The debug interface implements a proprietary two-wire serial interface that is used for incircuit debugging. Through this debug interface it is possible to perform an erasure of the entire flash memory, control which oscillators are enabled, stop and start execution of the user program, execute supplied instructions on the 8051 core, set code breakpoints, and single step through instructions in the code. Using these techniques it is possible to elegantly perform in-circuit debugging and external flash programming. See section 12.9 for details. The I/O-controller is responsible for all general-purpose I/O pins. The CPU can configure whether peripheral modules control certain pins or whether they are under software control, and if so whether each pin is configured as an input or output and if a pullup or pull-down resistor in the pad is connected. Each peripheral that connects to the I/O-pins can choose between two different I/O pin locations to ensure flexibility in various applications. See section 13.1 for details. The sleep timer is an ultra-low power timer that counts 32.768 kHz crystal oscillator or 32.768 kHz RC oscillator periods. The sleep timer runs continuously in all operating modes except power mode 3. Typical uses for it is as a real-time counter that runs regardless of operating mode (except power mode 3) or as a wakeup timer to get out of power mode 1 or 2. See section 13.5 for details. A built-in watchdog timer allows the CC2430 to reset itself in case the firmware hangs. When enabled by software, the watchdog timer must be cleared periodically, otherwise it will reset the device when it times out. See section 13.12 for details. Timer 1 is a 16-bit timer with timer/counter/PWM functionality. It has a programmable prescaler, a 16-bit period value CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 26 of 232 CC2430 and three individually programmable counter/capture channels each with a 16-bit compare value. Each of the counter/capture channels can be used as PWM outputs or to capture the timing of edges on input signals. See section 13.3 for details. Timer 2 (MAC timer) is specially designed for supporting an IEEE 802.15.4 MAC or other time-slotted protocols in software. The timer has a configurable timer period and an 8-bit overflow counter that can be used to keep track of the number of periods that have transpired. There is also a 16-bit capture register used to record the exact time at which a start of frame delimiter is received/transmitted or the exact time of which transmission ends, as well as a 16-bit output compare register that can produce various command strobes (start RX, start TX, etc) at specific times to the radio modules. See section 13.4 for details. Timers 3 and 4 are 8-bit timers with timer/counter/PWM functionality. They have a programmable prescaler, an 8-bit period value and one programmable counter/capture channel with a 8-bit compare value. Each of the counter/capture channels can be used as PWM outputs or to capture the timing of edges on input signals. See section 13.6 for details. USART 0 and 1 are each configurable as either an SPI master/slave or a UART. They provide double buffering on both RX and TX and hardware flow-control and are thus well suited to high-throughput full-duplex applications. Each has its own high-precision baud-rate generator thus leaving the ordinary timers free for other uses. When configured as an SPI slave they sample the input signal using SCK directly instead of some oversampling scheme and are thus well-suited to high data rates. See section 13.13 for details. The AES encryption/decryption core allows the user to encrypt and decrypt data using the AES algorithm with 128-bit keys. The core is able to support the AES operations required by IEEE 802.15.4 MAC security, the ZigBee™ network layer and the application layer. See section 13.9 for details. The ADC supports 8 to 14 bits of resolution in a 30 kHz to 4 kHz bandwidth respectively. DC and audio conversion with up to 8 input channels (Port 0) is possible. The inputs can be selected as single ended or differential. The reference voltage can be internal, AVDD, or a single ended or differential external signal. The ADC also has a temperature sensor input channel. The ADC can automate the process of periodic sampling or conversion over a sequence of channels. See Section 13.7 for details. 9.2 Radio CC2430 features an IEEE 802.15.4 compliant radio based on the leading CC2420 transceiver. See Section 14 for details. Device Flash CC2430-F32 32 KB CC2430-F64 64 KB CC2430-F128 128 KB Table 22: CC2430 Flash Memory Options CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 27 of 232 CC2430 10 Power Management The CC2430 has four major power modes, called PM0, PM1, PM2 and PM3. PM0 is the active mode while PM3 has the lowest power consumption. The power modes are shown in Table 23 together with voltage regulator and oscillator options. High speed oscillator Configuration Power Mode Low-speed oscillator Voltage regulator (digital) A None A None A Off B 32 MHz XOSC B B On C HS RCOSC 32.768 kHz RCOSC C 32.768 kHz XOSC D Both PM0 B, C, D B, C B PM1 A B, C B PM2 A B, C A PM3 A A A Table 23: Power Modes PM0 : The full functional mode. The voltage regulator to the digital core is on and either the HS-RCOSC or the 32 MHz XOSC or both are running. Either the 32.768 kHz RCOSC or the 32.768 kHz XOSC is running. PM1 : The voltage regulator to the digital part is on. Neither the 32 MHz XOSC nor the HSRCOSC are running. Either the 32.768 kHz RCOSC or the 32.768 kHz XOSC is running. The system will go to PM0 on reset or an external interrupt or when the sleep timer expires. PM2 : The voltage regulator to the digital core is turned off. Neither the 32 MHz XOSC nor the HS-RCOSC are running. Either the 32.768 kHz RCOSC or the 32.768 kHz XOSC is running. The system will go to PM0 on reset or an external interrupt or when the sleep timer expires. PM3 : The voltage regulator to the digital core is turned off. None of the oscillators are running. The system will go to PM0 on reset or an external interrupt. Refer to section 13.10 on page 140 for a detailed description of power management. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 28 of 232 CC2430 11 Application Circuit Few external components are required for the operation of CC2430. A typical application circuit is shown in Figure 6. Typical values and description of external components are shown in Table 24 11.1 Input / output matching The RF input/output is high impedance and differential. The optimum differential load for the RF port is 115+j180 Ω. When using an unbalanced antenna such as a monopole, a balun should be used in order to optimize performance. The balun can be implemented using low-cost discrete inductors and capacitors. The recommended balun shown, consists of C341, L341, L321 and L331 together with a PCB microstrip transmission line (λ/2-dipole), and will match the RF input/output to 50 Ω. An internal T/R switch circuit is used to switch between the LNA and the PA. See Input/output matching section on page 184 for more details. If a balanced antenna such as a folded dipole is used, the balun can be omitted. If the antenna also provides a DC path from TXRX_SWITCH pin to the RF pins, inductors are not needed for DC bias. Figure 6 shows a suggested application circuit using a differential antenna. The antenna type is a standard folded dipole. The dipole has a virtual ground point; hence bias is provided without degradation in antenna performance. Also refer to the section Antenna Considerations on page 189. 11.2 Bias resistors The bias resistors are R221 and R261. The bias resistor R221 is used to set an accurate bias current for the 32 MHz crystal oscillator. 11.3 Crystal An external 32 MHz crystal, XTAL1, with two loading capacitors (C191 and C211) is used for the 32 MHz crystal oscillator. See page 16 for details. XTAL2 is an optional 32.768 kHz crystal. Mesh networks can be implemented without the 32.768 kHz crystal. 11.4 Voltage regulators The on chip voltage regulators supply all 1.8 V power supply pins and internal power supplies. C241 and C421 are required for stability of the regulators. A series resistor may be used to comply with the ESR requirement. 11.5 Power supply filtering decoupling and Proper power supply decoupling must be used for optimum performance. The placement and size of the decoupling capacitors and the power supply filtering are very important to achieve the best performance in an application. Chipcon provides a compact reference design that should be followed very closely. Refer to the section PCB Layout Recommendation on page 188. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 29 of 232 CC2430 C431 C441 C421 2.0 - 3.6V Power Supply XTAL2 AVDD_IF2 37 38 AVDD_ADC DCOUPL 42 P2_4 43 P2_3 44 P2_2 45 P2_1 46 39 P1_5 DVDD_ADC 3 40 P1_6 AVDD_DGUARD 2 41 P1_7 AVDD_DREG 1 DVDD 47 P2_0 48 optional Antenna (50 Ohm) AVDD_RF2 36 AVDD_SW 35 L341 C341 RF_N 34 4 P1_4 TXRX_SWITCH 33 5 P1_3 RF_P 32 6 P1_2 7 DVDD 8 P1_1 AVDD_VCO 29 9 P1_0 VCO_GUARD 28 CC2430 QLP48 7x7 L321 L331 AVDD_RF1 31 λ/4 AVDD_PRE 30 10 RESET_N AVDD_CHP 27 11 P0_0 λ/4 or R261 RBIAS2 26 RREG_OUT 24 AVDD_IF1 25 L331 XTAL1 R221 C241 C191 C211 Figure 6: CC2430 Application Circuit. (Digital I/O and ADC interface not connected). Decoupling capacitors not shown. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 30 of 232 L321 Folded Dipole PCB Antenna AVDD_RREG 23 RBIAS1 22 XOSC_Q1 21 20 17 AVDD_SOC P0_6 16 19 P0_5 15 P0_7 18 P0_4 P0_3 14 P0_2 13 XOSC_Q2 12 P0_1 CC2430 Component Description Single Ended 50Ω Output Differential Antenna C191, C211 32 MHz crystal load capacitor 22 pF, 5%, NP0, 0402 22 pF, 5%, NP0, 0402 C241, C421 Load capacitance for power supply voltage regulators 220 nF, 10%, 0402 220 nF, 10%, 0402 DC block to antenna and match 5.6 pF, +/- 0.25pF, NP0, 0402 Not used 32.768 kHz crystal load capacitor (if lowfrequency crystal is needed in application) 15 pF, 5%, NP0, 0402 15 pF, 5%, NP0, 0402 L321 Discrete balun and match 8.2 nH, 5%, Monolithic/multilayer, 0402 27 nH, 5%, Monolithic/multilayer, 0402 L331 Discrete balun and match 22 nH, 5%, Monolithic/multilayer, 0402 12 nH, 5%, Monolithic/multilayer, 0402 L341 Discrete balun and match 1.8 nH, 5%, Monolithic/multilayer, 0402 Not used R221 Precision resistor for current reference generator to system-on-chip part 56 kΩ, 1%, 0402 56 kΩ, 1%, 0402 R261 Precision resistor for current reference generator to RF part 43 kΩ, 1%, 0402 43 kΩ, 1%, 0402 32 MHz Crystal 32 MHz crystal, 32 MHz crystal, ESR < 60 Ω ESR < 60 Ω 32.768 kHz crystal, Epson MC 306. 32.768 kHz crystal, Epson MC 306. C341 C431, C441 XTAL1 XTAL2 Optional 32.768 kHz watch crystal (if lowfrequency crystal is needed in application) Table 24: Overview of external components (excluding supply decoupling capacitors) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 31 of 232 CC2430 12 8051 CPU • I/O pins are configured as inputs with pull-up • The CC2430 includes an 8-bit CPU core which is an enhanced version of the industry standard 8051 core. CPU program counter is loaded with 0x0000 and program execution starts at this address • The enhanced 8051 core uses the standard 8051 instruction set. Instructions execute faster than the standard 8051 due to the following: All peripheral registers are initialized to their reset values (refer to register descriptions) • Watchdog timer is disabled This section describes the 8051 CPU core, with interrupts, memory and instruction set. 12.1 8051 CPU Introduction • One clock per instruction cycle is used as opposed to 12 clocks per instruction cycle in the standard 8051. • Wasted bus states are eliminated. Since an instruction cycle is aligned with memory fetch when possible, most of the single byte instructions are performed in a single clock cycle. In addition to the speed improvement, the enhanced 8051 core also includes architectural enhancements: • A second data pointer. • Extended 18-source interrupt unit The 8051 core is object code compatible with the industry standard 8051 microcontroller. That is, object code compiled with an industry standard 8051 compiler or assembler executes on the 8051 core and is functionally equivalent. However, because the 8051 core uses a different instruction timing than many other 8051 variants, existing code with timing loops may require modification. Also because the peripheral units such as timers and serial ports differ from those on a other 8051 cores, code which includes instructions using the peripheral units SFRs will not work correctly. 12.2 Reset The CC2430 has three reset sources. The following events generate a reset: • Forcing RESET_N input pin low • A power-on reset condition • Watchdog timer reset condition 12.3 Memory The 8051 CPU has four different memory spaces: CODE. A 16-bit read-only memory space for program memory. DATA. An 8-bit read/write data memory space, which can be directly or indirectly accessed by a single CPU instruction. The lower 128 bytes of the DATA memory space can be addressed either directly or indirectly, the upper 128 bytes only indirectly. XDATA. A 16-bit read/write data memory space access to which usually requires 4-5 CPU instruction cycles. Access to XDATA memory is also slower in hardware than DATA access as the CODE and XDATA memory spaces share a common bus on the CPU core and instruction pre-fetch from CODE can thus not be performed in parallel with XDATA accesses. SFR. A 7-bit read/write register memory space which can be directly accessed by a single CPU instruction. For SFR registers whose address is divisible by eight, each bit is also individually addressable. The four different memory spaces are distinct in the 8051 architecture, but are partly overlapping in the CC2430 to ease DMA transfers and hardware debugger operation. How the different memory spaces are mapped onto the three physical memories (flash program memory, 8 KB SRAM and hardware registers) is described in sections 12.3.1 and 12.3.2. The initial conditions after a reset are as follows: CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 32 of 232 CC2430 12.3.1 Memory Map This section gives an overview of the memory map. mapped to CODE space, by using a unified mapping of the CODE memory space. The memory map differs from the standard 8051 memory map in two important aspects, as described below. Details about mapping of all 8051 memory spaces are given in the next section. First, in order to allow the DMA controller access to all physical memory and thus allow DMA transfers between the different 8051 memory spaces, parts of SFR and CODE memory space is mapped into the XDATA memory space. Secondly, the CODE memory space mapping can be selected so that all physical memory is The memory map showing how the different physical memories are mapped into the CPU memory spaces is given in the figures on the following pages for each flash memory size option. Note that for CODE memory space, the two possible memory maps are shown; unified and non-unified mapping. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 33 of 232 CC2430 0xFF 0x00 0xFF 0x80 0xFFFF DATA memory space 0xFF00 Fast access RAM Slow access RAM / program memory in RAM SFR memory space 0xE000 0xDFFF 0xDF80 0xFFFF Hardware registers 8 KB SRAM Hardware SFR registers Hardware radio registers 0xDF00 0xDEFF Unimplemented 23 KB XDATA memory space 0x8000 0x7FFF 32 KB Flash Non-volatile program memory 32 KB 0x0000 8051 memory spaces 0x7FFF 0x0000 0x0000 CC2430-F32 XDATA memory space Physical memory Figure 7: CC2430-F32 XDATA memory space CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 34 of 232 CC2430 0xFFFF 0xFFFF Unimplemented 32 KB 32 KB flash 0x8000 0x7FFF Code memory space 0x7FFF Non-volatile program memory 32 KB 0x0000 0x0000 0x0000 8051 memory spaces Physical memory CC2430-F32 CODE memory space MEMCTR.MUNIF = 0 CODE maps to flash memory only Figure 8: CC2430-F32 Non-unified mapping of CODE Space 0xFFFF 0xFF00 Fast access RAM 8 KB SRAM Slow access RAM / program memory in RAM Hardware SFR registers Hardware radio registers 0xE000 0xDFFF 0xDF80 Hardware registers 0xDF00 0xDEFF Unimplemented 23 KB 32 KB Flash 0x8000 0x7FFF 0x7FFF Non-volatile program memory 32 KB 0x0000 0x0000 CC2430-F32 CODE memory space Physical memory MEMCTR.MUNIF = 1 CODE maps to unified memory Figure 9: CC2430-F32 Unified mapping of CODE space CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 35 of 232 CC2430 0xFF 0x00 0xFF 0x80 DATA memory space 0xFFFF 0xFF00 Slow access RAM / program memory in RAM 0xEEFF SFR memory space 0xFFFF Fast access RAM 0xE000 0xDFFF 0xDF80 Hardware registers 8 KB SRAM Hardware SFR registers Hardware radio registers 0xDF00 0xDEFF 64 KB Flash 0xFFFF XDATA memory space 0x0000 8051 memory spaces Non-volatile program memory 55 KB 0x0000 CC2430-F64 XDATA memory space 0xDEFF lower 55 KB 0x0000 Physical memory Figure 10: CC2430-F64 XDATA memory space CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 36 of 232 CC2430 64 KB flash 0xFFFF 0xFFFF 0xFFFF Non-volatile program memory 64 KB Code memory space 0x0000 0x0000 0x0000 8051 memory spaces Physical memory CC2430-F64 CODE memory space MEMCTR.MUNIF = 0 CODE maps to flash memory only Figure 11: CC2430-F64 Non-unified mapping of CODE Space 0xFFFF 0xFF00 Fast access RAM 8 KB SRAM Slow access RAM / program memory in RAM Hardware SFR registers Hardware radio registers 0xE000 0xDFFF 0xDF80 Hardware registers 0xDF00 0xDEFF 64 KB Flash Non-volatile program memory 55 KB 0xDEFF lower 55 KB 0x0000 0x0000 CC2430-F64 CODE memory space Physical memory MEMCTR.MUNIF = 1 CODE maps to unified memory Figure 12: CC2430-F64 Unified mapping of CODE space CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 37 of 232 CC2430 0xFF 0x00 0xFF 0x80 0xFFFF DATA memory space 0xFF00 Slow access RAM / program memory in RAM 0xEEFF SFR memory space Fast access RAM 0xE000 0xDFFF 0xDF80 0xFFFF Hardware registers 8 KB SRAM Hardware SFR registers Hardware radio registers 0xDF00 0xDEFF 128 KB Flash 0xFFFF XDATA memory space Non-volatile program memory 55 KB 0xDF00 0xDEFF lower 55 KB 0x0000 8051 memory spaces 0x0000 CC2430-F128 XDATA memory space 0x0000 Physical memory Figure 13: CC2430-F128 XDATA memory space CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 38 of 232 CC2430 128 KB flash 0x1FFFF 32 KB bank 3 0x18000 0x17FFF 32 KB bank 2 0xFFFF 0x10000 0xFFFF 0xFFFF Non-volatile program memory 32 KB bank 0 - bank 3 32 KB bank 1 0x8000 Code memory space 0x8000 0x7FFF 0x7FFF Non-volatile program memory 32 KB bank 0 0x0000 32 KB bank 0 0x0000 8051 memory spaces 0x0000 Physical memory CC2430-F128 CODE memory space MEMCTR.MUNIF = 0 CODE maps to flash memory only Figure 14: CC2430-F128 Non-unified mapping of CODE Space 0xFFFF 0xFF00 Fast access RAM 8 KB SRAM Slow access RAM / program memory in RAM Hardware SFR registers Hardware radio registers 0xE000 0xDFFF 0xDF80 Hardware registers 0xDF00 0xDEFF 128 KB Flash Non-volatile program memory 23 KB bank 0 - bank 3 0x8000 0x7FFF Non-volatile program memory 32 KB bank 0 0x0000 0x8000 * bank +1 - 0x20FF 23 KB bank 0-3 0x8000 * bank 0x7FFF 32 KB bank 0 0x0000 CC2430-F128 CODE memory space Physical memory MEMCTR.MUNIF = 1 CODE maps to unified memory Figure 15: CC2430-F128 Unified mapping of CODE space CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 39 of 232 CC2430 12.3.2 Memory Space This section describes the details of each CPU memory space. XDATA memory space. The XDATA memory map is given for each flash memory option in Figure 7, Figure 10 and Figure 13. For the devices with flash size above 32 KB, the lower 55 KB of the flash program memory is mapped into the address range 0x0000-0xDEFF. For the 32 KB flash size option, the 32 KB flash memory is mapped to 0x0000-0x7FFF in XDATA memory space. Access to unimplemented areas shown as shaded in the memory map gives an undefined result. For all devices, the 8 KB SRAM is mapped into address range 0xE000-0xFFFF, and the SFR registers into address range 0xDF80-0xDFFF. This allows the DMA controller and the CPU access to all the physical memories in a single unified address space. One of the ramifications of this mapping is that the first address of usable SRAM starts at address 0xE000 instead of 0x0000, and therefore compilers/assemblers must take this into consideration. In low-power modes PM2-3, with the lowest power consumption, the upper 4 KB of SRAM i.e. the memory locations in XDATA address range 0xF000-0xFFFF will retain their contents. Refer to section 13.10 on page 140 for a detailed description of power modes and SRAM data retention. CODE memory space. The CODE memory space uses either a unified or non-unified mapping to the physical memories as shown in Figure 8 - Figure 9, Figure 11 - Figure 12 and Figure 14- Figure 15. The unified mapping of the CODE memory space is similar to the XDATA mapping. Note that there is the exception that SFR registers internal to the CPU can not be accessed (see section 12.4 on page 43). With flash memory sizes above 32 KB, the lower 55 KB of flash memory is mapped to CODE memory space when unified mapping is used. This is similar to the XDATA memory space. The 8 KB SRAM is included in the CODE address space to allow program execution out of the SRAM. Note: in order to use the unified memory mapping within CODE memory space, the SFR register bit MEMCTR.MUNIF must be 1. For devices with flash memory size of 128 KB (CC2430-F128), a memory banking scheme is used for the CODE memory space. Since the physical memory size is 128 KB, the upper 32 KB area of CODE memory space is mapped to one out of the four 32 KB physical banks of flash memory through the flash bank select bits as shown in the non-unified CODE memory map. The flash bank select bits reside in the SFR register bits MEMCTR.FMAP (see section 12.12 on page 66). When unified CODE memory space mapping is used, the CODE memory is mapped to the flash memory in a similar manner to non-unified mapping, using memory banking, however 23 KB of the selected bank is available, as shown in the memory map. Access to unimplemented areas shown as shaded in the memory map gives an undefined result. DATA memory space. The 8-bit address range of DATA memory is mapped into the upper 256 bytes of the 8 KB SRAM. This area is also accessible through the CODE and XDATA memory spaces at the address range 0xFF00-0xFFFF. SFR memory space. The 128 entry hardware register area is accessed through this memory space. The SFR registers are also accessible through the XDATA/DMA address space at the address range 0xDF80-0xDFFF. Some CPUspecific SFR registers reside inside the CPU core and can only be accessed using the SFR memory space and not through the duplicate mapping into XDATA memory space. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 40 of 232 CC2430 12.3.3 Data Pointers The CC2430 has two data pointers, DPTR0 and DPTR1 to accelerate the movement of data blocks to/from memory. The data pointers are generally used to access CODE or XDATA space e.g. MOVC A,@A+DPTR MOV A,@DPTR. The data pointer select bit, bit 0 in the Data Pointer Select register DPS, chooses which data pointer shall be the active one during execution of an instruction that uses the data pointer, e.g. in one of the above instructions. The data pointers are two bytes consisting of the following SFRs: • DPTR0 – DPH0:DPL0 • DPTR1 – DPH1:DPL1 wide DPH0 (0x83) – Data Pointer 0 High Byte Bit Name Reset R/W Description 7:0 DPH0[7:0] 0 R/W Data pointer 0, high byte DPL0 (0x82) – Data Pointer 0 Low Byte Bit Name Reset R/W Description 7:0 DPL0[7:0] 0 R/W Data pointer 0, low byte DPH1 (0x85) – Data Pointer 1 High Byte Bit Name Reset R/W Description 7:0 DPH1[7:0] 0 R/W Data pointer 1, high byte DPL1 (0x84) – Data Pointer 1 Low Byte Bit Name Reset R/W Description 7:0 DPL1[7:0] 0 R/W Data pointer 1, low byte DPS (0x92) – Data Pointer Select Bit Name Reset R/W Description 7:1 - 0x00 R0 Not used 0 DPS 0 R/W Data pointer select. Selects active data pointer. 0 : DPTR0 1 : DPTR1 12.3.4 XDATA Memory Access The CC2430 provides an additional SFR register MPAGE. This register is used during instructions MOVX A,@Ri and MOVX @Ri,A. MPAGE gives the 8 most significant address bits, while the register Ri gives the 8 least significant bits. In some 8051 implementations, this type of XDATA access is performed using P2 to give the most significant address bits. Existing software may therefore have to be adapted to make use of MPAGE instead of P2. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 41 of 232 CC2430 MPAGE (0x93) – Memory Page Select Bit Name Reset R/W Description 7:0 MPAGE[7:0] 0x00 R/W Memory page, high-order bits of address in MOVX instruction CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 42 of 232 CC2430 12.4 SFR Registers Note : all internal SFRs (shown with grey background in Table 25), can only be accessed through SFR space as these registers are not mapped into XDATA space. The Special Function Registers (SFRs) control several of the features of the 8051 CPU core and/or peripherals. Many of the 8051 core SFRs are identical to the standard 8051 SFRs. However, there are additional SFRs that control features that are not available in the standard 8051. The additional SFRs are used to interface with the peripheral units and RF transceiver. Table 26 lists the additional SFRs that are not standard 8051 peripheral SFRs or CPUinternal SFRs. The additional SFRs are described in the relevant sections for each peripheral function. Table 25 shows the address to all SFRs in CC2430. The 8051 internal SFRs are shown with grey background, while the other SFRs are the SFRs specific to CC2430 . 8 bytes 80 P0 SP DPL0 DPH0 DPL1 DPH1 U0CSR PCON 87 88 TCON P0IFG P1IFG P2IFG PICTL P1IEN - P0INP 8F 90 P1 RFIM DPS MPAGE T2CMP ST0 ST1 ST2 97 98 S0CON - IEN2 S1CON T2PEROF0 T2PEROF1 T2PEROF2 - 9F A0 P2 T2OF0 T2OF1 T2OF2 T2CAPLPL T2CAPHPH T2TLD T2THD A7 A8 IEN0 IP0 - FWT FADDRL FADDRH FCTL FWDATA AF B0 - ENCDI ENCDO ENCCS ADCCON1 ADCCON2 ADCCON3 - B7 B8 IEN1 IP1 ADCL ADCH RNDL RNDH SLEEP - BF C0 IRCON U0DBUF U0BAUD T2CNF U0UCR U0GCR CLKCON MEMCTR C7 C8 - WDCTL T3CNT T3CTL T3CCTL0 T3CC0 T3CCTL1 T3CC1 CF D0 PSW DMAIRQ DMA1CFGL DMA1CFGH DMA0CFGL DMA0CFGH DMAARM DMAREQ D7 D8 TIMIF RFD T1CC0L T1CC0H T1CC1L T1CC1H T1CC2L T1CC2H DF E0 ACC RFST T1CNTL T1CNTH T1CTL T1CCTL0 T1CCTL1 T1CCTL2 E7 E8 IRCON2 RFIF T4CNT T4CTL T4CCTL0 T4CC0 T4CCTL1 T4CC1 EF F0 B PERCFG ADCCFG P0SEL P1SEL P2SEL P1INP P2INP F7 F8 U1CSR U1DBUF U1BAUD U1UCR U1GCR P0DIR P1DIR P2DIR FF Table 25: SFR address overview Table 26: CC2430 specific SFR overview Register name SFR Address Module Description ADCCON1 0xB4 ADC ADC Control 1 ADCCON2 0xB5 ADC ADC Control 2 ADCCON3 0xB6 ADC ADC Control 3 ADCL 0xBA ADC ADC Data Low ADCH 0xBB ADC ADC Data High RNDL 0xBC ADC Random Number Generator Data Low CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 43 of 232 CC2430 Register name SFR Address Module Description RNDH 0xBD ADC Random Number Generator Data High ENCDI 0xB1 AES Encryption/Decryption Input Data ENCDO 0xB2 AES Encryption/Decryption Output Data ENCCS 0xB3 AES Encryption/Decryption Control and Status DMAIRQ 0xD1 DMA DMA Interrupt Flag DMA1CFGL 0xD2 DMA DMA Channel 1-4 Configuration Address Low DMA1CFGH 0xD3 DMA DMA Channel 1-4 Configuration Address High DMA0CFGL 0xD4 DMA DMA Channel 0 Configuration Address Low DMA0CFGH 0xD5 DMA DMA Channel 0 Configuration Address High DMAARM 0xD6 DMA DMA Channel Armed DMAREQ 0xD7 DMA DMA Channel Start Request and Status FWT 0xAB FLASH Flash Write Timing FADDRL 0xAC FLASH Flash Address Low FADDRH 0xAD FLASH Flash Address High FCTL 0xAE FLASH Flash Control FWDATA 0xAF FLASH Flash Write Data P0IFG 0x89 IOC Port 0 Interrupt Status Flag P1IFG 0x8A IOC Port 1 Interrupt Status Flag P2IFG 0x8B IOC Port 2 Interrupt Status Flag PICTL 0x8C IOC Port Pins Interrupt Mask and Edge P1IEN 0x8D IOC Port 1 Interrupt Mask P0INP 0x8F IOC Port 0 Input Mode PERCFG 0xF1 IOC Peripheral I/O Control ADCCFG 0xF2 IOC ADC Input Configuration P0SEL 0xF3 IOC Port 0 Function Select P1SEL 0xF4 IOC Port 1 Function Select P2SEL 0xF5 IOC Port 2 Function Select P1INP 0xF6 IOC Port 1 Input Mode P2INP 0xF7 IOC Port 2 Input Mode P0DIR 0xFD IOC Port 0 Direction P1DIR 0xFE IOC Port 1 Direction P2DIR 0xFF IOC Port 2 Direction MEMCTR 0xC7 MEMORY Memory System Control RFIM 0x91 RF RF Interrupt Mask RFD 0xD9 RF RF Data RFST 0xE1 RF RF Command Strobe RFIF 0xE9 RF RF Interrupt flags ST0 0x95 ST Sleep Timer 0 ST1 0x96 ST Sleep Timer 1 ST2 0x97 ST Sleep Timer 2 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 44 of 232 CC2430 Register name SFR Address Module Description SLEEP 0xBE PMC Sleep Mode Control CLKCON 0xC6 PMC Clock Control T1CC0L 0xDA Timer1 Timer 1 Channel 0 Capture/Compare Value Low T1CC0H 0xDB Timer1 Timer 1 Channel 0 Capture/Compare Value High T1CC1L 0xDC Timer1 Timer 1 Channel 1 Capture/Compare Value Low T1CC1H 0xDD Timer1 Timer 1 Channel 1 Capture/Compare Value High T1CC2L 0xDE Timer1 Timer 1 Channel 2 Capture/Compare Value Low T1CC2H 0xDF Timer1 Timer 1 Channel 2 Capture/Compare Value High T1CNTL 0xE2 Timer1 Timer 1 Counter Low T1CNTH 0xE3 Timer1 Timer 1 Counter High T1CTL 0xE4 Timer1 Timer 1 Control and Status T1CCTL0 0xE5 Timer1 Timer 1 Channel 0 Capture/Compare Control T1CCTL1 0xE6 Timer1 Timer 1 Channel 1 Capture/Compare Control T1CCTL2 0xE7 Timer1 Timer 1 Channel 2 Capture/Compare Control T2CMP 0x94 Timer2 Timer 2 Compare Value T2PEROF0 0x9C Timer2 Timer 2 Overflow Count Compare 0 T2PEROF1 0x9D Timer2 Timer 2 Overflow Count Compare 1 T2PEROF2 0x9E Timer2 Timer 2 Overflow Count Compare 2 T2OF0 0xA1 Timer2 Timer 2 Overflow Count 0 T2OF1 0xA2 Timer2 Timer 2 Overflow Count 1 T2OF2 0xA3 Timer2 Timer 2 Overflow Count 2 T2CAPLPL 0xA4 Timer2 Timer 2 Timer Period Low T2CAPHPH 0xA5 Timer2 Timer 2 Timer Period High T2TLD 0xA6 Timer2 Timer 2 Timer Value Low T2THD 0xA7 Timer2 Timer 2 Timer Value High T2CNF 0xC3 Timer2 Timer 2 Configuration T3CNT 0xCA Timer3 Timer 3 Counter T3CTL 0xCB Timer3 Timer 3 Control T3CCTL0 0xCC Timer3 Timer 3 Channel 0 Capture/Compare Control T3CC0 0xCD Timer3 Timer 3 Channel 0 Capture/Compare Value T3CCTL1 0xCE Timer3 Timer 3 Channel 1 Capture/Compare Control T3CC1 0xCF Timer3 Timer 3 Channel 1 Capture/Compare Value T4CNT 0xEA Timer4 Timer 4 Counter T4CTL 0xEB Timer4 Timer 4 Control T4CCTL0 0xEC Timer4 Timer 4 Channel 0 Capture/Compare Control T4CC0 0xED Timer4 Timer 4 Channel 0 Capture/Compare Value T4CCTL1 0xEE Timer4 Timer 4 Channel 1 Capture/Compare Control T4CC1 0xEF Timer4 Timer 4 Channel 1 Capture/Compare Value TIMIF 0xD8 TMINT Timers 1/3/4 Joint Interrupt Mask/Flags U0CSR 0x86 USART0 USART 0 Control and Status CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 45 of 232 CC2430 Register name SFR Address Module Description U0DBUF 0xC1 USART0 USART 0 Receive/Transmit Data Buffer U0BAUD 0xC2 USART0 USART 0 Baud Rate Control U0UCR 0xC4 USART0 USART 0 UART Control U0GCR 0xC5 USART0 USART 0 Generic Control U1CSR 0xF8 USART1 USART 1 Control and Status U1DBUF 0xF9 USART1 USART 1 Receive/Transmit Data Buffer U1BAUD 0xFA USART1 USART 1 Baud Rate Control U1UCR 0xFB USART1 USART 1 UART Control U1GCR 0xFC USART1 USART 1 Generic Control WDCTL 0xC9 WDT Watchdog Timer Control 12.5 CPU Registers This section describes the internal registers found in the CPU. 12.5.1 Registers R0-R7 The CC2430 provides four register banks of eight registers each. These register banks are mapped in the DATA memory space at addresses 0x00-0x07, 0x08-0x0F, 0x10-0x17 and 0x18-0x1F. Each register bank contains the eight 8-bit register R0-R7. The register bank to be used is selected through the Program Status Word PSW.RS[1:0]. 12.5.2 Program Status Word The Program Status Word (PSW) contains several bits that show the current state of the CPU. The Program Status Word is accessible as an SFR and it is bit-addressable. PSW is shown below and contains the Carry flag, Auxiliary Carry flag for BCD operations, Register Select bits, Overflow flag and Parity flag. Two bits in PSW are uncommitted and can be used as user-defined status flags . CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 46 of 232 CC2430 PSW (0xD0) – Program Status Word Bit Name Reset R/W Description 7 CY 0 R/W Carry flag. Set to 1 when the last arithmetic operation resulted in a carry (during addition) or borrow (during subtraction), otherwise cleared to 0 by all arithmetic operations. 6 AC 0 R/W Auxiliary carry flag for BCD operations. Set to 1 when the last arithmetic operation resulted in a carry into (during addition) or borrow from (during subtraction) the high order nibble, otherwise cleared to 0 by all arithmetic operations. 5 F0 0 R/W User-defined, bit-addressable 4:3 RS[1:0] 00 R/W Register bank select bits. Selects which set of R7-R0 registers to use from four possible register banks in DATA space. 00 Bank 0, 0x00 – 0x07 01 Bank 1, 0x08 – 0x0F 10 Bank 2, 0x10 – 0x17 11 Bank 3, 0x18 – 0x1F 2 OV 0 R/W Overflow flag, set by arithmetic operations. Set to 1 when the last arithmetic operation resulted in a carry (addition), borrow (subtraction), or overflow (multiply or divide). Otherwise, the bit is cleared to 0 by all arithmetic operations. 1 F1 0 R/W User-defined, bit-addressable 0 P 0 R/W Parity flag, parity of accumulator set by hardware to 1 if it contains an odd number of 1’s, otherwise it is cleared to 0 12.5.3 Accumulator ACC is the accumulator. This is the source and destination of most arithmetic instructions, data transfers and other instructions. The mnemonic for the accumulator (in instructions involving the accumulator) refers to A instead of ACC. ACC (0xE0) – Accumulator Bit Name Reset R/W Description 7:0 ACC[7:0] 0x00 R/W Accumulator 12.5.4 B Register The B register is used as the second 8-bit argument during execution of multiply and divide instructions. When not used for these purposes it may be used as a scratch-pad register to hold temporary data. B (0xF0) – B Register Bit Name Reset R/W Description 7:0 B[7:0] 0x00 R/W B register. Used in MUL/DIV instructions. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 47 of 232 CC2430 12.5.5 Stack Pointer The stack resides in DATA memory space and grows upwards. The PUSH instruction first increments the Stack Pointer (SP) and then copies the byte into the stack. The Stack Pointer is initialized to 0x07 after a reset and it is incremented once to start from location 0x08 which is the first register (R0) of the second register bank. Thus, in order to use more than one register bank, the SP should be initialized to a different location not used for data storage. SP (0x81) – Stack Pointer Bit Name Reset R/W Description 7:0 SP[7:0] 0x07 R/W Stack Pointer • addr16 – 16-bit destination address. Used by LCALL and LJMP. A branch can be anywhere within the 64 KB CODE memory space. • addr11 – 11-bit destination address. Used by ACALL and AJMP. The branch will be within the same 2 KB page of program memory as the first byte of the following instruction. • rel – Signed (two’s complement) 8-bit offset byte. Used by SJMP and all conditional jumps. Range is –128 to +127 bytes relative to first byte of the following instruction. • bit – direct addressed bit in DATA area or SFR. 12.6 Instruction Set Summary The 8051 instruction set is summarized in Table 27. All mnemonics copyrighted © Intel Corporation, 1980. The following conventions are used in the instruction set summary: • Rn – Register R7-R0 of the currently selected register bank. • direct – 8-bit internal data location’s address. This can be DATA area (0x00 – 0x7F) or SFR area (0x80 – 0xFF). • @Ri – 8-bit internal data location, DATA area (0x00 – 0xFF) addressed indirectly through register R1 or R0. • #data – 8-bit instruction. • #data16 – 16-bit constant included in instruction. constant included in The instructions that affect CPU flag settings located in PSW are listed in Table 28 on page 52. Note that operations on the PSW register or bits in PSW will also affect the flag settings. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 48 of 232 CC2430 Table 27: Instruction Set Summary Mnemonic Description Hex Opcode Bytes Cycles Arithmetic operations ADD A,Rn Add register to accumulator 28-2F 1 1 ADD A,direct Add direct byte to accumulator 25 2 2 ADD A,@Ri Add indirect RAM to accumulator 26-27 1 2 ADD A,#data Add immediate data to accumulator 24 2 2 ADDC A,Rn Add register to accumulator with carry flag 38-3F 1 1 ADDC A,direct Add direct byte to A with carry flag 35 2 2 ADDC A,@Ri Add indirect RAM to A with carry flag 36-37 1 2 ADDC A,#data Add immediate data to A with carry flag 34 2 2 SUBB A,Rn Subtract register from A with borrow 98-9F 1 1 SUBB A,direct Subtract direct byte from A with borrow 95 2 2 SUBB A,@Ri Subtract indirect RAM from A with borrow 96-97 1 2 SUBB A,#data Subtract immediate data from A with borrow 94 2 2 INC A Increment accumulator 04 1 1 INC Rn Increment register 08-0F 1 2 INC direct Increment direct byte 05 2 3 INC @Ri Increment indirect RAM 06-07 1 3 INC DPTR Increment data pointer A3 1 1 DEC A Decrement accumulator 14 1 1 DEC Rn Decrement register 18-1F 1 2 DEC direct Decrement direct byte 15 2 3 DEC @Ri Decrement indirect RAM 16-17 1 3 MUL AB Multiply A and B A4 1 5 DIV Divide A by B 84 1 5 DA A Decimal adjust accumulator D4 1 1 Logical operations ANL A,Rn AND register to accumulator 58-5F 1 1 ANL A,direct AND direct byte to accumulator 55 2 2 ANL A,@Ri AND indirect RAM to accumulator 56-57 1 2 ANL A,#data AND immediate data to accumulator 54 2 2 ANL direct,A AND accumulator to direct byte 52 2 3 ANL direct,#data AND immediate data to direct byte 53 3 4 ORL A,Rn OR register to accumulator 48-4F 1 1 ORL A,direct OR direct byte to accumulator 45 2 2 ORL A,@Ri OR indirect RAM to accumulator 46-47 1 2 ORL A,#data OR immediate data to accumulator 44 2 2 ORL direct,A OR accumulator to direct byte 42 2 3 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 49 of 232 CC2430 Mnemonic Description Hex Opcode Bytes Cycles ORL direct,#data OR immediate data to direct byte 43 3 4 XRL A,Rn Exclusive OR register to accumulator 68-6F 1 1 XRL A,direct Exclusive OR direct byte to accumulator 65 2 2 XRL A,@Ri Exclusive OR indirect RAM to accumulator 66-67 1 2 XRL A,#data Exclusive OR immediate data to accumulator 64 2 2 XRL direct,A Exclusive OR accumulator to direct byte 62 2 3 XRL direct,#data Exclusive OR immediate data to direct byte 63 3 4 CLR A Clear accumulator E4 1 1 CPL A Complement accumulator F4 1 1 RL A Rotate accumulator left 23 1 1 RLC A Rotate accumulator left through carry 33 1 1 RR A Rotate accumulator right 03 1 1 RRC A Rotate accumulator right through carry 13 1 1 SWAP A Swap nibbles within the accumulator C4 1 1 MOV A,Rn Move register to accumulator E8-EF 1 1 MOV A,direct Move direct byte to accumulator E5 2 2 MOV A,@Ri Move indirect RAM to accumulator E6-E7 1 2 MOV A,#data Move immediate data to accumulator 74 2 2 MOV Rn,A Move accumulator to register F8-FF 1 2 MOV Rn,direct Move direct byte to register A8-AF 2 4 MOV Rn,#data Move immediate data to register 78-7F 2 2 MOV direct,A Move accumulator to direct byte F5 2 3 MOV direct,Rn Move register to direct byte 88-8F 2 3 MOV direct1,direct2 Move direct byte to direct byte 85 3 4 MOV direct,@Ri Move indirect RAM to direct byte 86-87 2 4 MOV direct,#data Move immediate data to direct byte 75 3 3 MOV @Ri,A Move accumulator to indirect RAM F6-F7 1 3 MOV @Ri,direct Move direct byte to indirect RAM A6-A7 2 5 MOV @Ri,#data Move immediate data to indirect RAM 76-77 2 3 MOV DPTR,#data16 Load data pointer with a 16-bit constant 90 3 3 MOVC A,@A+DPTR Move code byte relative to DPTR to accumulator 93 1 3 MOVC A,@A+PC Move code byte relative to PC to accumulator 83 1 3 MOVX A,@Ri Move external RAM (8-bit address) to A E2-E3 1 3-10 MOVX A,@DPTR Move external RAM (16-bit address) to A E0 1 3-10 MOVX @Ri,A Move A to external RAM (8-bit address) F2-F3 1 4-11 MOVX @DPTR,A Move A to external RAM (16-bit address) F0 1 4-11 PUSH direct Push direct byte onto stack C0 2 4 POP direct Pop direct byte from stack D0 2 3 XCH A,Rn Exchange register with accumulator C8-CF 1 2 Data transfers CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 50 of 232 CC2430 Mnemonic Description Hex Opcode Bytes Cycles XCH A,direct Exchange direct byte with accumulator C5 2 3 XCH A,@Ri Exchange indirect RAM with accumulator C6-C7 1 3 XCHD A,@Ri Exchange low-order nibble indirect. RAM with A D6-D7 1 3 Program branching ACALL addr11 Absolute subroutine call xxx11 2 6 LCALL addr16 Long subroutine call 12 3 6 RET Return from subroutine 22 1 4 RETI Return from interrupt 32 1 4 AJMP addr11 Absolute jump xxx01 2 3 LJMP addr16 Long jump 02 3 4 SJMP rel Short jump (relative address) 80 2 3 JMP @A+DPTR Jump indirect relative to the DPTR 73 1 2 JZ rel Jump if accumulator is zero 60 2 3 JNZ rel Jump if accumulator is not zero 70 2 3 JC rel Jump if carry flag is set 40 2 3 JNC Jump if carry flag is not set 50 2 3 JB bit,rel Jump if direct bit is set 20 3 4 JNB bit,rel Jump if direct bit is not set 30 3 4 JBC bit,direct rel Jump if direct bit is set and clear bit 10 3 4 CJNE A,direct rel Compare direct byte to A and jump if not equal B5 3 4 CJNE A,#data rel Compare immediate to A and jump if not equal B4 3 4 CJNE Rn,#data rel Compare immediate to reg. and jump if not equal B8-BF 3 4 CJNE @Ri,#data rel Compare immediate to indirect and jump if not equal B6-B7 3 4 DJNZ Rn,rel Decrement register and jump if not zero D8-DF 2 3 DJNZ direct,rel Decrement direct byte and jump if not zero D5 3 4 NOP No operation 00 1 1 Boolean variable operations CLR C Clear carry flag C3 1 1 CLR bit Clear direct bit C2 2 3 SETB C Set carry flag D3 1 1 SETB bit Set direct bit D2 2 3 CPL C Complement carry flag B3 1 1 CPL bit Complement direct bit B2 2 3 ANL C,bit AND direct bit to carry flag 82 2 2 ANL C,/bit AND complement of direct bit to carry B0 2 2 ORL C,bit OR direct bit to carry flag 72 2 2 ORL C,/bit OR complement of direct bit to carry A0 2 2 MOV C,bit Move direct bit to carry flag A2 2 2 MOV bit,C Move carry flag to direct bit 92 2 3 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 51 of 232 CC2430 Instruction CY OV AC ADD x x x ADDC x x x SUBB x x x MUL 0 x - DIV 0 x - DA x - - RRC x - - RLC x - - SETB C 1 - - CLR C x - - CPL C x - - ANL C,bit x - - ANL C,/bit x - - ORL C,bit x - - ORL C,/bit x - - MOV C,bit x - - CJNE x - - “0”=set to 0, “1”=set to 1, “x”=set to 0/1, “-“=not affected Table 28: Instructions that affect flag settings 12.7 Interrupts The CPU has 18 interrupt sources. Each source has its own request flag located in a set of Interrupt Flag SFR registers. Each interrupt requested by the corresponding flag can be individually enabled or disabled. The definitions of the interrupt sources and the interrupt vectors are given in Table 29. Note that some peripherals have several events that can generate the interrupt request associated with that peripheral. This applies to Port 0, Port 1, Port 2, DMA, Timer 1, Timer 3 , Timer 4 and Radio. These peripherals have interrupt mask bits for each internal interrupt source in the corresponding SFR registers. In order to use any of the interrupts in the CC2430 , the following steps must be taken The interrupts are grouped into a set of priority level groups with selectable priority levels. 1. Enable global interrupt by setting the EA bit in IEN0 to 1 The interrupt enable registers are described in section 12.7.1 and the interrupt priority settings are described in section 12.7.3 on page 60. 2. Set the corresponding individual, interrupt enable bit in the IEN0, IEN1 or IEN2 registers to 1. 12.7.1 Interrupt Masking 3. Set individual interrupt enable bit in the peripherals SFR register, if any. Each interrupt can be individually enabled or disabled by the interrupt enable bits in the Interrupt Enable SFRs IEN0, IEN1 and IEN2. The Interrupt Enable SFRs are described below and summarized in Table 29. 4. Begin the interrupt service routine at the corresponding vector address of that interrupt. See Table 29 for addresses. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 52 of 232 CC2430 Interrupt number Description Interrupt name Interrupt Vector 0 Interrupt Mask RF TX FIFO underflow and RX FIFO overflow. RFERR 03h 1 ADC end of conversion ADC 0Bh IEN0.ADCIE TCON.ADCIF 2 USART0 RX complete URX0 13h IEN0.URX0IE TCON.URX0IF 3 USART1 RX complete URX1 1Bh IEN0.URX1IE TCON.URX1IF 4 AES encryption/decryption complete ENC 23h IEN0.ENCIE S0CON.ENCIF 5 Sleep Timer compare ST 2Bh IEN0.STIE IRCON.STIF 6 Port 2 inputs P2INT 33h IEN2.P2IE IRCON2.P2IF 7 USART0 TX complete UTX0 3Bh IEN2.UTX0IE IRCON2.UTX0IF 8 DMA transfer complete DMA 43h IEN1.DMAIE IRCON.DMAIF 9 Timer 1 (16-bit) capture/compare/overflow T1 4Bh IEN1.T1IE IRCON.T1IF 10 Timer 2 (MAC Timer) T2 53h IEN1.T2IE IRCON.T2IF 11 Timer 3 (8-bit) capture/compare/overflow T3 5Bh IEN1.T3IE IRCON.T3IF 12 Timer 4 (8-bit) capture/compare/overflow T4 63h IEN1.T4IE IRCON.T4IF 13 Port 0 inputs P0INT 6Bh IEN1.P0IE IRCON.P0IF 14 USART1 TX complete UTX1 73h IEN2.UTX1IE IRCON2.UTX1IF 15 Port 1 inputs P1INT 7Bh IEN2.P1IE IRCON2.P1IF 16 RF general interrupts RF 83h IEN2.RFIE S1CON.RFIF 17 Watchdog overflow in timer mode WDT 8Bh IEN2.WDTIE IRCON2.WDTIF IEN0.RFERRIE Interrupt Flag TCON.RFERRIF Table 29: Interrupts Overview CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 53 of 232 CC2430 IEN0 (0xA8) – Interrupt Enable 0 Bit Name Reset R/W Description 7 EA 0 R/W Disables all interrupts. 0 No interrupt will be acknowledged 1 Each interrupt source is individually enabled or disabled by setting its corresponding enable bit 6 - 0 R0 Not used. Read as 0 5 STIE 0 R/W STIE – Sleep Timer interrupt enable 4 3 2 1 0 ENCIE URX1IE URX0IE ADCIE RFERRIE 0 0 0 0 0 R/W R/W R/W R/W R/W 0 Interrupt disabled 1 Interrupt enabled ENCIE – AES encryption/decryption interrupt enable 0 Interrupt disabled 1 Interrupt enabled URX1IE – USART1 RX interrupt enable 0 Interrupt disabled 1 Interrupt enabled URX0IE - USART0 RX interrupt enable 0 Interrupt disabled 1 Interrupt enabled ADCIE – ADC interrupt enable 0 Interrupt disabled 1 Interrupt enabled RFERRIE – RF TX/RX FIFO interrupt enable 0 Interrupt disabled 1 Interrupt enabled CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 54 of 232 CC2430 IEN1 (0xB8) – Interrupt Enable 1 Bit Name Reset R/W Description 7:6 - 00 R0 Not used. Read as 0 5 P0IE 0 R/W P0IE – Port 0 interrupt enable 4 3 2 1 0 T4IE T3IE T2IE T1IE DMAIE 0 0 0 0 0 R/W R/W R/W R/W R/W 0 Interrupt disabled 1 Interrupt enabled T4IE - Timer 4 interrupt enable 0 Interrupt disabled 1 Interrupt enabled T3IE - Timer 3 interrupt enable 0 Interrupt disabled 1 Interrupt enabled T2IE – Timer 2 interrupt enable 0 Interrupt disabled 1 Interrupt enabled T1IE – Timer 1 interrupt enable 0 Interrupt disabled 1 Interrupt enabled DMAIE – DMA transfer interrupt enable 0 Interrupt disabled 1 Interrupt enabled CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 55 of 232 CC2430 IEN2 (0x9A) – Interrupt Enable 2 Bit Name Reset R/W Description 7:6 - 00 R0 Not used. Read as 0 5 WDTIE 0 R/W WDTIE – Watchdog timer interrupt enable 4 3 2 1 0 P1IE UTX1IE UTX0IE P2IE RFIE 0 0 0 0 0 R/W R/W R/W R/W R/W 0 Interrupt disabled 1 Interrupt enabled P1IE– Port 1 interrupt enable 0 Interrupt disabled 1 Interrupt enabled UTX1IE – USART1 TX interrupt enable 0 Interrupt disabled 1 Interrupt enabled UTX0IE - USART0 TX interrupt enable 0 Interrupt disabled 1 Interrupt enabled P2IE – Port 2 interrupt enable 0 Interrupt disabled 1 Interrupt enabled RFIE – RF general interrupt enable 0 Interrupt disabled 1 Interrupt enabled 12.7.2 Interrupt Processing When an interrupt occurs, the CPU will vector to the interrupt vector address as shown in Table 29. Once an interrupt service has begun, it can be interrupted only by a higher priority interrupt. The interrupt service is terminated by a RETI (return from interrupt instruction). When an RETI is performed, the CPU will return to the instruction that would have been next when the interrupt occurred. When the interrupt condition occurs, the CPU will also indicate this by setting an interrupt flag bit in the interrupt flag registers. This bit is set regardless of whether the interrupt is enabled or disabled. If the interrupt is enabled when an interrupt flag is set, then on the next instruction cycle the interrupt will be acknowledged by hardware forcing an LCALL to the appropriate vector address. Interrupt response will require a varying amount of time depending on the state of the CPU when the interrupt occurs. If the CPU is performing an interrupt service with equal or greater priority, the new interrupt will be pending until it becomes the interrupt with highest priority. In other cases, the response time depends on current instruction. The fastest possible response to an interrupt is seven machine cycles. This includes one machine cycle for detecting the interrupt and six cycles to perform the LCALL. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 56 of 232 CC2430 TCON (0x88) – Interrupt Flags Bit Name Reset 7 URX1IF 0 R/W Description R/W URX1IF – USART1 RX interrupt flag. Set to 1 when USART1 RX interrupt occurs and cleared when CPU vectors to the interrupt service routine. H0 0 Interrupt not pending 1 Interrupt pending 6 - 0 R/W Not used 5 ADCIF 0 R/W ADCIF – ADC interrupt flag. Set to 1 when ADC interrupt occurs and cleared when CPU vectors to the interrupt service routine. H0 0 Interrupt not pending 1 Interrupt pending 4 - 0 R/W Not used 3 URX0IF 0 R/W URX0IF – USART0 RX interrupt flag. Set to 1 when USART0 interrupt occurs and cleared when CPU vectors to the interrupt service routine. H0 0 Interrupt not pending 1 Interrupt pending 2 IT1 1 R/W Reserved. Must always be set to 1. 1 RFERRIF 0 R/W RFERR – RF TX/RX FIFO interrupt flag. Set to 1 when RFERR interrupt occurs and cleared when CPU vectors to the interrupt service routine. H0 0 IT0 1 R/W 0 Interrupt not pending 1 Interrupt pending Reserved. Must always be set to 1. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 57 of 232 CC2430 S0CON (0x98) – Interrupt Flags 2 Bit Name Reset R/W Description 7:2 - 0x00 R/W Not used 1 ENCIF_1 0 R/W ENCIF – AES interrupt. ENC has two interrupt flags, ENCIF_1 and ENCIF_0. Setting one of these flags will request interrupt service. Both flags are set when the AES co-processor requests the interrupt. 0 ENCIF_0 0 R/W 0 Interrupt not pending 1 Interrupt pending ENCIF – AES interrupt. ENC has two interrupt flags, ENCIF_1 and ENCIF_0. Setting one of these flags will request interrupt service. Both flags are set when the AES co-processor requests the interrupt. 0 Interrupt not pending 1 Interrupt pending S1CON (0x9B) – Interrupt Flags 3 Bit Name Reset R/W Description 7:2 - 0x00 R/W Not used 1 RFIF_1 0 R/W RFIF – RF general interrupt. RF has two interrupt flags, RFIF_1 and RFIF_0. Setting one of these flags will request interrupt service. Both flags are set when the radio requests the interrupt. 0 RFIF_0 0 R/W 0 Interrupt not pending 1 Interrupt pending RFIF – RF general interrupt. RF has two interrupt flags, RFIF_1 and RFIF_0. Setting one of these flags will request interrupt service. Both flags are set when the radio requests the interrupt. 0 Interrupt not pending 1 Interrupt pending CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 58 of 232 CC2430 IRCON (0xC0) – Interrupt Flags 4 Bit Name Reset R/W Description 7 STIF 0 R/W STIF – Sleep timer interrupt flag 6 5 4 P0IF 0 R/W P0IF – Port 0 interrupt flag T4IF 0 R/W T3IF 0 R/W T2IF 0 R/W T1IF 0 R/W H0 0 Interrupt pending Not used H0 1 1 R/W H0 2 Interrupt not pending 0 H0 3 0 DMAIF 0 R/W 0 Interrupt not pending 1 Interrupt pending T4IF – Timer 4 interrupt flag. Set to 1 when Timer 4 interrupt occurs and cleared when CPU vectors to the interrupt service routine. 0 Interrupt not pending 1 Interrupt pending T3IF – Timer 3 interrupt flag. Set to 1 when Timer 3 interrupt occurs and cleared when CPU vectors to the interrupt service routine. 0 Interrupt not pending 1 Interrupt pending T2IF – Timer 2 interrupt flag. Set to 1 when Timer 2 interrupt occurs and cleared when CPU vectors to the interrupt service routine. 0 Interrupt not pending 1 Interrupt pending T1IF – Timer 1 interrupt flag. Set to 1 when Timer 1 interrupt occurs and cleared when CPU vectors to the interrupt service routine. 0 Interrupt not pending 1 Interrupt pending DMAIF – DMA complete interrupt flag. 0 Interrupt not pending 1 Interrupt pending CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 59 of 232 CC2430 IRCON2 (0xE8) – Interrupt Flags 5 Bit Name Reset R/W Description 7:5 - 00 R/W Not used 4 WDTIF 0 R/W WDTIF – Watchdog timer interrupt flag. 3 2 1 0 P1IF UTX1IF UTX0IF P2IF 0 0 0 0 R/W R/W R/W R/W 0 Interrupt not pending 1 Interrupt pending P1IF – Port 1 interrupt flag. 0 Interrupt not pending 1 Interrupt pending UTX1IF – USART1 TX interrupt flag. 0 Interrupt not pending 1 Interrupt pending UTX0IF – USART0 TX interrupt flag. 0 Interrupt not pending 1 Interrupt pending P2IF – Port2 interrupt flag. 0 Interrupt not pending 1 Interrupt pending 12.7.3 Interrupt Priority The interrupts are grouped into six interrupt priority groups and the priority for each group is set by the registers IP0 and IP1. In order to assign a higher priority to an interrupt, i.e. to its interrupt group, the corresponding bits in IP0 and IP1 must be set as shown in Table 30 on page 61. While an interrupt service request is in progress, it cannot be interrupted by a lower or same level interrupt. In the case when same priority simultaneously, the Table 32 is used to request. interrupt requests of the level are received polling sequence shown in resolve the priority of each The interrupt priority groups with assigned interrupt sources are shown in Table 31. Each group is assigned one of four priority levels. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 60 of 232 CC2430 IP1 (0xB9) – Interrupt Priority 1 Bit Name Reset R/W Description 7:6 - 00 R/W Not used. 5 IP1_5 0 R/W Interrupt group 5, priority control bit 1, refer to Table 30 4 IP1_4 0 R/W Interrupt group 4, priority control bit 1, refer to Table 30 3 IP1_3 0 R/W Interrupt group 3, priority control bit 1, refer to Table 30 2 IP1_2 0 R/W Interrupt group 2, priority control bit 1, refer to Table 30 1 IP1_1 0 R/W Interrupt group 1, priority control bit 1, refer to Table 30 0 IP1_0 0 R/W Interrupt group 0, priority control bit 1, refer to Table 30 IP0 (0xA9) – Interrupt Priority 0 Bit Name Reset R/W Description 7:6 - 00 R/W Not used. 5 IP0_5 0 R/W Interrupt group 5, priority control bit 0, refer to Table 30 4 IP0_4 0 R/W Interrupt group 4, priority control bit 0, refer to Table 30 3 IP0_3 0 R/W Interrupt group 3, priority control bit 0, refer to Table 30 2 IP0_2 0 R/W Interrupt group 2, priority control bit 0, refer to Table 30 1 IP0_1 0 R/W Interrupt group 1, priority control bit 0, refer to Table 30 0 IP0_0 0 R/W Interrupt group 0, priority control bit 0, refer to Table 30 IP1_x IP0_x Priority Level 0 0 0 – lowest 0 1 1 1 0 2 1 1 3 – highest Table 30: Priority Level Setting Group Interrupts IP0 RFERR RF DMA IP1 ADC P2INT T1 IP2 URX0 UTX0 T2 IP3 URX1 UTX1 T3 IP4 ENC P1INT T4 IP5 ST WDT P0INT Table 31: Interrupt Priority Groups CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 61 of 232 CC2430 Interrupt number Interrupt name 0 RFERR 16 RF 8 DMA 1 ADC 9 T1 2 URX0 10 T2 3 URX1 11 T3 4 ENC 12 T4 5 ST 13 P0INT 6 P2INT 7 UTX0 14 UTX1 15 P1INT 17 WDT Polling sequence Table 32: Interrupt Polling Sequence 12.8 Oscillators and clocks The CC2430 has one internal system clock. The source for the system clock can be either a 16 MHz high-frequency RC oscillator or a 32 MHz crystal oscillator. Clock control is performed using the CLKCON SFR register described in section 13.10. The system clock also feeds all peripherals (as described in section 6). The choice of oscillator allows a trade-off between high-accuracy in the case of the crystal oscillator and low power consumption when the high-frequency RC oscillator is used. Note that operation of the RF transceiver requires that the crystal oscillator is used. 8051 12.9 Debug Interface The CC2430 includes a debug interface that provides a two-wire interface to an on-chip debug module. The debug interface allows programming of the on-chip flash and it provides access to memory and register contents and debug features such as breakpoints, single-stepping and register modification. The debug interface uses the I/O pins P2_1 as Debug Data and P2_2 as Debug Clock during Debug mode. These I/O pins can be used as general purpose I/O only while the device is not in Debug mode. Thus the debug interface does not interfere with any peripheral I/O pins. 12.9.1 Debug Mode Debug mode is entered by forcing two rising edge transitions on pin P2_2 (Debug Clock) while the RESET_N input is held low. While in Debug mode pin P2_1 is the Debug Data bi-directional pin and P2_2 is the Debug Clock input pin. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 62 of 232 CC2430 12.9.2 Debug Communication The debug interface uses an SPI-like two-wire interface consisting of the Debug Data (P2_1) and Debug Clock (P2_2) pins. Data is driven on the bi-directional Debug Data pin at the positive edge of Debug Clock and data is sampled on the negative edge of this clock. Debug commands are sent by an external host and consist of 1 to 4 output bytes (including command byte) from the host and an optional input byte read by the host. Figure 16 shows a timing diagram of data on the debug interface. The first byte of the debug command is a command byte and is encoded as follows: • bits 7 to 3 : instruction code • bits 2 : return input byte to host byte when high • bits 1 to 0 : number of output bytes from host following instruction code byte P2_2 P2_1 command first data byte second data byte host input byte Figure 16: Debug interface timing diagram 12.9.3 Debug Commands 12.9.5 Debug Configuration The debug commands are shown in Table 33. Some of the debug commands are described in further detail in the following sections. The commands WR_CONFIG and RD_CONFIG are used to access the debug configuration data byte. The format and description of this configuration data is shown in Table 34. 12.9.4 Debug Lock Bit For software code security the Debug Interface may be locked. When the Debug Lock bit , DBGLOCK, is set (see section 13.14.3) all debug commands except CHIP_ERASE, READ_STATUS and GET_CHIP_ID are disabled and will not function. The status of the Debug Lock bit can read using the READ_STATUS command (see section 12.9.6). Note that when the Debug Lock bit has been set, and before reset of the device, the Debug Lock value returned by READ_STATUS will only represent the actual Debug Lock value once either a HALT, RESUME, DEBUG_INSTR or STEP command has been attempted executed. 12.9.6 Debug Status A Debug status byte is read using the READ_STATUS command. The format and description of this debug status is shown in Table 35. The READ_STATUS command is used e.g. for polling the status of flash chip erase after a CHIP_ERASE command or oscillator stable status required for debug commands HALT, RESUME, DEBUG_INSTR, STEP_REPLACE and STEP_INSTR. The CHIP_ERASE command is used to clear the Debug Lock bit. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 63 of 232 CC2430 Command Instruction code Description CHIP_ERASE 0001 0x00 Perform flash chip erase (mass erase) and clear lock bits. If any other command, except READ_STATUS, is issued, then the use of CHIP_ERASE is disabled. WR_CONFIG 0001 1x01 Write configuration data. Refer to Table 34 RD_CONFIG 0010 0100 Read configuration data. Returns value set by WR_CONFIG command. 0010 1000 Return value of 16-bit program counter. Returns 2 bytes regardless of value of bit 2 in instruction code READ_STATUS 0011 0x00 Read status byte. Refer to Table 35 SET_HW_BRKPNT 0011 1x11 Set hardware breakpoint HALT 0100 0100 Halt CPU operation RESUME 0100 1100 Resume CPU operation. The CPU must be in halted state for this command to be run. DEBUG_INSTR 0101 01xx Run debug instruction. The supplied instruction will be executed by the CPU without incrementing the program counter. The CPU must be in halted state for this command to be run. STEP_INSTR 0101 1100 Step CPU instruction. The CPU will execute the next instruction from program memory and increment the program counter after execution. The CPU must be in halted state for this command to be run. STEP_REPLACE 0110 01xx Step and replace CPU instruction. The supplied instruction will be executed by the CPU instead of the next instruction in program memory. The program counter will be incremented after execution. The CPU must be in halted state for this command to be run. GET_CHIP_ID 0110 1000 Return value of 16-bit chip ID and version number. Returns 2 bytes regardless of value of bit 2 of instruction code GET_PC Table 33: Debug Commands Bit Name Description 7-4 - Not used 3 timers_off Disable timers. Disable timer operation 0 Do not disable timers 1 Disable timers 2 DMA pause DMA_pause 0 Enable DMA transfers 1 Pause all DMA transfers 1 Suspend timers. Timer operation is suspended for debug instructions and if a step instruction is a branch. If not suspended these instructions would result an extra timer count during the clock cycle in which the branch is executed timer_suspend 0 Do not suspend timers 1 Suspend timers 0 sel_flash_info_page Select flash information page 0 Select flash main page 1 Select flash information page Table 34: Debug Configuration CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 64 of 232 CC2430 Bit Name Description 7 chip_erase_done Flash chip erase done 0 Chip erase in progress 1 Chip erase done 6 PCON idle pcon_idle 0 CPU is running 1 CPU is idle (clock gated) 5 CPU halted cpu_halted 0 CPU running 1 CPU halted 4 Power Mode 0 power_mode_0 0 Power Mode 1-3 selected 1 Power Mode 0 selected 3 Halt status. Returns cause of last CPU halt halt_status 0 CPU was halted by HALT debug command 1 CPU was halted by software or hardware breakpoint 2 Debug locked. Returns value of DBGLOCK bit debug_locked 0 Debug interface is not locked 1 Debug interface is locked 1 Oscillators stable. This bit represents the status of the CLKCON.XSOC_STB and CLKCON.HFRC_STB register bits. oscillator_stable 0 Oscillators not stable 1 Oscillators stable 0 Stack overflow. This bit indicates when the CPU writes to DATA memory space at address 0xFF which is possibly a stack overflow stack_overflow 0 No stack overflow 1 Stack overflow Table 35: Debug Status 12.9.7 Hardware Breakpoints The debug command SET_HW_BRKPNT is used to set a hardware breakpoint. The CC2430 supports up to four hardware breakpoints. When a hardware breakpoint is enabled it will compare the CPU address bus with the breakpoint.. When a match occurs, the CPU is halted. When issuing the SET_HW_BRKPNT, the external host must supply three data bytes that define the hardware breakpoint. The hardware breakpoint itself consists of 18 bits while three bits are used for control purposes. The format of the three data bytes for the SET_HW_BRKPNT command is as follows. The first data byte consists of the following: • bits 7-5 : unused • bits 4-3 : breakpoint number; 0-3 • bit 2 : 1=enable, 0=disable • bits 1-0 : Memory bank bits. Bits 17-16 of hardware breakpoint. The second data byte consists of bits 15-8 of the hardware breakpoint. The third data byte consists of bits 7-0 of the hardware breakpoint. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 65 of 232 CC2430 12.9.8 Flash Programming Programming of the on-chip flash is performed via the debug interface. The external host must initially send instructions using the DEBUG_INSTR debug command to perform the flash programming with the Flash Controller as described in section 13.14 on page 157. 12.10 RAM The flash memory consists of the Flash Main Page which is where the CPU reads program code and data. The flash memory also contains a Flash Information Page which contains the Flash Lock Bits. The Flash Information Page and hence the Lock Bits is only accessed by first selecting this page through the Debug Interface. The Flash Controller (see section 13.14) is used to write and erase the contents of the flash memory. The CC2430 contains static RAM. At power-on the contents of RAM is undefined. The RAM size is 8 KB in total. The upper 4 KB of the RAM (XDATA memory locations 0xF000-0xFFFF) retains data in all power modes (see exception below). The remaining lower 4 KB (XDATA memory locations 0xE000-0xEFFF) will loose its contents in PM2 and PM3 and contains undefined data when returning to PM0. When the CPU reads instructions from flash memory, it fetches the next instruction through a cache. The instruction cache is provided mainly to reduce power consumption by reducing the amount of time the flash memory itself is accessed. The use of the instruction cache may be disabled with the MEMCTR.CACHDIS register bit. The memory locations 0xFD58-0xFEFF consisting of 424 bytes in XDATA memory space do not retain data when PM2/3 is entered. The CC2430 includes a memory arbiter which handles CPU and DMA access to all memory space. 12.11 Flash Memory The control register MEMCTR is used to control various aspects of the memory sub-system. The MEMCTR register is described below. The on-chip flash memory consists of 32768, 655536 or 131072 bytes. The flash memory is primarily intended to hold program code. The flash memory has the following features: • Flash page erase time: 20 ms • Flash chip (mass) erase time: 20 ms • Flash write time (4 bytes): 20 µs • Data retention1:100 years • Program/erase cycles 1 At room temperature endurance: 1,000 12.12 Memory Arbiter MEMCTR.MUNIF controls unified mapping of CODE memory space as shown in Figure 13 on page 38. Unified mapping is required when the CPU is to execute program stored in XDATA. For the 128 KB flash version (CC2430MEMCTR.FMAP1:0 controls F128), mapping of physical banks of the 128 KB flash to the program address region 0x8000-0xFFFF in CODE memory space as shown in Figure 14 on 23. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 66 of 232 CC2430 MEMCTR (0xC7) – Memory Arbiter Control CC2430-F128 Bit Name Reset R/W Description 7 - 0 R0 Not used 6 MUNIF 0 R/W Unified memory mapping. When unified mapping is enabled, all physical memories are mapped into the CODE memory space as far as possible, when uniform mapping is disabled only flash memory is mapped to CODE space 5:4 FMAP[1:0] 01 R/W 0 Disable unified mapping 1 Enable unified mapping Flash bank map. Controls which of the four 32 KB flash memory banks to map to program address 0x8000 – 0xFFFF in CODE memory space. 00 Map program address 0x8000 – 0xFFFF to physical memory address 0x00000 – 0x07FFF 01 Map program address 0x8000 – 0xFFFF to physical memory address 0x08000– 0x0FFFF 10 Map program address 0x8000 – 0xFFFF to physical memory address 0x10000 – 0x17FFF 11 Map program address 0x8000 – 0xFFFF to physical memory address 0x18000 – 0x1FFFF 3:2 - 00 R0 Not used 1 CACHDIS 0 R/W Flash cache disable. Invalidates contents of instruction cache and forces all instruction read accesses to read straight from flash memory. Disabling will increase power consumption and is provided for debug purposes. 0 - 1 R/W 0 Cache enabled 1 Cache disabled 2 Reserved. Always set to 1. 2 Reserved bits must always be set to the specified value. Failure to follow this will result in indeterminate behaviour. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 67 of 232 CC2430 MEMCTR (0xC7) – Memory Arbiter Control CC2430-F32/64 Bit Name Reset R/W Description 7 - 0 R0 Not used 6 MUNIF 0 R/W Unified memory mapping. When unified mapping is enabled, all physical memories are mapped into the CODE memory space as far as possible, when uniform mapping is disabled only flash memory is mapped to CODE space 0 Disable unified mapping 1 Enable unified mapping 3 5:2 - 0000 R/W Reserved. Always set to 0000. 1 CACHDIS 0 R/W Flash cache disable. Invalidates contents of instruction cache and forces all instruction read accesses to read straight from flash memory. Disabling will increase power consumption and is provided for debug purposes. 0 - 1 R/W 0 Cache enabled 1 Cache disabled Reserved. Always set to 1. 3 3 Reserved bits must always be set to the specified value. Failure to follow this will result in indeterminate behaviour. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 68 of 232 CC2430 13 Peripherals In the following sub-sections each CC2430 peripheral is described in detail. input/output pins are configured as generalpurpose I/O pins. The CC2430 has four timers. These timers all run on the tick frequency given by the Power Management Controller register CLKCON.TICKSPD. By default all general-purpose I/O pins are configured as inputs. To change the direction of a port pin, at any time, the registers PxDIR are used to set each port pin to be either an input or an output. Thus by setting the appropriate bit within PxDIR, to 1 the corresponding pin becomes an output. 13.1 I/O ports The CC2430 has 21 digital input/output pins that can be configured as general purpose digital I/O or as peripheral I/O signals connected to the ADC, Timers or USART peripherals. The usage of the I/O ports is fully configurable from user software through a set of configuration registers. The I/O ports have the following key features: • 21 digital input/output pins • General purpose I/O or peripheral I/O • Pull-up or pull-down capability on inputs • External interrupt capability The external interrupt capability is available on all 21 I/O pins. Thus external devices may generate interrupts if required. The external interrupt feature can also be used to wake up from sleep modes. 13.1.1 General Purpose I/O When used as general purpose I/O, the pins are organized as three 8-bit ports, ports 0-2, denoted P0, P1 and P2. P0 and P1 are complete 8-bit wide ports while P2 has only five usable bits. All ports are both bit- and byte addressable through the SFR registers P0, P1 and P2. Each port pin can individually be set to operate as a general purpose I/O or as a peripheral I/O. The output drive strength is 4 mA on all outputs, except for the two high-drive outputs, P1_0 and P1_1, which each have 20 mA output drive strength. To use a port as a general purpose I/O pin the pin must first be configured. The registers PxSEL where x is the port number 0-2 are used to configure each pin in a port as either a general purpose I/O pin or as a peripheral I/O signal. By default, after a reset, all digital When reading the port registers P0, P1 and P2, the logic values on the input pins are returned regardless of the pin configuration. This does not apply during the execution of read-modify-write instructions. The readmodify-write instructions when operating on a port registers are the following: ANL, ORL, XRL, JBC, CPL, INC, DEC, DJNZ and MOV, CLR or SETB, when the destination is an individual bit in a port register P0, P1 or P2. For these read-modify-write instructions, the value of the register, not the value on the pin, is read, modified, and written back to the port register. When used as an input, the general purpose I/O port pins can be configured to have a pullup, pull-down or tri-state mode of operation. By default, after a reset, inputs are configured as inputs with pull-up. To deselect the pull-up or pull-down function on an input the appropriate bit within the PxINP must be set to 1. The I/O port pins P1_0 and P1_1 do not have pullup/pull-down capability. In power modes PM2 and PM3 the I/O pins retain the I/O mode and output value (if applicable) that was set when PM2/3 was entered. 13.1.2 General Purpose I/O Interrupts General purpose I/O pins configured as inputs can be used to generate interrupts. The interrupts can be configured to trigger on either a rising or falling edge of the external signal. Each of the P0, P1 and P2 ports have separate interrupt enable bits common for all bits within the port located in the IEN1-2 registers as follows: • IEN1.P0IE : P0 interrupt enable • IEN2.P1IE : P1 interrupt enable • IEN2.P2IE : P2 interrupt enable CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 69 of 232 CC2430 In addition to these common interrupt enables, the bits within each port have interrupt enables located in I/O port SFR registers. Each bit within P1 has an individual interrupt enable. In P0 the low-order nibble and the high-order nibble have their individual interrupt enables. For the P2_0 – P2_4 inputs there is a common interrupt enable. When an interrupt condition occurs on one of the general purpose I/O pins, the corresponding interrupt status flag in the P0P2 interrupt flag registers, P0IFG , P1IFG or P2IFG will be set to 1. The interrupt status flag is set regardless of whether the pin has its interrupt enable set. When an interrupt is serviced the interrupt status flag is cleared by writing to a 0 to that flag. Note that when clearing the PxIFG interrupt status flags, only one active flag should be cleared at a time. Failure to do this may result in generation of false interrupt requests. The I/O SFR registers used for interrupts are described in section 13.1.9 on page 73. The registers are summarized below: • P1IEN : P1 interrupt enables • PICTL : P0/P2 interrupt enables and P0-2 edge configuration • P0IFG : P0 interrupt flags • P1IFG : P1 interrupt flags • P2IFG : P2 interrupt flags 13.1.3 General Purpose I/O DMA When used as general purpose I/O pins, the P0 and P1 ports are each associated with one DMA trigger. These DMA triggers are IOC_0 for P0 and IOC_1 for P1 as shown in Table 37 on page 92. The IOC_0 or IOC_1 DMA trigger is activated when an input transition occurs on one of the P0 or P1 pins respectively. Note input transitions on pins configured as general purpose I/O inputs only will produce the DMA trigger. 13.1.4 Peripheral I/O This section describes how the digital input/output pins are configured as peripheral I/Os. For each peripheral unit that can interface with an external system through the digital input/output pins, a description of how peripheral I/Os are configured is given in the following sub-sections. In general, setting the appropriate PxSEL bits to 1 is required to select peripheral I/O function on a digital I/O pin. Note that peripheral units have two alternative locations for their I/O pins, refer to Table 36. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 70 of 232 CC2430 Table 36: Peripheral I/O Pin Mapping Periphery / Function P0 P1 7 6 5 4 3 2 1 0 ADC A7 A6 A5 A4 A3 A2 A1 A0 C SS M0 MI USART0 SPI 7 P2 6 5 Alt. 2 USART0 UART RT CT TX MI M0 C RX TX RT 2 1 M O MI C SS TX RX RT CT 1 0 1 2 1 0 4 3 2 MI M0 C SS RX TX RT CT 0 TIMER3 1 Alt. 2 1 0 0 TIMER4 Alt. 2 1 32.768 kHz XOSC Q2 0 Q1 D C DEBUG 13.1.4.1 USART0 The SFR register bit PERCFG.U0CFG selects whether to use alternative 1 or alternative 2 locations. In Table 36, the USART0 signals are shown as follows: • RX : RXDATA • TX : TXDATA • RT : RTS • CT : CTS D D P2DIR.PRIP0 selects the order of precedence when assigning several peripherals to port 0. When set to 00, USART0 has precedence. Note that if UART mode is selected and hardware flow control is disabled, USART1 or timer 1 will have precedence to use ports P0_4 and P0_5. P2SEL.PRI3P1 and P2SEL.PRI0P1 select the order of precedence when assigning several peripherals to port 1. USART0 has precedence when both are set to 0. Note that if UART mode is selected and hardware flow control is disabled, timer 1 or timer 3 will have precedence to use ports P1_2 and P1_3. 13.1.4.2 USART1 SPI: • MI : MISO • MO : MOSI • C : SCK • SS : SSN 0 0 Alt. 2 UART: 1 CT Alt. 2 TIMER1 2 SS Alt. 2 USART1 UART 3 RX Alt. 2 USART1 SPI 4 The SFR register bit PERCFG.S1CFG selects whether to use alternative 1 or alternative 2 locations. In Table 36, the USART1 signals are shown as follows: • RX : RXDATA • TX : TXDATA CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 71 of 232 CC2430 • RT : RTS • 0 : Channel 0 capture/compare pin • CT : CTS • 1 : Channel 1 capture/compare pin SPI: • MI : MISO • MO : MOSI P2SEL.PRI2P1 selects the order of precedence when assigning several peripherals to port 1. The timer 3 channels have precedence when the bit is set. • C : SCK 13.1.4.5 Timer 4 • SS : SSN PERCFG.T4CFG selects whether to alternative 1 or alternative 2 locations. P2DIR.PRIP0 selects the order of precedence when assigning several peripherals to port 0. When set to 01, USART1 has precedence. Note that if UART mode is selected and hardware flow control is disabled, USART0 or timer 1 will have precedence to use ports P0_2 and P0_3. P2SEL.PRI3P1 and P2SEL.PRI2P1 select the order of precedence when assigning several peripherals to port 1. USART1 has precedence when the former is set to 1 and the latter is set to 0. Note that if UART mode is selected and hardware flow control is disabled, USART0 or timer 3 will have precedence to use ports P2_4 and P2_5. 13.1.4.3 Timer 1 PERCFG.T1CFG selects whether to alternative 1 or alternative 2 locations. use In Table 36, the Timer 1 signals are shown as the following: • 0 : Channel 0 capture/compare pin • 1 : Channel 1 capture/compare pin • 2 : Channel 2 capture/compare pin P2DIR.PRIP0 selects the order of precedence when assigning several peripherals to port 0. When set to 10 or 11 the timer 1 channels have precedence. P2SEL.PRI1P1 and P2SEL.PRI0P1 select the order of precedence when assigning several peripherals to port 1. The timer 1 channels have precedence when the former is set low and the latter is set high. 13.1.4.4 Timer 3 PERCFG.T3CFG selects whether to alternative 1 or alternative 2 locations. use In Table 36, the Timer 3 signals are shown as the following: use In Table 36, the Timer 4 signals are shown as the following: • 0 : Channel 0 capture/compare pin • 1 : Channel 1 capture/compare pin P2SEL.PRI1P1 selects the order of precedence when assigning several peripherals to port 1. The timer 4 channels have precedence when the bit is set. 13.1.5 ADC When using the ADC in an application, Port 0 pins must be configured as ADC inputs. Up to eight ADC inputs can be used. To configure a Port 0 pin to be used as an ADC input the corresponding bit in the ADCCFG register must be set to 1. The default values in this register select the Port 0 pins as non-ADC input i.e. digital input/outputs. The settings in the ADCCFG register override the settings in P0SEL. The ADC can be configured to use the general-purpose I/O pin P2_0 as an external trigger to start conversions. P2_0 must be configured as a general-purpose I/O in input mode, when being used for ADC external trigger. Refer to section 13.7 on page 127 for a detailed description of use of the ADC. 13.1.6 Debug interface Ports P2_1 and P2_2 are used for debug data and clock signals, respectively. These are shown as DD (debug data) and DC (debug clock) in Table 36. When the debug interface is in use, P2DIR should select these pins as inputs. The state of P2SEL is overridden by the debug interface. Also, the direction is overridden when the chip changes the direction to supply the external host with data. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 72 of 232 CC2430 13.1.7 32.768 kHz XOSC input • PERCFG Peripheral control register Ports P2_3 and P2_4 are used to connect an external 32.768 kHz crystal. These port pins will be used by the 32.768 kHz crystal oscillator when CLKCON.OSC32K is low, regardless of register settings. The port pins will be set in analog mode when CLKCON.OSC32K is low. • ADCCFG register • P0SEL Port 0 function select register • P1SEL Port 1 function select register • P2SEL Port 2 function select register • P0DIR Port 0 direction register Unused I/O pins should have a defined level and not be left floating. One way to do this is to leave the pin unconnected and configure the pin as a general purpose I/O input with pull-up resistor. This is also the state of all pins during reset. Alternatively the pin can be configured as a general purpose I/O output. In both cases the pin should not be connected directly to VDD or GND in order to avoid excessive power consumption. • P1DIR Port 1 direction register • P2DIR Port 2 direction register • P0INP Port 0 input mode register • P1INP Port 1 input mode register • P2INP Port 2 input mode register • P0IFG Port 0 interrupt status flag register 13.1.9 I/O registers • The registers for the I/O ports are described in this section. The registers are: P1IFG Port 1 interrupt status flag register • P2IFG Port 2 interrupt status flag register • PICTL Interrupt register • P1IEN Port 1 interrupt mask register 13.1.8 Unused I/O pins • P0 Port 0 • P1 Port 1 • P2 Port 2 ADC input mask configuration and P0 (0x80) – Port 0 Bit Name Reset R/W Description 7:0 P0[7:0] 0xFF R/W Port 0. General purpose I/O port. Bit-addressable. P1 (0x90) – Port 1 Bit Name Reset R/W Description 7:0 P1[7:0] 0xFF R/W Port 1. General purpose I/O port. Bit-addressable. P2 (0xA0) – Port 2 Bit Name Reset R/W Description 7:5 - 000 R0 Not used 4:0 P2[4:0] 0x1F R/W Port 2. General purpose I/O port. Bit-addressable. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 73 of 232 edge CC2430 PERCFG (0xF1) – Peripheral Control Bit Name Reset R/W Description 7 - 0 R0 Not used 6 T1CFG 0 R/W Timer 1 I/O location 5 4 T3CFG T4CFG 0 0 R/W R/W 0 Alternative 1 location 1 Alternative 2 location Timer 3 I/O location 0 Alternative 1 location 1 Alternative 2 location Timer 4 I/O location 0 Alternative 1 location 1 Alternative 2 location 3:2 - 00 R0 Not used 1 U1CFG 0 R/W USART1 I/O location 0 U0CFG 0 R/W 0 Alternative 1 location 1 Alternative 2 location USART0 I/O location 0 Alternative 1 location 1 Alternative 2 location ADCCFG (0xF2) – ADC Input Configuration Bit Name Reset R/W Description 7:0 ADCCFG[7:0] 0x00 R/W ADC input configuration. ADCCFG[7:0] select P0_7 - P0_0 as ADC inputs AIN7 – AIN0 0 ADC input disabled 1 ADC input enabled CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 74 of 232 CC2430 P0SEL (0xF3) – Port 0 Function Select Bit Name Reset R/W Description 7 SELP0_7 0 R/W P0_7 function select 6 5 4 3 2 1 0 SELP0_6 SELP0_5 SELP0_4 SELP0_3 SELP0_2 SELP0_1 SELP0_0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 General purpose I/O 1 Peripheral function P0_6 function select 0 General purpose I/O 1 Peripheral function P0_5 function select 0 General purpose I/O 1 Peripheral function P0_4 function select 0 General purpose I/O 1 Peripheral function P0_3 function select 0 General purpose I/O 1 Peripheral function P0_2 function select 0 General purpose I/O 1 Peripheral function P0_1 function select 0 General purpose I/O 1 Peripheral function P0_0 function select 0 General purpose I/O 1 Peripheral function CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 75 of 232 CC2430 P1SEL (0xF4) – Port 1 Function Select Bit Name Reset R/W Description 7 SELP1_7 0 R/W P1_7 function select 6 5 4 3 2 1 0 SELP1_6 SELP1_5 SELP1_4 SELP1_3 SELP1_2 SELP1_1 SELP1_0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 General purpose I/O 1 Peripheral function P1_6 function select 0 General purpose I/O 1 Peripheral function P1_5 function select 0 General purpose I/O 1 Peripheral function P1_4 function select 0 General purpose I/O 1 Peripheral function P1_3 function select 0 General purpose I/O 1 Peripheral function P1_2 function select 0 General purpose I/O 1 Peripheral function P1_1 function select 0 General purpose I/O 1 Peripheral function P1_0 function select 0 General purpose I/O 1 Peripheral function CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 76 of 232 CC2430 P2SEL (0xF5) – Port 2 Function Select Bit Name Reset R/W Description 7 - 0 R0 Not used 6 PRI3P1 0 R/W Port 1 peripheral priority control. These bits shall determine the order of priority in the case when PERCFG assigns USART0 and USART1 to the same pins. 5 4 3 2 1 0 PRI2P1 PRI1P1 PRI0P1 SELP2_4 SELP2_3 SELP2_0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W 0 USART0 has priority 1 USART1 has priority Port 1 peripheral priority control. These bits shall determine the order of priority in the case when PERCFG assigns USART1 and timer 3 to the same pins. 0 USART1 has priority 1 Timer 3 has priority Port 1 peripheral priority control. These bits shall determine the order of priority in the case when PERCFG assigns timer 1 and timer 4 to the same pins. 0 Timer 1 has priority 1 Timer 4 has priority Port 1 peripheral priority control. These bits shall determine the order of priority in the case when PERCFG assigns USART0 and timer 1 to the same pins. 0 USART0 has priority 1 Timer 1 has priority P2_4 function select 0 General purpose I/O 1 Peripheral function P2_3 function select 0 General purpose I/O 1 Peripheral function P2_0 function select 0 General purpose I/O 1 Peripheral function CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 77 of 232 CC2430 P0DIR (0xFD) – Port 0 Direction Bit Name Reset R/W Description 7 DIRP0_7 0 R/W P0_7 I/O direction 6 5 4 3 2 1 0 DIRP0_6 DIRP0_5 DIRP0_4 DIRP0_3 DIRP0_2 DIRP0_1 DIRP0_0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 Input 1 Output P0_6 I/O direction 0 Input 1 Output P0_5 I/O direction 0 Input 1 Output P0_4 I/O direction 0 Input 1 Output P0_3 I/O direction 0 Input 1 Output P0_2 I/O direction 0 Input 1 Output P0_1 I/O direction 0 Input 1 Output P0_0 I/O direction 0 Input 1 Output CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 78 of 232 CC2430 P1DIR (0xFE) – Port 1 Direction Bit Name Reset R/W Description 7 DIRP1_7 0 R/W P1_7 I/O direction 6 5 4 3 2 1 0 DIRP1_6 DIRP1_5 DIRP1_4 DIRP1_3 DIRP1_2 DIRP1_1 DIRP1_0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 Input 1 Output P1_6 I/O direction 0 Input 1 Output P1_5 I/O direction 0 Input 1 Output P1_4 I/O direction 0 Input 1 Output P1_3 I/O direction 0 Input 1 Output P1_2 I/O direction 0 Input 1 Output P1_1 I/O direction 0 Input 1 Output P1_0 I/O direction 0 Input 1 Output CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 79 of 232 CC2430 P2DIR (0xFF) – Port 2 Direction Bit Name Reset R/W Description 7:6 PRIP0[1:0] 0 R/W Port 0 peripheral priority control. These bits shall determine the order of priority in the case when PERCFG assigns several peripherals to the same pins 00 USART0 – USART1 01 USART1 – USART0 10 Timer 1 channels 0 and 1 – USART1 11 Timer 1 channel 2 – USART0 5 - 0 R0 Not used 4 DIRP2_4 0 R/W P2_4 I/O direction 3 2 1 0 DIRP2_3 DIRP2_2 DIRP2_1 DIRP2_0 0 0 0 0 R/W R/W R/W R/W 0 Input 1 Output P2_3 I/O direction 0 Input 1 Output P2_2 I/O direction 0 Input 1 Output P2_1 I/O direction 0 Input 1 Output P2_0 I/O direction 0 Input 1 Output CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 80 of 232 CC2430 P0INP (0x8F) – Port 0 Input Mode Bit Name Reset R/W Description 7 MDP0_7 0 R/W P0_7 I/O input mode 6 5 4 3 2 1 0 MDP0_6 MDP0_5 MDP0_4 MDP0_3 MDP0_2 MDP0_1 MDP0_0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 Pull-up / pull-down 1 Tristate P0_6 I/O input mode 0 Pull-up / pull-down 1 Tristate P0_5 I/O input mode 0 Pull-up / pull-down 1 Tristate P0_4 I/O input mode 0 Pull-up / pull-down 1 Tristate P0_3 I/O input mode 0 Pull-up / pull-down 1 Tristate P0_2 I/O input mode 0 Pull-up / pull-down 1 Tristate P0_1 I/O input mode 0 Pull-up / pull-down 1 Tristate P0_0 I/O input mode 0 Pull-up / pull-down 1 Tristate CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 81 of 232 CC2430 P1INP (0xF6) – Port 1 Input Mode Bit Name Reset R/W Description 7 MDP1_7 0 R/W P1_7 I/O input mode 6 5 4 3 2 1:0 MDP1_6 MDP1_5 MDP1_4 MDP1_3 MDP1_2 - 0 0 0 0 0 00 R/W R/W R/W R/W R/W R0 0 Pull-up / pull-down 1 Tristate P1_6 I/O input mode 0 Pull-up / pull-down 1 Tristate P1_5 I/O input mode 0 Pull-up / pull-down 1 Tristate P1_4 I/O input mode 0 Pull-up / pull-down 1 Tristate P1_3 I/O input mode 0 Pull-up / pull-down 1 Tristate P1_2 I/O input mode 0 Pull-up / pull-down 1 Tristate Not used CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 82 of 232 CC2430 P2INP (0xF7) – Port 2 Input Mode Bit Name Reset R/W Description 7 PDUP2 0 R/W Port 2 pull-up/down select. Selects function for all Port 2 pins configured as pull-up/pull-down inputs. 6 5 4 3 2 1 0 PDUP1 PDUP0 MDP2_4 MDP2_3 MDP2_2 MDP2_1 MDP2_0 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 Pull-up 1 Pull-down Port 1 pull-up/down select. Selects function for all Port 1 pins configured as pull-up/pull-down inputs. 0 Pull-up 1 Pull-down Port 0 pull-up/down select. Selects function for all Port 0 pins configured as pull-up/pull-down inputs. 0 Pull-up 1 Pull-down P2_4 I/O input mode 0 Pull-up / pull-down 1 Tristate P2_3 I/O input mode 0 Pull-up / pull-down 1 Tristate P2_2 I/O input mode 0 Pull-up / pull-down 1 Tristate P2_1 I/O input mode 0 Pull-up / pull-down 1 Tristate P2_0 I/O input mode 0 Pull-up / pull-down 1 Tristate P0IFG (0x89) – Port 0 Interrupt Status Flag Bit Name Reset R/W Description 7:0 P0IF[7:0] 0x00 R/W0 Port 0, inputs 7 to 0 interrupt status flags. When an input port pin has an interrupt request pending, the corresponding flag bit will be set. P1IFG (0x8A) – Port 1 Interrupt Status Flag Bit Name Reset R/W Description 7:0 P1IF[7:0] 0x00 R/W0 Port 1, inputs 7 to 0 interrupt status flags. When an input port pin has an interrupt request pending, the corresponding flag bit will be set. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 83 of 232 CC2430 P2IFG (0x8B) – Port 2 Interrupt Status Flag Bit Name Reset R/W Description 7:5 - 000 R0 Not used. 4:0 P2IF[4:0] 0x00 R/W0 Port 2, inputs 4 to 0 interrupt status flags. When an input port pin has an interrupt request pending, the corresponding flag bit will be set. PICTL (0x8C) – Port Interrupt Control Bit Name Reset R/W Description 7 - 0 R0 Not used 6 PADSC 0 R/W Strength control for port pads in output mode. Selects output drive capability to account for low I/O supply voltage on pin DVDD. 5 4 3 2 1 0 P2IEN P0IENH P0IENL P2ICON P1ICON P0ICON 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W 0 Minimum drive capability 1 Maximum drive capability Port 2, inputs 4 to 0 interrupt enable. This bit enables interrupt requests for the port 2 inputs 4 to 0. 0 Interrupts are disabled 1 Interrupts are enabled Port 0, inputs 7 to 4 interrupt enable. This bit enables interrupt requests for the port 0 inputs 7 to 4. 0 Interrupts are disabled 1 Interrupts are enabled Port 0, inputs 3 to 0 interrupt enable. This bit enables interrupt requests for the port 0 inputs 3 to 0. 0 Interrupts are disabled 1 Interrupts are enabled Port 2, inputs 4 to 0 interrupt configuration. This bit selects the interrupt request condition for all port 2 inputs 0 Rising edge on input gives interrupt 1 Falling edge on input gives interrupt Port 1, inputs 7 to 0 interrupt configuration. This bit selects the interrupt request condition for all port 1 inputs 0 Rising edge on input gives interrupt 1 Falling edge on input gives interrupt Port 0, inputs 7 to 0 interrupt configuration. This bit selects the interrupt request condition for all port 0 inputs 0 Rising edge on input gives interrupt 1 Falling edge on input gives interrupt CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 84 of 232 CC2430 P1IEN (0x8D) – Port 1 Interrupt Mask Bit Name Reset R/W Description 7 P1_7IEN 0 R/W Port P1_7 interrupt enable 6 5 4 3 2 1 0 P1_6IEN P1_5IEN P1_4IEN P1_3IEN P1_2IEN P1_1IEN P1_0IEN 0 0 0 0 0 0 0 R/W R/W R/W R/W R/W R/W R/W 0 Interrupts are disabled 1 Interrupts are enabled Port P1_6 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled Port P1_5 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled Port P1_4 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled Port P1_3 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled Port P1_2 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled Port P1_1 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled Port P1_0 interrupt enable 0 Interrupts are disabled 1 Interrupts are enabled CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 85 of 232 CC2430 13.2 DMA Controller The CC2430 includes a direct memory access (DMA) controller, which can be used to relieve the 8051 CPU core of handling data movement operations thus achieving high overall performance with good power efficiency. The DMA controller can move data from a peripheral unit such as ADC or RF transceiver to memory with minimum CPU intervention. The DMA controller coordinates all DMA transfers, ensuring that DMA requests are prioritized appropriately relative to each other and CPU memory access. The DMA controller contains a number of programmable DMA channels for memory-memory data movement. The DMA controller controls data transfers over the entire address range in XDATA memory space. Since most of the SFR registers are mapped into the DMA memory space, these flexible DMA channels can be used to unburden the CPU in innovative ways, e.g. feed a USART with data from memory or periodically transfer samples between ADC and memory, etc. Use of the DMA can also reduce system power consumption by keeping the CPU in a low-power mode without having to wake up to move data to or from a peripheral unit. Note that section 12.4 describes which SFR registers that are not mapped into XDATA memory space. The main features of the DMA controller are as follows: • Five independent DMA channels • Three configurable levels of DMA channel priority • 31 configurable transfer trigger events • Independent control of source and destination address • Single, block and repeated transfer modes • Supports length field in transfer data setting variable transfer length • Can operate in either word-size or byte-size mode 13.2.1 DMA Operation There are five DMA channels available in the DMA controller numbered channel 0 to channel 4. Each DMA channel can move data from one place within the DMA memory space to another i.e. between XDATA locations. In order to use a DMA channel it must first be configured as described in sections 13.2.2 and 13.2.3. Figure 17 shows the DMA state diagram. Once a DMA channel has been configured it must be armed before any transfers are allowed to be initiated. A DMA channel is armed by setting the appropriate bit in the DMA Channel Arm register DMAARM. When a DMA channel is armed a transfer will begin when the configured DMA trigger event occurs. There are 31 possible DMA trigger events, e.g. UART transfer, Timer overflow etc. The trigger event to be used by a DMA channel is set by the DMA channel configuration. The DMA trigger events are listed in Table 37. In addition to starting a DMA transfer through the DMA trigger events, the user software may force a DMA transfer to begin by setting the corresponding DMAREQ bit. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 86 of 232 CC2430 Initialization Write DMA channel configuration no DMA Channel Idle Modify source/ destination address DMAARMx=1 yes Load DMA Channel configuration yes Reached transfer count? no DMA Channel Armed yes no yes ABORT=1 and DMAARMx=1 no no Interrupt request Trigger or DMAREQx yes Transfer one byte or word when channel is granted access . DMAARMx=0 ABORT=1 and DMAARMx=1 Figure 17: DMA Operation 13.2.2 DMA Configuration Parameters Setup and control of the DMA operation is performed by the user software. This section describes the parameters which must be configured before a DMA channel can be used. Section 13.2.3 on page 90 describes how the parameters are set up in software and passed to the DMA controller. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 87 of 232 CC2430 The behavior of each of the five DMA channels is configured with the following parameters: Source address. The first address from which the DMA channel should read data. Destination address. The first address to which the DMA channel should write the data read from the source address. The user must ensure that the destination is writable. Transfer count. The number of transfers to perform before rearming or disarming the DMA channel and alerting the CPU with an interrupt request. The length can be defined in the configuration or it can be defined as described next as VLEN setting. VLEN setting. The DMA channel is capable of variable length transfers using the first byte or word to set the transfer length. When doing this, various options regarding how to count number of bytes to transfer are available. Priority. The priority of the DMA transfers for the DMA channel in respect to the CPU and other DMA channels and access ports. Trigger event. All DMA transfers are initiated by so-called DMA trigger events. This trigger either starts a DMA block transfer or a single DMA transfer. In addition to the configured trigger, a DMA channel can always be triggered by setting its designated DMAREQ.DMAREQx flag. The DMA trigger sources are described in Table 37 on page 92. Source and Destination Increment. The source and destination addresses can be controlled to increment or decrement or not change, in order to give good flexibility for various types of transfers. Transfer mode. The transfer mode determines whether the transfer should be a single transfer or a block transfer, or repeated versions of these. Byte or word transfers. Determines whether each DMA transfer should be 8-bit (byte) or 16-bit (word). Interrupt Mask. An interrupt request is generated upon completion of the DMA transfer. The interrupt mask bit controls if the interrupt generation is enabled or disabled. M8: Decide whether to use seven or eight bits of length byte for transfer length. Only applicable when doing byte transfers. A detailed description of all configuration parameters are given in the following sections. 13.2.2.1 Source Address The address in XDATA memory where the DMA channel shall start to read data. 13.2.2.2 Destination Address The first address to which the DMA channel should write the data read from the source address. The user must ensure that the destination is writable. 13.2.2.3 Transfer Count The number of bytes/words needed to be transferred for the DMA transfer to be complete. When the transfer count is reached, the DMA controller rearms or disarms the DMA channel and alerts the CPU with an interrupt request. The transfer count can be defined in the configuration or it can be defined as a variable length described in the next section. 13.2.2.4 VLEN Setting The DMA channel is capable of using the first byte or word (for word, bits 12:0 are used) in source data as the transfer length. This allows variable length transfers. When using variable length transfer, various options regarding how to count number of bytes to transfer is given. In any case, the transfer count (LEN) setting is used as maximum transfer count. Note that the M8 bit (see page 90) is only used when byte size transfers are chosen. Options which can be set with VLEN are the following: 1. Transfer number of bytes/words commanded by first byte/word + 1 (transfers the length byte/word, and then as many bytes/words as dictated by length byte/word) 2. Transfer number of bytes/words commanded by first byte/word 3. Transfer number of bytes/words commanded by first byte/word + 2 (transfers the length byte/word, and then as many bytes/words as dictated by length byte/word + 1) 4. Transfer number of bytes/words commanded by first byte/word + 3 (transfers the length byte/word, and then as many bytes/words as dictated by length byte/word + 2) Figure 18 shows the VLEN options. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 88 of 232 CC2430 byte/word n+2 byte/word n+1 byte/word n+1 byte/word n byte/word n byte/word n byte/word n byte/word n-1 byte/word n-1 byte/word n-1 byte/word n-1 byte/word 3 byte/word 3 byte/word 3 byte/word 3 byte/word 2 byte/word 2 byte/word 2 byte/word 2 byte/word 1 byte/word 1 byte/word 1 byte/word 1 LENGTH=n LENGTH=n LENGTH=n LENGTH=n VLEN=001 VLEN=010 VLEN=011 VLEN=100 Figure 18: Variable Length (VLEN) Transfer Options data. There are four transfer modes described below: 13.2.2.5 Trigger Event Each DMA channel can be set up to sense on a single trigger. This field determines which trigger the DMA channel shall sense. 13.2.2.6 Source and Destination Increment When the DMA channel is armed or rearmed the source and destination addresses are transferred to internal address pointers. The possibilities for address increment are : • Increment by zero. The address pointer shall remain fixed after each transfer. • Increment by one. The address pointer shall increment one count after each transfer. • Increment by two. The address pointer shall increment two counts after each transfer. • Decrement by one. The address pointer shall decrement one count after each transfer. 13.2.2.7 DMA Transfer Mode The transfer mode determines how the DMA channel behaves when it starts transferring Single. On a trigger a single DMA transfer occurs and the DMA channel awaits the next trigger. After the number of transfers specified by the transfer count, are completed, the CPU is notified and the DMA channel is disarmed. Block. On a trigger the number of DMA transfers specified by the transfer count is performed as quickly as possible, after which the CPU is notified and the DMA channel is disarmed. Repeated single. On a trigger a single DMA transfer occurs and the DMA channel awaits the next trigger. After the number of transfers specified by the transfer count are completed, the CPU is notified and the DMA channel is rearmed. Repeated block. On a trigger the number of DMA transfers specified by the transfer count is performed as quickly as possible, after which the CPU is notified and the DMA channel is rearmed. 13.2.2.8 DMA Priority A DMA priority is associated with each DMA access port and is configurable for each DMA channel. The DMA priority is used to CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 89 of 232 CC2430 determine the winner in the case of multiple simultaneous internal memory requests, and whether the DMA memory access should have priority or not over a simultaneous CPU memory access. In case of an internal tie, a round-robin scheme is used to ensure access for all. There are three levels of DMA priority: the user software, and the address location is passed to the DMA controller through a set of SFRs DMAxCFGH:DMAxCFGL, Once a channel has been armed, the DMA controller will read the configuration data structure for that channel, given by the address in DMAxCFGH:DMAxCFGL. High. Highest internal priority. DMA access will always prevail over CPU access. It is important to note that the method for specifying the start address for the DMA configuration data structure differs between DMA channel 0 and DMA channels 1-4 as follows: Normal. Second highest internal priority. Guarantees that DMA access prevails over CPU on at least every second try. Low. Lowest internal priority. DMA access will always defer to a CPU access. DMA0CFGH:DMA0CFGL gives the start address for DMA channel 0 configuration data structure. 13.2.2.9 Byte or Word transfers DMA1CFGH:DMA1CFGL gives the start address for DMA channel 1 configuration data structure followed by channel 2-4 configuration data structures. Determines whether 8-bit (byte) or 16-bit (word) are done. 13.2.2.10 Interrupt mask Upon completing a DMA transfer, the channel can generate an interrupt to the processor. This bit will mask the interrupt. 13.2.2.11 Mode 8 setting This field determines whether to use 7 or 8 bits of length byte for transfer length. Only applicable when doing byte transfers. 13.2.3 DMA Configuration Setup The DMA channel parameters such as address mode, transfer mode and priority described in the previous section have to be configured before a DMA channel can be armed and activated. The parameters are not configured directly through SFR registers, but instead they are written in a special DMA configuration data structure in memory. Each DMA channel in use requires its own DMA configuration data structure. The DMA configuration data structure consists of eight bytes and is described in section 13.2.6 on page 91. A DMA configuration data structure may reside at any location decided upon by Thus the DMA controller expects the DMA configuration data structures for DMA channels 1-4 to lie in a contiguous area in memory starting at the address held in DMA1CFGH:DMA1CFGL and consisting of 32 bytes. 13.2.4 Stopping DMA Transfers Ongoing DMA transfer or armed DMA channels will be aborted using the DMAARM register to disarm the DMA channel. One or more DMA channels are aborted by writing the following to the DMAARM register. • Writing a 1 to DMAARM.ABORT, and at the same time, • Select which DMA channels to abort by setting the corresponding, DMAARM.DMAARMx bits. An example of DMA channel arm and disarm is shown in Figure 19. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 90 of 232 CC2430 MOV DMAARM, #0x03 ; arm DMA channel 0 and 1 MOV DMAARM, #0x81 ; disarm DMA channel 0, ; channel 1 is still armed Figure 19: DMA arm/disarm example 13.2.5 DMA Interrupts Each DMA channel can be configured to generate an interrupt to the CPU upon completing a DMA transfer. This is accomplished with the IRQMASK bit in the channel configuration. The corresponding interrupt flag in the DMAIRQ SFR register will be set when the interrupt is generated. always check (and clear) this register when rearming a channel with a changed IRQMASK setting. Failure to do so could generate an interrupt based on the stored interrupt flag. 13.2.6 DMA Configuration Data Structure For each DMA channel, the DMA configuration data structure consists of eight bytes. The configuration data structure is described in Table 38. Regardless of the IRQMASK bit in the channel configuration, the interrupt flag will be set upon DMA channel complete. Thus software should CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 91 of 232 CC2430 DMA Trigger number DMA Trigger name Functional unit Description 0 NONE DMA No trigger, setting DMAREQ.DMAREQx bit starts transfer 1 PREV DMA DMA channel is triggered by completion of previous channel 2 T1_CH0 Timer 1 Timer 1, compare, channel 0 3 T1_CH1 Timer 1 Timer 1, compare, channel 1 4 T1_CH2 Timer 1 Timer 1, compare, channel 2 5 T2_COMP Timer 2 Timer 2, compare 6 T2_OVFL Timer 2 Timer 2, overflow 7 T3_CH0 Timer 3 Timer 3, compare, channel 0 8 T3_CH1 Timer 3 Timer 3, compare, channel 1 9 T4_CH0 Timer 4 Timer 4, compare, channel 0 10 T4_CH1 Timer 4 Timer 4, compare, channel 1 11 ST Sleep Timer Sleep Timer compare 12 IOC_0 IO Controller Port 0 I/O pin input transition 13 IOC_1 IO Controller Port 1 I/O pin input transition 14 URX0 USART0 USART0 RX complete 15 UTX0 USART0 USART0 TX complete 16 URX1 USART1 USART1 RX complete 17 UTX1 USART1 USART1 TX complete 18 FLASH Flash controller Flash data write complete 19 RADIO Radio RF packet byte received/transmit 20 ADC_CHALL ADC ADC end of a conversion in a sequence, sample ready 21 ADC_CH11 ADC ADC end of conversion channel 0 in sequence, sample ready 22 ADC_CH21 ADC ADC end of conversion channel 1 in sequence, sample ready 23 ADC_CH32 ADC ADC end of conversion channel 2 in sequence, sample ready 24 ADC_CH42 ADC ADC end of conversion channel 3 in sequence, sample ready 25 ADC_CH53 ADC ADC end of conversion channel 4 in sequence, sample ready 26 ADC_CH63 ADC ADC end of conversion channel 5 in sequence, sample ready 27 ADC_CH74 ADC ADC end of conversion channel 6 in sequence, sample ready 28 ADC_CH84 ADC ADC end of conversion channel 7 in sequence, sample ready 29 ENC_DW AES AES encryption processor requests download input data 30 ENC_UP AES AES encryption processor requests upload output data Table 37: DMA Trigger Sources CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 92 of 232 CC2430 Table 38: DMA Configuration Data Structure Byte Offset Bit Name Description 0 7:0 SRCADDR[15:8] The DMA channel source address, high 1 7:0 SRCADDR[7:0] The DMA channel source address, low 2 7:0 DESTADDR[15:8] The DMA channel destination address, high. Note that flash memory is not directly writeable. 3 7:0 DESTADDR[7:0] The DMA channel destination address, low. Note that flash memory is not directly writeable. 4 7:5 VLEN[2:0] Variable length transfer mode. In word mode, bits 12:0 of the first word is considered as the transfer length. 4 4:0 LEN[12:8] 000/111 Use LEN for transfer count 001 Transfer the number of bytes/words specified by first byte/word + 1 (up to a maximum specified by LEN). Thus transfer count excludes length byte/word 010 Transfer the number of bytes/words specified by first byte/word (up to a maximum specified by LEN). Thus transfer count includes length byte/word. 011 Transfer the number of bytes/words specified by first byte/word + 2 (up to a maximum specified by LEN). 100 Transfer the number of bytes/words specified by first byte/word + 3 (up to a maximum specified by LEN). 101 reserved 110 reserved The DMA channel transfer count. Used as maximum allowable length when VLEN = 000/111. The DMA channel counts in words when in WORDSIZE mode, and in bytes otherwise. 5 7:0 The DMA channel transfer count. LEN[7:0] Used as maximum allowable length when VLEN = 000/111. The DMA channel counts in words when in WORDSIZE mode, and in bytes otherwise. 6 7 WORDSIZE Selects whether each DMA transfer shall be 8-bit (0) or 16-bit (1). 6 6:5 TMODE[1:0] The DMA channel transfer mode: 00 : Single 01 : Block 10 : Repeated single 11 : Repeated block 6 4:0 TRIG[4:0] Select DMA trigger to use 00000 : No trigger (writing to DMAREQ is only trigger) 00001 : The previous DMA channel finished 00010 – 11111 : Selects one of the triggers shown in Table 37. The trigger is selected in the order shown in the table. 7 7:6 SRCINC[1:0] Source address increment mode (after each transfer): 00 : 0 bytes/words 01 : 1 bytes/words 10 : 2 bytes/words 11 : -1 bytes/words 7 5:4 DESTINC[1:0] Destination address increment mode (after each transfer): 00 : 0 bytes/words 01 : 1 bytes/words 10 : 2 bytes/words 11 : -1 bytes/words CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 93 of 232 CC2430 Byte Offset Bit Name Description 7 3 IRQMASK Interrupt Mask for this channel. 0 : Disable interrupt generation 1 : Enable interrupt generation upon DMA channel done 7 2 th Mode of 8 bit for VLEN transfer length; only applicable when WORDSIZE=0. M8 0 : Use all 8 bits for transfer count 1 : Use 7 LSB for transfer count 7 1:0 PRIORITY[1:0] The DMA channel priority: 00 : Low, CPU has priority. 01 : Guaranteed, DMA at least every second try. 10 : High, DMA has priority 11 : Highest, DMA has priority. Reserved for DMA port access. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 94 of 232 CC2430 13.2.7 DMA registers This section describes the SFR registers associated with the DMA Controller DMAARM (0xD6) – DMA Channel Arm Bit Name Reset R/W Description 7 ABORT 0 R0/W DMA abort. This bit is used to stop ongoing DMA transfers. Writing a 1 to this bit will abort all channels which are selected by setting the corresponding DMAARM bit to 1 0 : Normal operation 1 : Abort channels all selected channels 6:5 - 00 R/W Not used 4 DMAARM4 0 R/W DMA arm channel 4 This bit must be set in order for any DMA transfers to occur on the channel. For non-repetitive transfer modes, the bit is automatically cleared upon completion. 3 DMAARM3 0 R/W DMA arm channel 3 This bit must be set in order for any DMA transfers to occur on the channel. For non-repetitive transfer modes, the bit is automatically cleared upon completion. 2 DMAARM2 0 R/W DMA arm channel 2 This bit must be set in order for any DMA transfers to occur on the channel. For non-repetitive transfer modes, the bit is automatically cleared upon completion. 1 DMAARM1 0 R/W DMA arm channel 1 This bit must be set in order for any DMA transfers to occur on the channel. For non-repetitive transfer modes, the bit is automatically cleared upon completion. 0 DMAARM0 0 R/W DMA arm channel 0 This bit must be set in order for any DMA transfers to occur on the channel. For non-repetitive transfer modes, the bit is automatically cleared upon completion. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 95 of 232 CC2430 DMAREQ (0xD7) – DMA Channel Start Request and Status Bit Name Reset R/W Description 7:5 - 000 R0 Not used 4 DMAREQ4 0 R/W1 DMA transfer request, channel 4 H0 When set to 1 activate the DMA channel (has the same effect as a single trigger event.). Only by setting the armed bit to 0 in the DMAARM register, can the channel be stopped if already started. This bit is cleared when the DMA channel is granted access. DMAREQ3 3 0 R/W1 DMA transfer request, channel 3 H0 When set to 1 activate the DMA channel (has the same effect as a single trigger event.). Only by setting the armed bit to 0 in the DMAARM register, can the channel be stopped if already started. This bit is cleared when the DMA channel is granted access. DMAREQ2 2 0 R/W1 DMA transfer request, channel 2 H0 When set to 1 activate the DMA channel (has the same effect as a single trigger event.). Only by setting the armed bit to 0 in the DMAARM register, can the channel be stopped if already started. This bit is cleared when the DMA channel is granted access. DMAREQ1 1 0 R/W1 DMA transfer request, channel 1 H0 When set to 1 activate the DMA channel (has the same effect as a single trigger event.). Only by setting the armed bit to 0 in the DMAARM register, can the channel be stopped if already started. This bit is cleared when the DMA channel is granted access. DMAREQ0 0 0 R/W1 DMA transfer request, channel 0 H0 When set to 1 activate the DMA channel (has the same effect as a single trigger event.). Only by setting the armed bit to 0 in the DMAARM register, can the channel be stopped if already started. This bit is cleared when the DMA channel is granted access. DMA0CFGH (0xD5) – DMA Channel 0 Configuration Address High Byte Bit Name Reset R/W Description 7:0 DMA0CFG[15:8] 0x00 R/W The DMA channel 0 configuration address, high order DMA0CFGL (0xD4) – DMA Channel 0 Configuration Address Low Byte Bit Name Reset R/W Description CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 96 of 232 CC2430 Bit Name Reset R/W Description 7:0 DMA0CFG[7:0] 0x00 R/W The DMA channel 0 configuration address, low order DMA1CFGH (0xD3) – DMA Channel 1-4 Configuration Address High Byte Bit Name Reset R/W Description 7:0 DMA1CFG[15:8] 0x00 R/W The DMA channel 1-4 configuration address, high order DMA1CFGL (0xD2) – DMA Channel 1-4 Configuration Address Low Byte Bit Name Reset R/W Description 7:0 DMA1CFG[7:0] 0x00 R/W The DMA channel 1-4 configuration address, low order DMAIRQ (0xD1) – DMA Interrupt Flag Bit Name Reset R/W Description 7:5 - 000 R/W0 Not used 4 DMAIF4 0 R/W0 DMA channel 4 interrupt flag. 0 : DMA channel transfer not complete 1 : DMA channel transfer complete/interrupt pending 3 DMAIF3 0 R/W0 DMA channel 3 interrupt flag. 0 : DMA channel transfer not complete 1 : DMA channel transfer complete/interrupt pending 2 DMAIF2 0 R/W0 DMA channel 2 interrupt flag. 0 : DMA channel transfer not complete 1 : DMA channel transfer complete/interrupt pending 1 DMAIF1 0 R/W0 DMA channel 1 interrupt flag. 0 : DMA channel transfer not complete 1 : DMA channel transfer complete/interrupt pending 0 DMAIF0 0 R/W0 DMA channel 0 interrupt flag. 0 : DMA channel transfer not complete 1 : DMA channel transfer complete/interrupt pending CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 97 of 232 CC2430 13.3 16-bit Timer, Timer1 Timer 1 is an independent 16-bit timer which supports typical timer/counter functions such as input capture, output compare and PWM functions. The timer has three independent capture/compare channels. The timer uses one I/O pin per channel. The timer is used for a wide range of control and measurement applications and the availability of up/down count mode with three channels will for example allow implementation of motor control applications. The features of Timer 1 are as follows: • Three capture/compare channels • Rising, falling or any edge input capture • Set, clear or toggle output compare • Free-running, modulo counter operation • Clock prescaler for divide by 1, 8, 32 or 128 • Interrupt request generated on each capture/compare and terminal count • Capture triggered by radio • DMA trigger function or up/down 13.3.1 16-bit Timer Counter The timer consists of a 16-bit counter that increments or decrements at each active clock edge. The period of the active clock edges is defined by the register bits CLKCON.TICKSPD which sets the global division of the system clock giving a variable clock tick frequency from 0.25 MHz to 32 MHz. This is further divided in Timer 1 by the prescaler value set by T1CTL.DIV. This prescaler value can be from 1 to 128. Thus the lowest clock frequency used by Timer 1 is 1953.125 Hz and the highest is 32 MHz when the 32 MHz crystal oscillator is used as system clock source. When the 16 MHz RC oscillator is used as system clock source then the highest clock frequency used by Timer 1 is 16 MHz. The counter operates as either a free-running counter, a modulo counter or as an up/down counter for use in centre-aligned PWM. It is possible to read the 16-bit counter value through the two 8-bit SFRs; T1CNTH and T1CNTL, containing the high-order byte and low-order byte respectively. When the T1CNTL is read, the high-order byte of the counter at that instant is buffered in T1CNTH so that the high-order byte can be read from T1CNTH. Thus T1CNTL shall always be read first before reading T1CNTH. All write accesses to the T1CNTL register will reset the 16-bit counter. The counter produces an interrupt request when the terminal count value (overflow) is reached. It is possible to clear and halt the counter with T1CTL control register settings. The counter is started when a value other than 00 is written to T1CTL.MODE. If 00 is written to T1CTL.MODE the counter halts at its present value. 13.3.2 Timer 1 Operation In general, the control register T1CTL is used to control the timer operation. The various modes of operation are described below. 13.3.3 Free-running Mode In the free-running mode of operation the counter starts from 0x0000 and increments at each active clock edge. When the counter reaches 0xFFFF the counter is loaded with 0x0000 and continues incrementing its value as shown in Figure 20. When the terminal count value 0xFFFF is reached, the flag T1CTL.OVFIF is set. An interrupt request is generated if the corresponding interrupt mask bit TIMIF.OVFIM is set. The free-running mode can be used to generate independent time intervals and output signal frequencies. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 98 of 232 CC2430 FFFFh 0000h OVFL OVFL Figure 20: Free-running mode 13.3.4 Modulo Mode When the timer operates in modulo mode the 16-bit counter starts at 0x0000 and increments at each active clock edge. When the counter reaches the terminal count value held in registers T1CC0H:T1CC0L, the counter is reset to 0x0000 and continues to increment. The flag T1CTL.OVFIF is set when the terminal count value is reached. An interrupt request is generated if the corresponding interrupt mask bit TIMIF.OVFIM is set. The modulo mode can be used for applications where a period other then 0xFFFF is required. The counter operation is shown in Figure 21. T1CC0 0000h OVFL OVFL Figure 21: Modulo mode 13.3.5 Up/down Mode In the up/down timer mode, the counter repeatedly starts from 0x0000 and counts up until the value held in T1CC0H:T1CC0L is reached and then the counter counts down until 0x0000 is reached as shown in Figure 22. This timer mode is used when symmetrical output pulses are required with a period other than 0xFFFF, and therefore allows implementation of centre-aligned PWM output applications. The flag T1CTL.OVFIF is not set when the terminal count value is reached in the up/down mode. Clearing the counter by writing to T1CNTL will also reset the count direction to the count up from 0x0000 mode. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 99 of 232 CC2430 T1CC0 0000h OVFL OVFL Figure 22 : Up/down mode 13.3.6 Channel Mode Control The channel mode is set with each channel’s control and status register T1CCTLn. The settings include input capture and output compare modes. 13.3.7 Input Capture Mode When a channel is configured as an input capture channel, the I/O pin associated with that channel, is configured as an input. After the timer has been started, a rising edge, falling edge or any edge on the input pin will trigger a capture of the 16-bit counter contents into the associated capture register. Thus the timer is able to capture the time when an external event takes place. Note: before an I/O pin can be used by the timer, the required I/O pin must be configured as a Timer 1 peripheral pin as described in section 13.1.3 on page 70 . The channel input pin is synchronized to the internal system clock. Thus pulses on the input pin must have a minimum duration greater than the system clock period. The contents of the 16-bit capture register is read out from registers T1CCnH:T1CCnL. When the capture takes place the interrupt flag for the channel is set. This bit is T1CTL.CH0IF for channel 0, T1CTL.CH1IF for channel 1, and T1CTL.CH2IF for channel 2. An interrupt request is generated if the corresponding interrupt mask bit on T1CCTL0.IM, T1CCTL1.IM, or T1CCTL2.IM, respectively, is set. 13.3.8 RF Event Capture Each timer channel may be configured so that an RF interrupt event will trigger a capture instead of the normal input pin capture. This function is selected with the register bit T1CCTLx.CPSEL, which selects to use either the input pin or the RF interrupt as capture event. When RF is selected as capture input, the interrupt source(s) enabled by RFIM (see section 14.4.1 on page 166) will trigger a capture. In this way the timer can be used to capture a value when e.g. a start of frame delimiter (SFD) is detected. 13.3.9 Output Compare Mode In output compare mode the I/O pin associated with a channel is set as an output. After the timer has been started, the contents of the counter is compared with the contents of the channel compare register T1CCnH:T1CCnL. If the compare register equals the counter contents, the output pin is set, reset or toggled according to the compare output mode setting of T1CCTLn.CMP. Note that all edges on output pins are glitch-free when operating in a given output compare mode. Writing to the compare register T1CCnL is buffered so that a value written to T1CCnL does not take effect until the corresponding high order register, T1CCnH is written. For output compare modes 1-3, a new value written to the compare register T1CCnH:T1CCnL takes effect after the registers have been written. For other output compare modes the new value written to the compare register take effect when the timer reaches 0x0000. Note that channel 0 has fewer output compare modes because T1CC0H:T1CC0L has a special function in modes 6 and 7, meaning these modes would not be useful for channel 0. When a compare occurs, the interrupt flag for the channel is set. This bit is T1CTL.CH0IF for channel 0, T1CTL.CH1IF for channel 1, CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 100 of 232 CC2430 and T1CTL.CH2IF for channel 2. An interrupt request is generated if the corresponding T1CCTL0.IM, interrupt mask bit on T1CCTL1.IM, or T1CCTL2.IM, respectively, is set. Examples of output compare modes in various timer modes are given in the following figures. Edge-aligned PWM output signals can be generated using the timer modulo mode and channels 1 and 2 in output compare mode 6 or 7 as shown in Figure 23. The period of the PWM signal is determined by the setting T1CC0 and the duty cycle for the channel output is determined by T1CCn. The timer freerunning mode may also be used. In this case CLKCON.TICKSPD and the prescaler divider value T1CTL.DIV set the period of the PWM signal. The polarity of the PWM signal is determined by whether output compare mode 6 or 7 is used. PWM output signals can also be generated using output compare modes 4 and 5 as shown in the same figure, or by using modulo mode as shown in Figure 24. Using output compare mode 4 and 5 is preferred for simple PWM. Centre-aligned PWM outputs can be generated when the timer up/down mode is selected. The channel output compare mode 4 or 5 is selected depending on required polarity of the PWM signal. The period of the PWM signal is determined by T1CC0 and the duty cycle for the channel output is determined by T1CCn. The centre-aligned PWM mode is required by certain types of motor drive applications and typically less noise is produced than the edgealigned PWM mode because the I/O pin transitions are not lined up on the same clock edge. In some types of applications, a defined delay or dead time is required between outputs. Typically this is required for outputs driving an H-bridge configuration to avoid uncontrolled cross-conduction in one side of the H-bridge. The delay or dead-time can be obtained in the PWM outputs by using T1CCn as shown in the following: Assuming that channel 1 and channel 2 are used to drive the outputs using timer up/down mode and the channels use output compare modes 4 and 5 respectively, then the timer period (in Timer 1 clock periods) is: TP = T1CC0 x 2 and the dead time, i.e. the time when both outputs are low, (in Timer 1 clock periods) is given by: TD = T1CC1 – T1CC2 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 101 of 232 CC2430 FFFFh 0000h 1 - Set output on compare 2 - Clear output on compare 3 - Toggle output on compare 4 - Set output on compare-up, clear on 0 5 - Clear output on compare-up, set on 0 6 - Clear when T1CC0, set when T1CCn 7 - Set when T1CC0, clear when T1CCn T1CCn T1CC0 T1CCn T1CC0 Figure 23: Output compare modes, timer free-running mode CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 102 of 232 CC2430 T1CC0 0000h 1 - Set output on compare 2 - Clear output on compare 3 - Toggle output on compare 4 - Set output on compare-up, clear on 0 5 - Clear output on compare-up, set on 0 6 - Clear when T1CC0, set when T1CCn 7 - Set when T1CC0, clear when T1CCn T1CCn T1CC0 T1CCn T1CC0 Figure 24: Output compare modes, timer modulo mode CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 103 of 232 CC2430 T1CC0 T1CCn 0000h 1 - Set output on compare 2 - Clear output on compare 3 - Toggle output on compare 4 - Set output on compare-up, clear on compare-down 5 - Clear output on compare-up, set on compare-down 6 - Clear when T1CC0, set when T1CCn 7 - Set when T1CC0, clear when T1CCn T1CCn T1CC0 T1CCn T1CCn T1CC0 T1CCn Figure 25: Output modes, timer up/down mode 13.3.10 Timer 1 Interrupts There is one interrupt vector assigned to the timer. An interrupt request is generated when one of the following timer events occur: • Counter reaches terminal count value. • Input capture event. • Output compare event The register bits T1CTL.OVFIF, T1CTL.CH0IF, T1CTL.CH1IF, and T1CTL.CH2IF contains the interrupt flags for the terminal count value event, and the three channel compare/capture events, respectively. An interrupt request is only generated when the corresponding interrupt mask bit is set. The interrupt mask bits are T1CCTL0.IM, T1CCTL1.IM, T1CCTL2.IM and TIMIF.OVFIM. If there are other pending CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 104 of 232 CC2430 interrupts, the corresponding interrupt flag must be cleared by software before a new interrupt request is generated. Also, enabling an interrupt mask bit will generate a new interrupt request if the corresponding interrupt flag is set. 13.3.11 Timer 1 DMA Triggers There are three DMA triggers associated with Timer 1. These are DMA triggers T1_CH0, T1_CH1 and T1_CH2 which are generated on timer compare events as follows: • T1_CH0 – channel 0 compare • T1_CH1 – channel 1 compare • T1_CH2 – channel 2 compare 13.3.12 Timer 1 Registers This section describes the Timer 1 registers which consist of the following registers: • T1CNTH – Timer 1 Count High • T1CNTL – Timer 1 Count Low • T1CTL – Timer 1 Control and Status • T1CCTLx – Timer 1 Channel x Capture/Compare Control • T1CCxH – Timer 1 Channel x Capture/Compare Value High • T1CCxL – Timer 1 Channel x Capture/Compare Value Low CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 105 of 232 CC2430 T1CNTH (0xE3) – Timer 1 Counter High Bit Name Reset R/W Description 7:0 CNT[15:8] 0x00 R Timer count high order byte. Contains the high byte of the 16-bit timer counter buffered at the time T1CNTL is read. T1CNTL (0xE2) – Timer 1 Counter Low Bit Name Reset R/W Description 7:0 CNT[7:0] 0x00 R/W Timer count low order byte. Contains the low byte of the 16-bit timer counter. Writing anything to this register results in the counter being cleared to 0x0000. T1CTL (0xE4) – Timer 1 Control and Status Bit Name Reset R/W Description 7 CH2IF 0 R/W0 Timer 1 channel 2 interrupt flag. Set when the channel 2 interrupt condition occurs. Writing a 1 has no effect. 6 CH1IF 0 R/W0 Timer 1 channel 1 interrupt flag. Set when the channel 1 interrupt condition occurs. Writing a 1 has no effect. 5 CH0IF 0 R/W0 Timer 1 channel 0 interrupt flag. Set when the channel 0 interrupt condition occurs. Writing a 1 has no effect. 4 OVFIF 0 R/W0 Timer 1 counter overflow interrupt flag. Set when the counter reaches the terminal count value in free-running or modulo mode. Writing a 1 has no effect. 3:2 DIV[1:0] 00 R/W Prescaler divider value. Generates the active clock edge used to update the counter as follows: 1:0 MODE[1:0] 00 R/W 00 Tick frequency/1 01 Tick frequency/8 10 Tick frequency/32 11 Tick frequency/128 Timer 1 mode select. The timer operating mode is selected as follows: 00 Operation is suspended 01 Free-running, repeatedly count from 0x0000 to 0xFFFF 10 Modulo, repeatedly count from 0x0000 to T1CC0 11 Up/down, repeatedly count from 0x0000 to T1CC0 and from T1CC0 down to 0x0000 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 106 of 232 CC2430 T1CCTL0 (0xE5) – Timer 1 Channel 0 Capture/Compare Control Bit Name Reset R/W Description 7 CPSEL 0 R/W Capture select. Timer 1 channel 0 captures on RF interrupt from RF transceiver or capture input pin. 0 Use normal capture input 1 Use RF interrupt from RF transceiver for capture 6 IM 1 R/W Channel 0 interrupt mask. Enables interrupt request when set. 5:3 CMP[2:0] 000 R/W Channel 0 compare mode select. Selects action on output when timer value equals compare value in T1CC0 2 1:0 MODE CAP[1:0] 0 00 R/W R/W 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Not used 110 Not used 111 Not used Mode. Select Timer 1 channel 0 capture or compare mode 0 Capture mode 1 Compare mode Channel 0 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T1CC0H (0xDB) – Timer 1 Channel 0 Capture/Compare Value High Bit Name Reset R/W Description 7:0 T1CC0[15:8] 0x00 R/W Timer 1 channel 0 capture/compare value, high order byte T1CC0L (0xDA) – Timer 1 Channel 0 Capture/Compare Value Low Bit Name Reset R/W Description 7:0 T1CC0[7:0] 0x00 R/W Timer 1 channel 0 capture/compare value, low order byte CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 107 of 232 CC2430 T1CCTL1 (0xE6) – Timer 1 Channel 1 Capture/Compare Control Bit Name Reset R/W Description 7 CPSEL 0 R/W Capture select. Timer 1 channel 1 captures on RF interrupt from RF transceiver or capture input pin 0 Use normal capture input 1 Use RF interrupt from RF transceiver for capture 6 IM 1 R/W Channel 1 interrupt mask. Enables interrupt request when set. 5:3 CMP[2:0] 000 R/W Channel 1 compare mode select. Selects action on output when timer value equals compare value in T1CC1 2 1:0 MODE CAP[1:0] 0 00 R/W R/W 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Clear when equal T1CC0, set when equal T1CC1 110 Set when equal T1CC0, clear when equal T1CC1 111 Not used Mode. Select Timer 1 channel 1 capture or compare mode 0 Capture mode 1 Compare mode Channel 1 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T1CC1H (0xDD) – Timer 1 Channel 1 Capture/Compare Value High Bit Name Reset R/W Description 7:0 T1CC1[15:8] 0x00 R/W Timer 1 channel 1 capture/compare value, high order byte T1CC1L (0xDC) – Timer 1 Channel 1 Capture/Compare Value Low Bit Name Reset R/W Description 7:0 T1CC1[7:0] 0x00 R/W Timer 1 channel 1 capture/compare value, low order byte CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 108 of 232 CC2430 T1CCTL2 (0xE7) – Timer 1 Channel 2 Capture/Compare Control Bit Name Reset R/W Description 7 CPSEL 0 R/W Capture select. Timer 1 channel 2 captures on RF interrupt from RF transceiver or capture input pin 0 Use normal capture input 1 Use RF interrupt from RF transceiver for capture 6 IM 1 R/W Channel 2 interrupt mask. Enables interrupt request when set. 5:3 CMP[2:0] 000 R/W Channel 2 compare mode select. Selects action on output when timer value equals compare value in T1CC2 2 1:0 MODE CAP[1:0] 0 00 R/W R/W 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Clear when equal T1CC0, set when equal T1CC2 110 Set when equal T1CC0, clear when equal T1CC2 111 Not used Mode. Select Timer 1 channel 2 capture or compare mode 0 Capture mode 1 Compare mode Channel 2 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T1CC2H (0xDF) – Timer 1 Channel 2 Capture/Compare Value High Bit Name Reset R/W Description 7:0 T1CC2[15:8] 0x00 R/W Timer 1 channel 2 capture/compare value, high order byte T1CC2L (0xDE) – Timer 1 Channel 2 Capture/Compare Value Low Bit Name Reset R/W Description 7:0 T1CC2[7:0] 0x00 R/W Timer 1 channel 2 capture/compare value, low order byte The TIMIF.OVFIM register bit resides in the TIMIF register, which is described together with timer 3 and timer 4 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 109 of 232 CC2430 13.4 MAC Timer (Timer 2) The MAC Timer is mainly used to provide timing for 802.15.4 CSMA-CA algorithms and for general timekeeping in the 802.15.4 MAC layer. When the MAC Timer is used together with the Sleep Timer described in section 13.5, the timing function is provided even when the system enters low-power modes. The main features of the MAC Timer are the following: • 16-bit timer up-counter providing symbol/frame period: 16µs/320µs • Adjustable period with accuracy 31.25 ns • 8-bit timer compare function • 20-bit overflow count • 20-bit overflow count compare function • Start of Frame Delimiter capture function. • Timer start/stop synchronous with 32.768 kHz clock and timekeeping maintained by Sleep Timer. • Interrupts generated on compare and overflow • DMA trigger capability 13.4.1 Timer Operation This section describes the operation of the timer. 13.4.1.1 General After a reset the timer is in the timer IDLE mode where it is stopped. The timer starts running when T2CNF.RUN is set to 1. The timer will then enter the timer RUN mode. The entry is either immediate or it is performed synchronous with the 32.768 kHz clock. See section 13.4.4 for a description of the synchronous start and stop mode. Once the timer is running in RUN mode, it can be stopped by writing a 0 to T2CNF.RUN. The timer will then enter the timer IDLE mode. The stopping of the timer is performed either immediately or it is performed synchronous with the 32.768 kHz clock 13.4.1.2 Up Counter The MAC Timer contains a 16-bit timer, which increments during each clock cycle. 13.4.1.3 Timer overflow When the timer is about to count to a value that is equal to or greater than the timer period set by registers T2CAPHPH:T2CAPLPL, a timer overflow occurs. When the timer overflow occurs, the timer value is set to the difference between the value it is about to count to and the timer period during the next clock cycle. If the overflow interrupt mask bit T2PEROF2.PERIM is 1, an interrupt request is generated. The interrupt flag bit T2CNF.PERIF is set to 1 regardless of the interrupt mask value. 13.4.1.4 Timer delta increment The timer period may be adjusted once during a timer period by writing a timer delta value. When a timer delta value is written to the registers T2THD:T2TLD, the 16-bit timer halts at its current value and a delta counter starts counting. The delta counter starts counting from the delta value written, down to zero. Once the delta counter reaches zero, the 16-bit timer starts counting again. The delta counter decrements by the same rate as the timer. When the delta counter has reached zero it will not start counting again until the delta value is written once again. In this way a timer period may be increased by the delta value in order to make adjustments to the timer overflow events over time. 13.4.1.5 Timer Compare A timer compare occurs when the timer is about to count to a value that is equal or greater than the 8-bit compare value held in the T2CMP register. Note that the compare value is only 8 bits so the compare is made between the compare value and either the most significant byte or the least significant byte of the timer. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 110 of 232 CC2430 The selection of which part of the timer is to be compared is set by the T2CNF.CMSEL bit. When a timer compare occurs the interrupt flag T2CNF.CMPIF is set to 1. An interrupt request is also generated if the interrupt mask T2PEROF2.CMPIM is set to 1. 13.4.1.6 Capture Input The MAC timer has a timer capture function which captures at the time when the start of frame delimiter (SFD) status in the radio goes high. Refer to sections 14.6 and 14.9 starting on page 170 for a description of the SFD. When the capture event occurs the current timer value will be captured into the capture register. The capture value can be read from the registers T2CAPHPH:T2CAPLPL. The value of the overflow count is also captured (see section 13.4.1.7) at the time of the capture event and can be read from the registers T2PEROF2:T2PEROF1:T2PEROF0. 13.4.1.7 Overflow count At each timer overflow, the 20-bit overflow counter is incremented by 1. The overflow counter value is read through the SFR registers T2OF2:T2OF1:T2OF0. Note that the register contents in T2OF2:T2OF1 is latched when T2OF0 is read, meaning that T2OF0 must always be read first. Overflow count update The overflow count value may be updated by writing to the registers T2OF2:T2OF1:T2OF0 when the timer is IDLE. 13.4.1.8 Overflow count compare A compare value may be set for the overflow counter. The compare value is set by writing to T2PEROF2:T2PEROF1:T2PEROF0. When the overflow count value is equal or greater than the set compare value an overflow compare event occurs. If the overflow compare interrupt mask bit T2PEROF2.OFCMPIM is 1, an interrupt request is generated. The interrupt flag bit T2CNF.OFCMPIF is set to 1 regardless of the interrupt mask value. 13.4.2 Interrupts The Timer has three individually maskable interrupt sources. These are the following: • Timer overflow • Timer compare • Overflow count compare The interrupt flags are given in the T2CNF registers. The interrupt flag bits are set only by hardware and may be cleared only by writing to the SFR register. Each interrupt source may be masked by the mask bits in the T2PEROF2 register. An interrupt is generated when the corresponding mask bit is set, otherwise the interrupt will not be generated. The interrupt flag bit is set, however disregarding the state of the interrupt mask bit. 13.4.3 DMA Triggers Timer 2 can generate two DMA triggers – T2_COMP and T2_OVFL which are activated as follows: Overflow count increment selection • T2_COMP: Timer 2 compare event The increment value for the overflow counter can be set once by writing to the T2OF2:T2OF1:T2OF0 registers when the timer is in the RUN state. The value written to these registers will be added to the normal increment of 1 at the time of the next overflow count increment i.e. at the next timer overflow. The overflow count increment will return to 1 at the following increment. • T2_OVFL: Timer 2 overflow event 13.4.4 Timer start/stop synchronization This section describes the synchronized timer start and stop. 13.4.4.1 General The Timer can be started and stopped synchronously with the 32.768 kHz clock rising edge. Note this event is derived from a 32.768 kHz clock signal, but is synchronous with the 32 MHz system CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 111 of 232 CC2430 clock and thus has a period approximately equal the 32.768 kHz clock period. Calculation of new timer value and overflow count value At the time of a synchronous start the timer is reloaded with new calculated values for the timer and overflow count such that it appears that the timer has not been stopped. N c = CurrentSleepTimerValue 13.4.4.2 Timer synchronous stop K ck = ClockRatio = 976.5625 4 After the timer has started running, i.e. entered timer RUN mode it is stopped synchronously by writing 0 to T2CNF.RUN when T2CNF.SYNC is 1. After T2CNF.RUN has been set to 0, the timer will continue running until the 32.768 kHz clock rising edge is sampled as 1. When this occurs the timer is stopped and the current Sleep timer value is stored. stw = SleepTimerWidth = 24 TOH = Overhead = 75 13.4.4.3 Timer synchronous start Nt = Nc − N s When the timer is in the IDLE mode it is started synchronously by writing 1 to T2CNF.RUN when T2CNF.SYNC is 1. After T2CNF.RUN has been set to 1, the timer will remain in the IDLE mode until the 32.768 kHz clock rising edge is detected. When this occurs the timer will first calculate new values for the 16-bit timer value and for the 20-bit timer overflow count, based on the current and stored Sleep timer values and the current 16-bit timer values. The new MAC Timer and overflow count values are loaded into the timer and the timer enters the RUN mode. This synchronous start process takes 75 clock cycles from the time when the 32.768 kHz clock rising edge is sampled high. The synchronous start and stop function requires that the system clock frequency is selected to be 32 MHz. If the 16 MHz clock is selected, there will be an offset added to the new calculated value. The method for calculating the new MAC Timer value and overflow count value is given below. Due to the fact that the MAC Timer clock and Sleep timer clocks are asynchronous with a non-integer clock ratio there will be an error of maximum ±1 in calculated timer value compared to the ideal timer value. N s = StoredSleepTimerValue P = Timer 2 Period Oc = CurrentOverflowCountValue Tc = CurrentTimerValue N t ≤ 0 ⇒ N d = 2 stw + N t ; N t > 0 ⇒ N d = N t C = N d ⋅ K ck + TC + TOH (Rounded to nearest integer value) T = C mod P O= (C − T ) + O P C Timer 2Value = T Timer 2OverflowCount = O 13.4.5 Timer 2 Registers The SFR registers associated with Timer 2 are listed in this section. These registers are the following: • T2CNF – Timer 2 Configuration • T2HD – Timer 2 Count/Delta High • T2LD – Timer 2 Count/Delta Low • T2CMP – Timer 2 Compare • T2OF2 – Timer 2 Overflow Count 2 • T2OF1 – Timer 2 Overflow Count 1 • T2OF0 – Timer 2 Overflow Count 0 4 Clock ratio of MAC Timer clock frequency (32 MHz) and Sleep timer clock frequency (32.768 kHz) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 112 of 232 CC2430 • T2CAPHPH – Timer 2 Capture/Period High • T2PEROF1 – Timer Compare/Capture 1 2 Overflow • T2CAPLPL – Timer 2 Capture/Period Low • T2PEROF0 – Timer Compare/Capture 0 2 Overflow • T2PEROF2 – Timer Compare/Capture 2 2 Overflow T2CNF (0xC3) – Timer 2 Configuration Bit Name Reset R/W Description 7 CMPIF 0 R/W0 Timer compare interrupt flag. This bit is set to 1 when a timer compare event occurs. Cleared by software only. Writing a 1 to this bit has no effect. 6 PERIF 0 R/W0 Overflow interrupt flag. This bit is set to 1 when a period event occurs. Cleared by software only. Writing a 1 to this bit has no effect. 5 OFCMPIF 0 R/W Overflow compare interrupt flag. This bit is set to 1 when a overflow compare occurs. Cleared by software only. Writing a 1 to this bit has no effect. 4 - 0 R0 Not used. Read as 0 3 CMSEL 0 R/W Timer compare source select. 0 Compare with 16-bit Timer bits [15:8] 1 Compare with 16-bit Timer bits [7:0] 2 - 0 R/W 1 SYNC 1 R/W Reserved. Always set to 0 Enable synchronized start and stop. 0 start and stop of timer is immediate 1 start and stop of timer is synchronized with 32.768 kHz edge and new timer values are reloaded. 0 RUN 0 R/W Start timer. Writing this bit shall start or stop the timer. When reading this bit the current state of the timer is returned. 0 stop timer (IDLE state) 1 start timer (RUN state) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 113 of 232 CC2430 T2THD (0xA7) – Timer 2 Timer Value High Byte Bit Name Reset R/W Description 7:0 THD[7:0] 0x00 R/W The value read from this register is the high-order byte of the timer value. The high-order byte read is from timer value at the last instant when T2TLD was read. The value written to this register while the timer is running is the highorder byte of the timer delta counter value. The low-order byte of this value is the value last written to T2TLD. The timer will halt for delta clock cycles. The value written to this register while the timer is idle will be written to the high-order byte of the timer. T2TLD (0xA6) – Timer 2 Timer Value Low Byte Bit Name Reset R/W Description 7:0 TLD[7:0] 0x00 R/W The value read from this register is the low-order byte of the timer value. The value written to this register while the timer is running is the loworder byte of the timer delta counter value. The timer will halt for delta clock cycles. The value written to T2TLD will not take effect until T2THD is written. The value written to this register while the timer is idle will be written to the low-order byte of the timer. T2CMP (0x94) – Timer 2 Compare Value Bit Name Reset R/W Description 7:0 CMP[7:0] 0x00 R/W Timer Compare value. A timer compare occurs when the compare source selected by T2CNF.CMSEL equals the value held in CMP. T2OF2 (0xA3) – Timer 2 Overflow Count 2 Bit Name Reset R/W Description 7:4 - 0000 R0 Not used, read as 0 3:0 OF2[3:0] 0x00 R/W Overflow count. High bits T2OF[19:16]. T2OF is incremented by 1 each time the timer overflows i.e. timer counts to a value greater or equal to period. When reading this register, the value read is the value latched when T2OF0 was read. Writing to this register when the timer is in IDLE or RUN states will force the overflow count to be set to the value written to T2OF2:T2OF1:T2OF0. If the count would otherwise be incremented by 1 when this register is written then 1 is added to the value written. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 114 of 232 CC2430 T2OF1 (0xA2) – Timer 2 Overflow Count 1 Bit Name Reset R/W Description 7:0 OF1[7:0] 0x00 R/W Overflow count. Middle bits T2OF[15:8]. T2OF is incremented by 1 each time the timer overflows i.e. timer counts to a value greater or equal to period. When reading this register, the value read is the value latched when T2OF0 was read. Writing to this register when the timer is in IDLE or RUN states will force the overflow count to be set to the value written to T2OF2:T2OF1:T2OF0. If the count would otherwise be incremented by 1 when this register is written then 1 is added to the value written. The value written will not take effect until T2OF2 is written. T2OF0 (0xA1) – Timer 2 Overflow Count 0 Bit Name Reset R/W Description 7:0 OF0[7:0] 0x00 R/W Overflow count. Low bits T2OF[7:0]. T2OF is incremented by 1 each time the timer overflows i.e. timer counts to a value greater or equal to period. Writing to this register when the timer is in IDLE or RUN states will force the overflow count to be set to the value written to T2OF2:T2OF1:T2OF0. If the count would otherwise be incremented by 1 when this register is written then 1 is added to the value written. The value written will not take effect until T2OF2 is written. T2CAPHPH (0xA5) – Timer 2 Period High Byte Bit Name Reset R/W Description 7:0 CAPHPH[7:0] 0xFF R/ Capture value high/timer period high. Writing this register sets the high order bits [15:8] of the timer period. Reading this register gives the high order bits [15:8] of the timer value at the last capture event. T2CAPLPL (0xA4) – Timer 2 Period Low Byte Bit Name Reset R/W Description 7:0 CAPLPL[7:0] 0xFF R/W Capture value low/timer period low. Writing this register sets the low order bits [7:0] of the timer period. Reading this register gives the low order bits [7:0] of the timer value at the last capture event. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 115 of 232 CC2430 T2PEROF2 (0x9E) – Timer 2 Overflow Capture/Compare 2 Bit Name Reset R/W Description 7 CMPIM 0 R/W Compare interrupt mask. 0: No interrupt is generated on compare event 1: Interrupt is generated on compare event. 6 PERIM 0 R/W Overflow interrupt mask 0: No interrupt is generated on timer overflow 1: Interrupt is generated on timer overflow 5 OFCMPIM 0 R/W Overflow count compare interrupt mask 0: No interrupt is generated on overflow count compare 1: Interrupt is generated on overflow count compare 4 - 0 R0 Not used, read as 0 3:0 PEROF2[3:0] 0000 R/W Overflow count capture/Overflow count compare value. Writing these bits set the high bits [19:16] of the overflow count compare value. Reading these bits returns the high bits [19:16] of the overflow count value at the time of the last capture event. T2PEROF1 (0x9D) – Timer 2 Overflow Capture/Compare 1 Bit Name Reset R/W Description 7:0 PEROF1[7:0] 0x00 R/W Overflow count capture /Overflow count compare value. Writing these bits set the middle bits [15:8] of the overflow count compare value. Reading these bits returns the middle bits [15:8] of the overflow count value at the time of the last capture event. T2PEROF0 (0x9C) – Timer 2 Overflow Capture/Compare 0 Bit Name Reset R/W Description 7:0 PEROF0[7:0] 0x00 R/W Overflow count capture /Overflow count compare value. Writing these bits set the low bits [7:0] of the overflow count compare value. Reading these bits returns the low bits [7:0] of the overflow count value at the time of the last capture event. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 116 of 232 CC2430 13.5 Sleep Timer The Sleep timer is used to set the period between when the system enters and exits low-power sleep modes. value of the timer can be read from the SFR registers ST2:ST1:ST0. The Sleep timer is also used to maintain timing in Timer 2 (MAC Timer) when entering a low-power sleep mode. 13.5.1.2 Timer Compare The main features of the Sleep timer are the following: • 24-bit timer up-counter operating at 32.768 kHz clock • 24-bit compare • Low-power PM2 • mode operation in A timer compare occurs when the timer value is equal to the 24-bit compare value. The compare value is set by writing to the registers ST2:ST1:ST0. When a timer compare occurs the interrupt flag STIF (interrupt 5) is asserted. The interrupt enable bit for the ST interrupt is IEN0.STIE and the interrupt flag is IRCON.STIF. When operating in power modes PM1 or PM2, the Sleep timer will be running and the Sleep timer compare event is used to wake up the device and return to active operation in PM0. Interrupt and DMA trigger 13.5.1 Timer Operation This section describes the operation of the timer. 13.5.1.1 General The Sleep timer is a 24-bit timer running on the 32.768 kHz clock. The timer starts running immediately after a reset and continues to run uninterrupted. The current The default value of the compare value after reset is 0xFFFFFF. The Sleep timer compare can also be used as a DMA trigger (DMA trigger 9 in Table 37). ST2 (0x97) – Sleep Timer 2 Bit Name Reset R/W Description 7:0 ST2[7:0] 0x00 R/W Sleep timer count/compare value. When read, this register returns the high bits [23:16] of the sleep timer count. When writing this register sets the high bits [23:16] of the compare value. The value read is latched at the time of reading register ST0. The value written is latched when ST0 is written. ST1 (0x96) – Sleep Timer 1 Bit Name Reset R/W Description 7:0 ST1[7:0] 0x00 R/W Sleep timer count/compare value. When read, this register returns the middle bits [15:8] of the sleep timer count. When writing this register sets the middle bits [15:8] of the compare value. The value read is latched at the time of reading register ST0. The value written is latched when ST0 is written. ST0 (0x95) – Sleep Timer 0 Bit Name Reset R/W Description 7:0 ST0[7:0] 0x00 R/W Sleep timer count/compare value. When read, this register returns the low bits [7:0] of the sleep timer count. When writing this register sets the low bits [7:0] of the compare value. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 117 of 232 CC2430 13.6 8-bit Timer 3 and Timer 4 Timer 3 and 4 are 8-bit timers which support typical input capture and output compare operations using two capture/compare channels each. The timer allows general purpose timer and waveform generation functions. Features of Timer 3/4 are as follows: • Dual channel operation • Rising, falling or any edge input compare • Set, clear or toggle output compare • Clock prescaler for divide by 1, 2, 4, 8, 16, 32, 64, 128 • Interrupt request generated on each capture/compare and terminal count event • DMA trigger function 13.6.1 8-bit Timer Counter All timer functions are based on the main 8-bit counter found in Timer 3/4. The counter increments or decrements at each active clock edge. The period of the active clock edges is defined by the register bits CLKCON.TICKSPD which is further divided by the prescaler value set by TxCTL.DIV (where x refers to the timer number, 3 or 4). The counter operates as either a free-running counter, a down counter, a modulo counter or as an up/down counter. It is possible to read the 8-bit counter value through the SFR TxCNT where x refers to the timer number, 3 or 4. The possibility to clear and halt the counter is given with TxCTL control register settings. The counter is started when a 1 is written to TxCTL.START. If a 0 is written to TxCTL.START the counter halts at its present value. 13.6.2 Timer 3/4 Mode Control In general the control register TxCTL is used to control the timer operation. 13.6.2.1 Free-running Mode In the free-running mode of operation the counter starts from 0x00 and increments at each active clock edge. When the counter reaches 0xFF the counter is loaded with 0x00 and continues incrementing its value. When the terminal count value 0xFF is reached (i.e. an overflow occurs), the interrupt flag TIMIF.TxOVFIF is set. If the corresponding interrupt mask bit TxCTL.OVFIM is set, an interrupt request is generated. The freerunning mode can be used to generate independent time intervals and output signal frequencies. 13.6.2.2 Down mode In the down mode, after the timer has been started, the counter is loaded with the contents in TxCC. The counter then counts down to 0x00. The flag TIMIF.TxOVFIF is set when 0x00 is reached. If the corresponding interrupt mask bit TxCTL.OVFIM is set, an interrupt request is generated. The timer down mode can generally be used in applications where an event timeout interval is required. 13.6.2.3 Modulo Mode When the timer operates in modulo mode the 8-bit counter starts at 0x00 and increments at each active clock edge. When the counter reaches the terminal count value held in register TxCC the counter is reset to 0x00 and continues to increment. The flag TIMIF.TxOVFIF is set when on this event. If the corresponding interrupt mask bit TxCTL.OVFIM is set, an interrupt request is generated. The modulo mode can be used for applications where a period other than 0xFF is required. 13.6.2.4 Up/down Mode In the up/down timer mode, the counter repeatedly starts from 0x00 and counts up until the value held in TxCC is reached and then the counter counts down until 0x00 is reached. This timer mode is used when symmetrical output pulses are required with a period other than 0xFF, and therefore allows implementation of centre-aligned PWM output applications. Clearing the counter by writing to TxCTL.CLR will also reset the count direction to the count up from 0x00 mode. 13.6.3 Channel Mode Control The channel modes for each channel; 0 and 1, are set by the control and status registers CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 118 of 232 CC2430 TxCCTLn where n is the channel number, 0 or 1. The settings include input capture and output compare modes. This is TIMIF.TxCHnIF. An interrupt request is generated if the corresponding interrupt mask bit TxCCTLn.IM is set. 13.6.4 Input Capture Mode 13.6.6 Timer 3 and 4 interrupts When the channel is configured as an input capture channel, the I/O pin associated with that channel is configured as an input. After the timer has been started, either a rising edge, falling edge or any edge on the input pin triggers a capture of the 8-bit counter contents into the associated capture register. Thus the timer is able to capture the time when an external event takes place. There is one interrupt vector assigned to each of the timers. These are T3 (interrupt 11) and T4 (interrupt 12). An interrupt request is generated when one of the following timer events occur: The channel input pins are synchronized to the internal system clock. Thus pulses on the input pins must have a minimum duration greater than the system clock period. Note: before an I/O pin can be used by the timer, the required I/O pin must be configured as a Timer 3/4 peripheral pin as described in sections 13.1.4.4 and 13.1.4.5 . The content of the 8-bit capture registers is read out from registers TxCCn. When a capture takes place the interrupt flag corresponding to the actual channel is set. This is TIMIF.TxCHnIF. An interrupt request is generated if the corresponding interrupt mask bit TxCCTLn.IM is set. 13.6.5 Output Compare Mode In output compare mode the I/O pin associated with a channel shall be set to an output. After the timer has been started, the contents of the counter is compared with the contents of the channel compare register TxCC0n. If the compare register equals the counter contents, the output pin is set, reset or toggled according to the compare output mode setting of TxCCTL.CMP1:0. Note that all edges on output pins are glitch-free when operating in a given compare output mode. • Counter reaches terminal count value. • Input capture event. • Output compare event The SFR register TIMIF contains all interrupt flags for Timer 3 and Timer 4. The register bits TIMIF.TxOVFIF and TIMIF.TxCHnIF, contains the interrupt flags for the two terminal count value events and the four channel compare/capture events, respectively. An interrupt request is only generated when the corresponding interrupt mask bit is set. If there are other pending interrupts, the corresponding interrupt flag must be cleared by the CPU before a new interrupt request can be generated. Also, enabling an interrupt mask bit will generate a new interrupt request if the corresponding interrupt flag is set. 13.6.7 Timer 3 and Timer 4 DMA triggers There are two DMA triggers associated with Timer 3 and two DMA triggers associated with Timer 4. These are the following: • T3_CH0 : Timer 3 channel 0 compare • T3_CH1 : Timer 3 channel 1 compare • T4_CH0 : Timer 4 channel 0 compare • T4_CH0 : Timer 4 channel 1 compare Refer to section 13.2 on page 86 for a description on use of DMA channels. For simple PWM use, output compare modes 4 and 5 are preferred. Writing to the compare register TxCC0 does not take effect on the output compare value until the counter value is 0x00. Writing to the compare register TxCC1 takes effect immediately. When a compare occurs the interrupt flag corresponding to the actual channel is set. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 119 of 232 CC2430 13.6.8 Timer 3 and 4 registers T3CNT (0xCA) – Timer 3 Counter Bit Name Reset R/W Description 7:0 CNT[7:0] 0x00 R Timer count byte. Contains the current value of the 8-bit counter. T3CTL (0xCB) – Timer 3 Control Bit Name Reset R/W Description 7:5 DIV[2:0] 00 R/W Prescaler divider value. Generates the active clock edge used to clock the timer from CLKCON.TICKSPD as follows: 4 START 0 R/W 3 OVFIM 1 R/W0 000 Tick frequency /1 001 Tick frequency /2 010 Tick frequency /4 011 Tick frequency /8 100 Tick frequency /16 101 Tick frequency /32 110 Tick frequency /64 111 Tick frequency /128 Start timer. Normal operation when set, suspended when cleared Overflow interrupt mask 0 : interrupt is disabled 1 : interrupt is enabled 2 CLR 0 R0/W1 Clear counter. Writing high resets counter to 0x00 1:0 MODE[1:0] 00 R/W Timer 3 mode. Select the mode as follows: 00 Free running, repeatedly count from 0x00 to 0xFF 01 Down, count from T3CC0 to 0x00 10 Modulo, repeatedly count from 0x00 to T3CC0 11 Up/down, repeatedly count from 0x00 to T3CC0 and down to 0x00 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 120 of 232 CC2430 T3CCTL0 (0xCC) – Timer 3 Channel 0 Capture/Compare Control Bit Name Reset R/W Description 7 - 0 R0 Unused 6 IM 1 R/W Channel 0 interrupt mask 0 : interrupt is disabled 1 : interrupt is enabled 5:3 2 1:0 CMP[7:0] MODE CAP 000 0 00 R/W R/W R/W Channel 0 compare output mode select. Specified action on output when timer value equals compare value in T3CC0 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Set output on compare, clear on 0xFF 110 Clear output on compare, set on 0x00 111 Not used Mode. Select Timer 3 channel 0 capture or compare mode 0 Capture mode 1 Compare mode Channel 0 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T3CC0 (0xCD) – Timer 3 Channel 0 Capture/Compare Value Bit Name Reset R/W Description 7:0 VAL[7:0] 0x00 R/W Timer capture/compare value channel 0 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 121 of 232 CC2430 T3CCTL1 (0xCE) – Timer 3 Channel 1 Capture/Compare Control Bit Name Reset R/W Description 7 - 0 R0 Unused 6 IM 1 R/W Channel 1 interrupt mask 0 : interrupt is disabled 1 : interrupt is enabled 5:3 2 1:0 CMP[2:0] MODE CAP[1:0] 000 0 00 R/W R/W R/W Channel 1 compare output mode select. Specified action on output when timer value equals compare value in T3CC1 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Set output on compare, clear on T3CC0 110 Clear output on compare, set on T3CC0 111 Not used Mode. Select Timer 3 channel 1 capture or compare mode 0 Capture mode 1 Compare mode Channel 1 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T3CC1 (0xCF) – Timer 3 Channel 1 Capture/Compare Value Bit Name Reset R/W Description 7:0 VAL[7:0] 0x00 R/W Timer capture/compare value channel 1 T4CNT (0xEA) – Timer 4 Counter Bit Name Reset R/W Description 7:0 CNT[7:0] 0x00 R Timer count byte. Contains the current value of the 8-bit counter. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 122 of 232 CC2430 T4CTL (0xEB) – Timer 4 Control Bit Name Reset R/W Description 7:5 DIV[2:0] 00 R/W Prescaler divider value. Generates the active clock edge used to clock the timer from CLKCON.TICKSPD as follows: 000 Tick frequency /1 001 Tick frequency /2 010 Tick frequency /4 011 Tick frequency /8 100 Tick frequency /16 101 Tick frequency /32 110 Tick frequency /64 111 Tick frequency /128 4 START 0 R/W Start timer. Normal operation when set, suspended when cleared 3 OVFIM 1 R/W0 Overflow interrupt mask 2 CLR 0 R0/W1 Clear counter. Writing high resets counter to 0x00 1:0 MODE[1:0] 00 R/W Timer 4 mode. Select the mode as follows: 00 Free running, repeatedly count from 0x00 to 0xFF 01 Down, count from T4CC0 to 0x00 10 Modulo, repeatedly count from 0x00 to T4CC0 11 Up/down, repeatedly count from 0x00 to T4CC0 and down to 0x00 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 123 of 232 CC2430 T4CCTL0 (0xEC) – Timer 4 Channel 0 Capture/Compare Control Bit Name Reset R/W Description 7 - 0 R0 Unused 6 IM 1 R/W Channel 0 interrupt mask 5:3 CMP[2:0] 000 R/W Channel 0 compare output mode select. Specified action on output when timer value equals compare value in T4CC0 2 1:0 MODE CAP[1:0] 0 00 R/W R/W 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Set output on compare, clear on 0x00 110 Clear output on compare, set on 0x00 111 Not used Mode. Select Timer 4 channel 0 capture or compare mode 0 Capture mode 1 Compare mode Channel 0 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T4CC0 (0xED) – Timer 4 Channel 0 Capture/Compare Value Bit Name Reset R/W Description 7:0 VAL[7:0] 0x00 R/W Timer capture/compare value channel 0 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 124 of 232 CC2430 T4CCTL1 (0xEE) – Timer 4 Channel 1 Capture/Compare Control Bit Name Reset R/W Description 7 - 0 R0 Unused 6 IM 1 R/W Channel 1 interrupt mask 5:3 CMP[2:0] 000 R/W Channel 1 compare output mode select. Specified action on output when timer value equals compare value in T4CC1 2 1:0 MODE CAP[1:0] 0 00 R/W R/W 000 Set output on compare 001 Clear output on compare 010 Toggle output on compare 011 Set output on compare-up, clear on 0 (clear on comparedown in up/down mode) 100 Clear output on compare-up, set on 0 (set on comparedown in up/down mode) 101 Set output on compare, clear on T4CC0 110 Clear output on compare, set on T4CC0 111 Not used Mode. Select Timer 4 channel 1 capture or compare mode 0 Capture mode 1 Compare mode Channel 1 capture mode select 00 No capture 01 Capture on rising edge 10 Capture on falling edge 11 Capture on all edges T4CC1 (0xEF) – Timer 4 Channel 1 Capture/Compare Value Bit Name Reset R/W Description 7:0 VAL[7:0] 0x00 R/W Timer capture/compare value channel 1 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 125 of 232 CC2430 TIMIF (0xD8) – Timers 1/3/4 Interrupt Mask/Flag Bit Name Reset R/W Description 7 - 0 R0 Unused 6 OVFIM 1 R/W Timer 1 overflow interrupt mask 5 T4CH1IF 0 R/W0 Timer 4 channel 1 interrupt flag 0 : no interrupt is pending 1 : interrupt is pending 4 T4CH0IF 0 R/W0 Timer 4 channel 0 interrupt flag 0 : no interrupt is pending 1 : interrupt is pending 3 T4OVFIF 0 R/W0 Timer 4 overflow interrupt flag 0 : no interrupt is pending 1 : interrupt is pending 2 T3CH1IF 0 R/W0 Timer 3 channel 1 interrupt flag 0 : no interrupt is pending 1 : interrupt is pending 1 T3CH0IF 0 R/W0 Timer 3 channel 0 interrupt flag 0 : no interrupt is pending 1 : interrupt is pending 0 T3OVFIF 0 R/W0 Timer 3 overflow interrupt flag 0 : no interrupt is pending 1 : interrupt is pending CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 126 of 232 CC2430 13.7 ADC 13.7.1 ADC Introduction The ADC supports up to 14-bit analog-todigital conversion. The ADC includes an analog multiplexer with up to eight individually configurable channels, reference voltage generator and conversion results written to memory through DMA. Several modes of operation are available. The main features of the ADC are as follows: • • Eight individual input channels, singleended or differential • Reference voltage selectable as internal, external single ended, external differential or AVDD_SOC. • Interrupt request generation • DMA triggers at end of conversions • Temperature sensor input • Battery measurement capability Selectable decimation rates which also sets the resolution (8 to 13 bits). AIN7 ... AIN0 VDD/3 input mux TMP_SENSOR Sigma-delta modulator Decimation filter Int 1.25V AIN7 AVDD ref mux Clock generation and control AIN6-AIN7 Figure 26: ADC block diagram. 13.7.2 ADC Operation 13.7.2.2 ADC Inputs This section describes the general setup and operation of the ADC and describes the usage of the ADC control and status registers accessed by the CPU. The signals on the P0 port pins can be used as ADC inputs. In the following these port pin will be referred to as the AIN0AIN7 pins. The input pins AIN0-AIN7 are connected to the ADC. The ADC can be set up to automatically perform a sequence of conversions and optionally perform an extra conversion from any channel when the sequence is completed. 13.7.2.1 ADC Core The ADC includes an ADC capable of converting an analog input into a digital representation with up to 13 bits resolution. The ADC uses a selectable positive reference voltage. It is possible to configure the inputs as single-ended or differential inputs. In the case where differential inputs are selected, CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 127 of 232 CC2430 the differential inputs consist of the input pairs AIN0-1, AIN2-3, AIN4-5 and AIN6-7. In addition to the input pins AIN0-AIN7, the output of an on-chip temperature sensor can be selected as an input to the ADC for temperature measurements. It is also possible to select a voltage corresponding to AVDD_SOC/3 as an ADC input. This input allows the implementation of e.g. a battery monitor in applications where this feature is required. 13.7.2.3 ADC conversion sequences The ADC will perform a sequence of conversions, and move the results to memory (through DMA) without any interaction from the CPU. The ADCCON2.SCH register bits are used to define an ADC conversion sequence, from the ADC inputs. A conversion sequence will contain a conversion from each channel from 0 up to and including the channel number programmed in ADCCON2.SCH when ADCCON2.SCH is set to a value less than 8. The single-ended inputs AIN0 to AIN7 are represented by channel numbers 0 to 7 in ADCCON2.SCH. Channel numbers 8 to 11 represent the differential inputs consisting of AIN0-AIN1, AIN2-AIN3, AIN4-AIN5 and AIN6-AIN7. Channel numbers 12 to 15 represent GND, internal voltage reference, temperature sensor and AVDD_SOC/3, respectively. When ADCCON2.SCH is set to a value between 8 and 12, the sequence will start at channel 8. For even higher settings, only single conversions are performed. In addition to this sequence of conversions, the ADC can be programmed to perform a single conversion from any channel as soon as the sequence has completed. This is called an extra conversion and is controlled with the ADCCON3 register. The conversion sequence can also be influenced with the ADCCFG register (see section 13.1.5 on page 72). The eight analog inputs to the ADC comes from IO pins, which are not necessarily programmed to be analog inputs. If a channel should normally be part of a sequence, but the corresponding analog input is disabled in the ADCCFG, then that channel will be skipped. For channels 8 to 12, both input pins must be enabled. 13.7.2.4 ADC Operating Modes This section describes the operating modes and initialization of conversions. The ADC has three control registers: ADCCON1, ADCCON2 and ADCCON3. These registers are used to configure the ADC and to report status. The ADCCON1.EOC bit is a status bit that is set high when a conversion ends and cleared when ADCH is read. The ADCCON1.ST bit is used to start a sequence of conversions. A sequence will start when this bit is set high, ADCCON1.STSEL=”11” and no conversion is currently running. When the sequence is completed, this bit is automatically cleared. The ADCCON1.STSEL bits select which event that will start a new sequence of conversions. The options which can be selected are rising edge on external pin P2_0, end of previous sequence, a Timer 1 channel 0 compare event or ADCCON1.ST=’1’. The ADCCON2 register controls how the sequence of conversions is performed. ADCCON2.SREF is used to select the reference voltage. The reference voltage should only be changed when no conversion is running. The ADCCON2.SDIV bits select the decimation rate (and thereby also the resolution and time required to complete a conversion and sample rate). The decimation rate should only be changed when no conversion is running. The last channel of a sequence is selected with the ADCCON2.SCH bits. The ADCCON3 register controls the channel number, reference voltage and decimation rate for the extra conversion. The extra conversion will take place immediately after the ADCCON3 register is updated. The coding of the register bits is exactly as for ADCCON2. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 128 of 232 CC2430 13.7.2.5 ADC Conversion Results The digital conversion result is represented in two's complement form. For 13-bit resolution the digital conversion result is 8191 when the analog input is equal to the VREF, and the conversion result is -8192 when the analog input is equal to –VREF, where VREF is the selected positive voltage reference. The digital conversion result is available when ADCCON1.EOC is set to 1, in ADCH and ADCL. When the ADCCON2.SCH bits are read, they will indicate which channel the conversion result in ADCL and ADCH apply to. 13.7.2.6 ADC Reference Voltage The positive reference voltage for analogto-digital conversions is selectable as either an internally generated 1.25V voltage, the AVDD_SOC pin, the external voltage applied to the AIN7 input pin or the differential voltage applied to the AIN6AIN7 inputs. It is possible to select the reference voltage as the input to the ADC in order to perform a conversion of the reference voltage e.g. for calibration purposes. Similarly, it is possible to select the ground terminal GND as an input. 13.7.2.7 ADC Conversion Timing The ADC runs on the 32 MHz system clock, which is divided by 8 to give a 4 MHz clock. Both the delta sigma modulator and decimation filter use the 4 MHz clock for their calculations. The time required to perform a conversion depends on the selected decimation rate. When the decimation rate is set to for instance 128, the decimation filter uses exactly 128 of the 4 MHz clock periods to calculate the result. When a conversion is started, the input multiplexer is allowed 16 4 MHz clock cycles to settle in case the channel has been changed since the previous conversion. The 16 clock cycles settling time applies to all decimation rates. Thus in general, the conversion time is given by: Tconv = (decimation rate + 16) x 0.25 µs. 13.7.2.8 ADC Interrupts The ADC will generate an interrupt when an extra conversion has completed. An interrupt is not generated when a conversion from the sequence is completed. 13.7.2.9 ADC DMA Triggers The ADC will generate a DMA trigger every time a conversion from the sequence has completed. When an extra conversion completes, no DMA trigger is generated. There is one DMA trigger for each of the eight channels defined by the first eight possible settings for ADCCON2.SCH . The DMA trigger is active when a new sample is ready from the conversion for the channel. The DMA triggers are named ADC_CHx in Table 37 on page 92. In addition there is one DMA trigger, ADC_CHALL, which is active when new data is ready from any of the channels in the ADC conversion sequence. 13.7.2.10 ADC Registers This section describes the ADC registers. ADCL (0xBA) – ADC Data Low Bit Name Reset R/W Description 7:2 ADC[5:0] 0x00 R Least significant part of ADC conversion result. 1:0 - 00 R0 Not used. Always read as 0 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 129 of 232 CC2430 ADCH (0xBB) – ADC Data High Bit Name Reset R/W Description 7:0 ADC[13:6] 0x00 R Most significant part of ADC conversion result. ADCCON1 (0xB4) – ADC Control 1 Bit Name Reset R/W Description 7 EOC 0 R End of conversion Cleared when both ADCH and ADCL has been read. If a new conversion is completed before the previous data has been read, the EOC bit will remain high. H0 6 5:4 3:2 1:0 ST STSEL[1:0] RCTRL[1:0] - 0 11 00 11 R/W1 R/W R/W R/W 0 conversion not complete 1 conversion completed Start conversion. Read as 1 until conversion has completed 0 no conversion in progress 1 start a conversion sequence if ADCCON1.STSEL = “11” and no sequence is running. Start select. Selects which event that will start a new conversion sequence. 00 External trigger on P2_0 pin. 01 Full speed. Do not wait for triggers. 10 Timer 1 channel 0 compare event 11 ADCCON1.ST = 1 Controls the 16 bit random number generator. When written 01, the setting will automatically return to 00 when operation has completed. 00 Normal operation. (13x unrolling) 01 Clock the LFSR once (no unrolling). 10 Reserved 11 Stopped. Random number generator is turned off. Reserved. Always set to 11. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 130 of 232 CC2430 ADCCON2 (0xB5) – ADC Control 2 Bit Name Reset R/W Description 7:6 SREF[1:0] 00 R/W Selects reference voltage used for the sequence of conversions 00 5:4 3:0 SDIV[1:0] SCH[3:0] 01 00 R/W R/W Internal 1.25V reference 01 External reference on AIN7 pin 10 AVDD_SOC pin 11 External reference on AIN6-AIN7 differential input Sets the decimation rate for channels included in the sequence of conversions. The decimation rate also determines the resolution and time required to complete a conversion. 00 64 dec rate (8 bits resolution) 01 128 dec rate (10 bits resolution) 10 256 dec rate (12 bits resolution) 11 512 dec rate (13 bits resolution) Sequence Channel Select. Selects the end of the sequence. A sequence can either be from AIN0 to AIN7 (SCH<=7) or from the differential input AIN0-AIN1 to AIN6-AIN7 (8<=SCH<=11). For other settings, only single conversions are performed. When read, these bits will indicate the channel number of current conversion result. 0000 AIN0 0001 AIN1 0010 AIN2 0011 AIN3 0100 AIN4 0101 AIN5 0110 AIN6 0111 AIN7 1000 AIN0-AIN1 1001 AIN2-AIN3 1010 AIN4-AIN5 1011 AIN6-AIN7 1100 GND 1101 Positive voltage reference 1110 Temperature sensor 1111 VDD/3 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 131 of 232 CC2430 ADCCON3 (0xB6) – ADC Control 3 Bit Name Reset R/W Description 7:6 EREF[1:0] 00 R/W Selects reference voltage used for the extra conversion 00 5:4 3:0 EDIV[1:0] ECH[3:0] 00 0000 R/W R/W Internal 1.25V reference 01 External reference on AIN7 pin 10 AVDD_SOC pin 11 External reference on AIN6-AIN7 differential input Sets the decimation rate used for the extra conversion. The decimation rate also determines the resolution and time required to complete the conversion. 00 64 dec rate (8 bits resolution) 01 128 dec rate (10 bits resolution) 10 256 dec rate (12 bits resolution) 11 512 dec rate (13 bits resolution) Extra channel select. Selects the channel number of the extra conversion that is carried out after a conversion sequence has ended. This bit field must be written for an extra conversion to be performed. If the ADC is not running, writing to these bits will trigger an immediate single conversion from the selected extra channel. The bits are automatically cleared when the extra conversion has finished. 0000 AIN0 0001 AIN1 0010 AIN2 0011 AIN3 0100 AIN4 0101 AIN5 0110 AIN6 0111 AIN7 1000 AIN0-AIN1 1001 AIN2-AIN3 1010 AIN4-AIN5 1011 AIN6-AIN7 1100 GND 1101 Positive voltage reference 1110 Temperature sensor 1111 VDD/3 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 132 of 232 CC2430 13.8 Random Number Generator 13.8.1 Introduction • The random number generator has the following features. The random number generator is a 16-bit Linear Feedback Shift Register (LFSR) • Generate pseudo-random bytes which can be read by the CPU or used directly by the Command Strobe Processor. • Calculate CRC16 of bytes that are written to RNDH. 15 in_bit + 14 13 12 11 Seeded by value written to RNDL. + X 15 + X 2 + 1 (i.e. 16 with polynomial X CRC16). It uses unrolling depending performs. The basic is shown below. 10 9 8 7 6 5 4 different levels of on the operation it version (no unrolling) 3 2 + 1 0 + Figure 27: Basic structure of the Random Number Generator The random number generator is turned off when ADCCON1.RCTRL=”11”. 13.8.2 Random Operation Number Generator The operation of the random number generator is controlled through a combination of the ADCCON1.RCTRL bits and input signals from other modules. The current value of the 16-bit shift register in the LFSR can be read from the RNDH and RNDL registers. 13.8.2.1 Semi random sequence generation The default operation (ADCCON1.RCTRL=”00”) is to clock the LFSR once (13x unrolling) each time the Command Strobe Processor reads the random value. This leads to the availability of a fresh pseudo-random byte from the LSB end of the LFSR. Another way to update the LFSR is to set ADCCON1.RCTRL=”01”. This will clock the LFSR once (no unrolling) and the ADCCON1.RCTRL bits will automatically be cleared when the operation has completed. 13.8.2.2 Seeding The LFSR can be seeded by writing to the RNDL register twice. Each time the RNDL register is written, the 8 LSB of the LFSR is copied to the 8 MSB and the 8 LSBs are replaced with the new data byte that was written to RNDL. When a true random value is required, the LFSR can be seeded by writing RNDL with random values from the ADC in the RF receive path. To use this seeding method, the radio must first be powered on by enabling the voltage regulator as described in section 16.1. The radio should be placed in infinite TX state, to avoid possible sync detect in RX state. The random values from the ADC are read from the RF registers ADCTSTH and ADCTSTL (see page 216). The values read are used as the seed values to be written to the RNDL register as described above. 13.8.2.3 CRC16 The LFSR can also be used to calculate the CRC value of a sequence of bytes. Writing to the RNDH register will trigger a CRC calculation. The new byte is processed from the MSB end and an 8x CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 133 of 232 CC2430 unrolling is used, so that a new byte can be written to RNDH every clock cycle. CRC calculations start. Usually the seed value should be 0x0000 or 0xFFFF. Note that the LFSR must be properly seeded by writing to RNDL, before the 13.8.3 Random Number Generator Registers This section describes the Random Number Generator registers. RNDL (0xBC) – Random Number Generator Data Low Byte Bit Name Reset R/W Description [7:0] RNDL[7:0] 0xFF R/W Random value/seed or CRC result, low byte When used for random number generation writing this register twice will seed the random number generator. Writing to this register copies the 8 LSBs of the LFSR to the 8 MSBs and replaces the 8 LSBs with the data value written. The value returned when reading from this register is the 8 LSBs of the LSFR. When used for random number generation, reading this register returns the 8 LSBs of the random number. When used for CRC calculations, reading this register returns the 8 LSBs of the CRC result. RNDH (0xBD) – Random Number Generator Data High Byte Bit Name Reset R/W [7:0] RNDH[7:0] 0xFF R/W Description Random value or CRC result/input data, high byte When written, a CRC16 calculation will be triggered, and the data value written is processed starting with the MSB bit. The value returned when reading from this register is the 8 MSBs of the LSFR. When used for random number generation, reading this register returns the 8 MSBs of the random number. When used for CRC calculations, reading this register returns the 8 MSBs of the CRC result. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 134 of 232 CC2430 13.9 AES Coprocessor The CC2430 data encryption is performed using a dedicated coprocessor which supports the Advanced Encryption Standard, AES. The coprocessor allows encryption/decryption to be performed with minimal CPU usage. The coprocessor features: has the following • Supports all security suites in IEEE 802.15.4 • ECB, CBC, CFB, OFB, CTR and CBCMAC modes. • Hardware support for CCM mode • 128-bits key and IV/Nonce • DMA transfer trigger capability 13.9.1 AES Operation To encrypt a message, the following procedure must be followed: • Load key • Load initialization vector (IV) • Download and upload encryption/decryption. data for The AES coprocessor works on blocks of 128 bits. A block of data is loaded into the coprocessor, encryption is performed and the result must be read out before the next block can be processed. Before each block load, a dedicated start command must be sent to the coprocessor. 13.9.2 Key and IV Before a key or IV/nonce load starts, an appropriate load key or IV/nonce command must be issued to the coprocessor. When loading the IV it is important to also set the correct mode. A key load or IV load operation aborts any processing that could be running. The key, once loaded, stays valid until a key reload takes place. The IV must be downloaded before the beginning of each message (not block). Both key and IV values are cleared by a reset of the CC2430 . 13.9.3 Padding of input data The AES coprocessor works on blocks of 128 bits. If the last block contains less than 128 bits, it must be padded with zeros when written to the coprocessor. 13.9.4 Interface to CPU The CPU communicates with the coprocessor using three SFR registers: • ENCCS, Encryption control and status register • ENCDI, Encryption input register • ENCDO, Encryption output register Read/write to the status register is done directly by the CPU, while access to the input/output registers must be performed using direct memory access (DMA). Two DMA channels must be used, one for input data and one for output data. The DMA channels must be initialized before a start command is written to the ENCCS. Writing a start command generates a DMA trigger and the transfer is started. After each block is processed, an interrupt is generated. The interrupt is used to issue a new start command to the ENCCS. 13.9.5 Modes of operation ECB and CBC modes are performed as described in section 13.9.1 When using CFB, OFB and CTR mode, the 128 bits blocks are divided into four 32 bit blocks. 32 bits are loaded into the AES coprocessor and the resulting 32 bits are read out. This continues until all 128 bits have been encrypted. The only time one has to consider this is if data is loaded/read directly using the CPU. When using DMA, this is handled automatically by the DMA triggers generated by the AES coprocessor. Both encryption and performed similarly. decryption are The CBC-MAC mode is a variant of the CBC mode. When performing CBC-MAC, data is downloaded to the coprocessor one 128 bits block at a time, except for the last block. Before the last block is loaded, CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 135 of 232 CC2430 CBC-MAC decryption is similar to encryption. The message MAC uploaded must be compared with the MAC to be verified. the mode must be changed to CBC. The last block is then downloaded and the block uploaded will be the MAC value. CCM is a combination of CBC-MAC and CTR. Parts of the CCM must therefore be done in software. The following section gives a short explanation of the necessary steps to be done. 13.9.5.2 CCM mode To encrypt a message under CCM mode, the following sequence can be conducted (key is already loaded): 13.9.5.1 CBC-MAC Message Authentication Phase When performing CBC-MAC encryption, data is downloaded to the coprocessor in CBC-MAC mode one block at a time, except for the last block. Before the last block is loaded, the mode is changed to CBC. The last block is downloaded and the block uploaded is the message MAC. This phase takes place during steps 1-6 shown in the following. (1) The software loads the IV with zeros. (2) The software creates the block B0. The layout of block B0 is shown in Figure 28. Name Designation B0 First block for authentication in CCM mode Byte 0 1 Name Flag 2 3 4 5 6 7 8 9 10 11 12 NONCE 13 14 15 L_M Figure 28: Message Authentication Phase Block 0 There is no restriction on the NONCE value. L_M is the message length in bytes. The content of the Authentication Flag byte is described in Figure 29. For 802.15.4 the NONCE is 13 bytes and L_M is 2 bytes. L is set to 6 in this example. So, L-1 is set to 5. M and A_Data can be set to any value. Name Designation FLAG/B0 Authentication Flag Field for CCM mode Bit 7 6 5 Name Reserved A_Data Value 0 x 4 3 2 1 (M-2)/2 x x 0 L-1 x 1 0 1 Figure 29: Authentication Flag Byte (3) If some Additional Authentication Data (denoted a below) is needed (that is A_Data =1), the software creates the A_Data length field, called L(a) by : CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 136 of 232 CC2430 • (3a) If l(a)=0, (that is A_Data =0), then L(a) is the empty string. We note l(a) the length of a in octets. • (3b) If 0 < l(a) < 216 - 28 , then L(a) is the 2-octets encoding of l(a). Input message = B0 + AUTH-DATA + Message + (zero padding of message) (6) Once the input message authentication by CBC-MAC is finished, the software leaves the uploaded buffer contents unchanged (M=16), or keeps only the buffer’s higher M bytes unchanged, while setting the lower bits to 0 (M != 16). The Additional Authentication Data is appended to the A_Data length field L(a). The Additional Authentication Blocks is padded with zeros until the last Additional Authentication Block is full. There is no restriction on the length of a. The result is called T. Message Encryption (7) The software creates the key stream block A0. Note that L=6, with the current example of the CTR generation. The content is shown in Figure 30. AUTH-DATA = L(a) + Authentication Data + (zero padding) (4) The last block of the message is padded with zeros until full (that is if its length is not a multiple of 128). Note that any value but zero works for the CTR value. (5) The software concatenates the block B0, the Additional Authentication Blocks if any, and the message; The content of the Encryption Flag byte is described in Figure 31. Name Designation A0 First CTR value for CCM mode Byte 0 1 Name Flag 2 3 4 5 6 7 8 9 10 11 12 13 NONCE 14 15 CTR Figure 30: Message Encryption Phase Block 0 Name Designation FLAG/A0 Encryption Flag Field for CCM mode Bit 7 Name Value 6 5 4 Reserved 0 0 3 2 1 0 0 0 L-1 0 1 0 1 Figure 31: Encryption Flag Byte Message Encryption (cont.) (8) The software loads A0 by selecting a Load IV/Nonce command. To do so, it sets Mode to CFB or OFB at the same time it selects the Load IV/Nonce command. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 137 of 232 CC2430 (9) The software calls a CFB or an OFB encryption on the authenticated data T. The uploaded buffer contents stay unchanged (M=16), or only its first M bytes stay unchanged, the others being set to 0 (M-16). The result is U, which will be used later. (10) The software calls a CTR mode encryption right now on the still padded message blocks. It does not have to reload the IV/CTR. (11) The encrypted authentication data U is appended to the encrypted message. This gives the final result, c. Result c = encrypted message(m) + U Message Decryption CCM Mode decryption In the coprocessor, the automatic generation of CTR works on 32 bits, therefore the maximum length of a message is 128 x 232 bits, that is 236 bytes, which can be written in a six-bit word. So, the value L is set to 6. To decrypt a CCM mode processed message, the following sequence can be conducted (key is already loaded): Message Parsing Phase (1) The software parses the message by separating the M rightmost octets, namely U, and the other octets, namely string C. (2) C is padded with zeros until it can fill an integer number of 128-bit blocks; (7) The software calls a CTR mode decryption right now on the encrypted message blocks C. It does not have to reload the IV/CTR. Reference generation Authentication tag This phase is identical to the Authentication Phase of CCM encryption. The only difference is that the result is named MACTag (instead of T). Message Phase Authentication checking The software compares T with MACTag. 13.9.6 Sharing the AES between layers coprocessor The AES coprocessor is a common resource shared by all layers. The AES coprocessor can only be used by one instance one at a time. It is therefore necessary to implement some kind of software semaphore to allocate and deallocate the resource. 13.9.7 AES Interrupts The AES interrupt, ENC, is produced when encryption or decryption of a block is completed. The interrupt enable bit is IEN0.ENCIE and the interrupt flag is S0CON.ENCIF. 13.9.8 AES DMA Triggers (4) The software creates the key stream block A0. It is done the same way as for CCM encryption. There are two DMA triggers associated with the AES coprocessor. These are ENC_DW which is active when input data needs to be downloaded to the ENCDI register, and ENC_UP which is active when output data needs to be uploaded from the ENCDO register. (5) The software loads A0 by selecting a Load IV/Nonce command. To do so, it sets Mode to CFB or OFB at the same time as it selects the IV load. The ENCDI and ENCDO registers should be set as destination and source locations for DMA channels used to transfer data to or from the AES coprocessor. (3) U is padded with zeros until it can fill a 128-bit block. (6) The software calls a CFB or an OFB encryption on the encrypted authenticated data U. The uploaded buffer contents stay unchanged (M=16), or only its first M bytes stay unchanged, the others being set to 0 (M!=16). The result is T. 13.9.9 AES Registers The AES coprocessor registers have the layout shown in this section. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 138 of 232 CC2430 ENCCS (0xB3) – Encryption Control and Status Bit Name Reset R/W Description 7 - 0 R0 Not used, always read as 0 6:4 MODE[2:0] 000 R/W Encryption/decryption mode 3 2:1 0 RDY CMD[1:0] ST 1 0 0 R R/W R/W1 H0 000 CBC 001 CFB 010 OFB 011 CTR 100 ECB 101 CBC MAC 110 Not used 111 Not used Encryption/decryption ready status 0 Encryption/decryption in progress 1 Encryption/decryption is completed Command to be performed when a 1 is written to ST. 00 encrypt block 01 decrypt block 10 load key 11 load IV/nonce Start processing command set by CMD. Must be issued for each command or 128 bits block of data. Cleared by hardware ENCDI (0xB1) – Encryption Input Data Bit Name Reset R/W Description 7:0 DIN[7:0] 0x00 R/W Encryption input data ENCDO (0xB2) – Encryption Output Data Bit Name Reset R/W Description 7:0 DOUT[7:0] 0x00 R/W Encryption output data CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 139 of 232 CC2430 13.10 Power Management This section describes the Power Management Controller. The Power Management Controller controls the use of power modes and clock control to achieve low-power operation. 13.10.1 Power Management Introduction The CC2430 uses different operating modes, or power modes, to allow lowpower operation. Ultra-low-power operation is obtained by turning off power supply to modules to avoid static (leakage) power consumption and also by using clock gating to reduce dynamic power consumption. The various operating modes are enumerated and are be designated as power modes (PMx). The power modes are: • PM0 Clock oscillators on, voltage regulator on • PM1 32.768 kHz oscillators on, voltage regulator on • PM2 32.768 kHz oscillators on, voltage regulator off • PM3 All clock oscillators regulator off off, voltage Note: the voltage regulator above refers to the digital regulator. The analog voltage regulator must be disabled separately through the RF register RFPWR. 13.10.1.1 PM0 PM0 is the full functional mode of operation where the CPU, peripherals and RF transceiver are active. The voltage regulator is turned on. PM0 is used for normal operation. 13.10.1.2 PM1 In PM1, the high-speed oscillators are powered down. The voltage regulator and the 32.768 kHz oscillators are on. When PM1 is entered, a power down sequence is run. When the device is taken out of PM1 to PM0, the high-speed oscillators are started. The device will run on the high speed RC oscillator until the high speed XOSC has settled and been selected. PM1 is used when the expected time until a wakeup event is relatively short since PM1 uses a fast power down/up sequence. 13.10.1.3 PM2 PM2 has the second lowest power consumption. In PM2 the power-on reset, external interrupts, 32.768 kHz oscillator and sleep timer peripherals are active. I/O pins retain the I/O mode and output value set before entering PM2. All other internal circuits are powered down. The voltage regulator is also turned off. When PM2 is entered, a power down sequence is run. PM2 is used when it is relatively long until the expected time for wakeup event, since the power up/down sequence is relatively long. PM2 is typically entered when using the sleep timer as the wakeup event. 13.10.1.4 PM3 PM3 is used to achieve the operating mode with the lowest power consumption. In PM3 all internal circuits that are powered from the voltage regulator are turned off. The internal voltage regulator and all oscillators are also turned off. Power-on reset and external I/O port interrupts are the only functions that are operating in this mode. I/O pins retain the I/O mode and output value set before entering PM3. Only a reset or external interrupt condition will wake the device up and place it into PM0. The contents of RAM and registers are preserved in this mode. PM3 uses the same power down/up sequence as PM2. PM3 is used to achieve ultra low power consumption when waiting for an external event. 13.10.2 Power Management Control The required power mode is selected by the MODE bits in the SLEEP control register. Setting the SFR register CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 140 of 232 CC2430 PCON.IDLE bit after setting the MODE bits, enters the selected sleep mode. An enabled interrupt from port pins or sleep timer or a power-on reset will wake the device from other power modes and bring it into PM0 by resetting the MODE bits. 13.10.3 System clock The system clock is derived from the selected system clock source, which is the high-speed (32 MHz) crystal oscillator or the high-speed RC oscillator. The CLKCON.OSC bit selects the source of the system clock. Note that to use the RF transceiver the high speed crystal oscillator must be selected and stable. Note that each time the CLKCON.OSC bit is altered, then the CLKCON.CLKSPD bit must also be altered in order for the system to know the frequency of the system clock. When the SLEEP.XOSC_STB is 1, the 32 MHz crystal oscillator is stable and can be used as the source for the system clock. The oscillator not selected as the system clock source, will be set in power-down mode by setting SLEEP.OSC_PD to 1. Thus the high-speed RC oscillator may be turned off when the 32 MHz crystal oscillator has been selected as system clock source and vice versa. When SLEEP.OSC_PD is 0, both oscillators are powered up and running. 13.10.4 High-speed oscillators Two high speed oscillators are present in the device. The high-speed crystal oscillator startup time may be too long for some applications, therefore the device can run on the high-speed RC oscillator until crystal oscillator is stable. The highspeed RC oscillator consumes less power than the crystal oscillator, but since it is not as accurate as the crystal oscillator it can not be used for RF transceiver operation. 13.10.5 32.768 kHz oscillators Two 32.768 kHz oscillators are present in the device. By default the low power RC oscillator is enabled. The RC oscillator consumes less power, but is less accurate than the 32.768 kHz crystal oscillator. Refer to Table 9 and Table 10 on page 16 for characteristics of these oscillators. The 32.768 kHz oscillators are used to drive the 32.768 kHz clock to the Sleep Timer and Watchdog Timer. The selection of which oscillator source for the 32.768 kHz clock is performed with the CLKCON.OSC32K register bit. The CLKCON.OSC32K register bit must only be changed while using the highspeed RC oscillator as the system clock source. When the high speed crystal oscillator is running the 32.768 kHz RC oscillator is continuously calibrated, and switching 32.768 kHz oscillator is not supported in this case. 13.10.6 Timer Tick generation The power management controller generates a tick or enable signal for the peripheral timers, thus acting as a prescaler for the timers. This is a global clock division for Timer 1, Timer 3 and Timer 4. The tick speed is programmed from 0.25 to 32 MHz in the CLKCON.TICKSPD register. 13.10.7 Data Retention In power modes PM2 and PM3 parts of SRAM will retain its contents. The content of internal registers is also retained in PM2/3. The XDATA memory locations 0xF0000xFFFF (4096 bytes) retains data in PM2/3. Please note one exception as given below. The XDATA memory locations 0xE0000xEFFF (4096 bytes) and the area 0xFD58-0xFEFF (424 bytes) will lose all data when PM2/3 is entered. These locations will contain undefined data when PM0 is re-entered. The registers which retain their contents are the CPU registers, peripheral registers and RF registers therefore switching to the low-power modes PM2/3 appears transparent to software. The RF TXFIFO/RXFIFO contents is not retained when entering PM2/3. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 141 of 232 CC2430 This section describes Management registers. 13.10.8 Power Management Registers the Power PCON (0x87) – Power Mode Control Bit Name Reset R/W Description 7:2 - 0x00 R/W Not used. 1 - 0 R0 Not used, always read as 0. 0 IDLE 0 R0/W Power mode control. Writing a 1 to this bit forces CC2430 to enter the power mode set by SLEEP.MODE. This bit is always read as 0 H0 SLEEP (0xBE) – Sleep Mode Control Bit Name Reset R/W Description 7 - 0 R0 Unused 6 XOSC_STB 0 R XOSC stable status: 0 – XOSC is not powered up or not yet stable 1 – XOSC is powered up and stable 5 HFRC_STB 0 R HF RCOSC stable status: 0 – HF RCOSC is not powered up or not yet stable 1 – HF RCOSC is powered up and stable 4:3 RST[1:0] XX R Status bit indicating the cause of the last reset. If there are multiple resets, the register will only contain the last event. 00 – Power-on reset 01 – External reset 10 – Watchdog timer reset 2 OSC_PD 1 R/W H0 XOSC and HF RCOSC power down setting. The bit is cleared if the CLKCON.OSC bit is toggled. Also, if there is a calibration in progress and the CPU attempts to set the bit, the bit will be updated at the end of calibration: 0 – Both oscillators powered up 1 – Oscillator not selected by CLKCON.OSC bit powered down 1:0 MODE[1:0] 00 R/W Sleep mode setting: 00 – Power mode 0 01 – Power mode 1 10 – Power mode 2 11 – Power mode 3 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 142 of 232 CC2430 CLKCON (0xC6) – Clock Control Bit Name Reset R/W Description 7 OSC32K 1 R/W 32 kHz clock oscillator select. The 16 MHz high speed RC oscillator must be selected as system clock source when this bit is to be changed. 0 – 32 kHz crystal oscillator 1 – 32 kHz RC oscillator 6 OSC 1 R/W System clock oscillator select: 0 – 32 MHz crystal oscillator 1 – 16 MHz high speed RC oscillator This setting will only take effect when the selected oscillator is powered up and stable. If the selected oscillator is not powered up, then writing this bit will power it up. 5:3 TICKSPD[2:0] 001 R/W Timer ticks output setting, can not be higher than system clock setting given by OSC bit setting 000 – System clock 001 – System clock / 2 010 – System clock / 4 011 – System clock / 8 100 – System clock / 16 101 – System clock / 32 110 – System clock / 64 111 – System clock / 128 2:1 - 00 R/W Reserved. Must always be set to 00. 0 CLKSPD 1 R/W Clock Speed. Sets system clock frequency together with the OSC bit setting 0 – 32 MHz 1 – 16 MHz This bit must always follow the value of the selects which oscillator to use. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A OSC bit, which Page 143 of 232 CC2430 13.11 Power On Reset and Brown Out Detector The CC2430 includes a Power On Reset (POR) and Brown Out Detector (BOD) in order to protect the memory contents during supply voltage variations and provide correct initialization during poweron. When power is initially applied to the CC2430 the Power On Reset (POR) and Brown Out Detector (BOD) will hold the device in reset state until the supply voltage reaches above the Power On Reset and Brown Out voltages as defined in Table 4 on page 12. Figure 32 shows the POR/BOD operation with the 1.8V (typical) regulated supply voltage together with the active low reset signals BOD_RESET and POR_RESET shown in the bottom of the figure. The cause of the last reset can read from the register bits SLEEP.RST. 1.8V REGULATED VOLT UNREGULATED BOD RESET ASSERT POR RESET DEASSERT RISING VDD POR RESET ASSERT FALLING VDD 0 POR OUTPUT BOD RESET POR RESET X X X X X X Figure 32 : Power On Reset and Brown Out Detector Operation CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 144 of 232 CC2430 13.12 Watchdog Timer The watchdog timer (WDT) is intended as a recovery method in situations where the CPU may be subjected to a software upset. The WDT shall reset the system when software fails to clear the WDT within a selected time interval. The watchdog can be used in applications that are subject to electrical noise, power glitches, electrostatic discharge etc., or where high reliability is required. If the watchdog function is not needed in an application, it is possible to configure the watchdog timer to be used as an interval timer that can be used to generate interrupts at selected time intervals. The features of the watchdog timer are as follows: • Four selectable timer intervals • Watchdog mode • Timer mode • Interrupt request generation in timer mode • Clock independent from system clock The WDT is configured as either a watchdog timer or as a timer for generalpurpose use. The operation of the WDT module is controlled by the WDCTL register. The watchdog timer consists of an 15-bit counter clocked by the 32.768 kHz oscillator clock. Note that the contents of the 15-bit counter is not useraccessible. corresponding to the count value settings 64, 512, 8192 and 32768 respectively. If the counter reaches the selected timer interval value, the watchdog timer generates a reset signal for the system. If a watchdog clear sequence is performed before the counter reaches the selected timer interval value, the counter is reset to 0x0000 and continues incrementing its value. The watchdog clear sequence consists of writing 0xA to WDCTL.CLR[3:0] followed by writing 0x5 to the same register bits within one half of a watchdog clock period. If this complete sequence is not performed, the watchdog timer generates a reset signal for the system. Note that as long as a correct watchdog clear sequence begins within the selected timer interval, the counter is reset when the complete sequence has been received. When the watchdog timer has been enabled in watchdog mode, it is not possible to change the mode by writing to the WDCTL.MODE bit. The timer interval value can be changed by writing to the WDCTL.INT[1:0] bits. Note that it is recommended that user software clears the watchdog timer at the same time as the timer interval value is changed, in order to avoid an unwanted watchdog reset. In watchdog mode, the WDT does not produce an interrupt request. 13.12.1 Watchdog mode 13.12.2 The watchdog timer is disabled after a system reset. To set the WDT in watchdog mode the WDCTL.MODE bit is set to 0. The watchdog timer counter starts incrementing when the enable bit WDCTL.EN is set to 1. When the timer is enabled in watchdog mode it is not possible to disable the timer. Therefore, writing a 0 to WDCTL.EN has no effect if a 1 was already written to this bit when WDCTL.MODE was 0. To set the WDT in normal timer mode, the WDCTL.MODE bit is set to 1. When register bit WDCTL.EN is set to 1, the timer is started and the counter starts incrementing. When the counter reaches the selected interval value, the timer will produce an interrupt request. The WDT operates with a watchdog timer clock frequency of 32.768 kHz. This clock frequency gives time-out periods equal to 1.9 ms, 15.625 ms, 0.25 s and 1 s Timer mode In timer mode, it is possible to clear the timer contents by writing a 1 to WDCTL.CLR[0]. When the timer is cleared the contents of the counter is set to 0x0000. Writing a 0 to the enable bit WDCTL.EN stops the timer and writing 1 restarts the timer from 0x0000. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 145 of 232 CC2430 The timer interval is set by the WDCTL.INT[1:0] bits. In timer mode, a reset will not be produced when the timer interval has been reached. 13.12.3 Watchdog Timer Example Figure 33 shows an example of periodical clearing of an active watchdog timer. ; clear watchdog timer MOV WDCTL,#ABh MOV WDCTL,#5Bh Figure 33: WDT Example 13.12.4 Watchdog Timer Register This section describes the WDCTL, for the Watchdog Timer. register, WDCTL (0xC9) – Watchdog Timer Control Bit Name Reset R/W Description 7:4 CLR[3:0] 0000 R/W Clear timer. When 0xA followed by 0x5 is written to these bits, the timer is loaded with 0x0. Note the timer will only be cleared when 0x5 is written within 0.5 watchdog clock period after 0xA was written. Writing to these bits when EN is 0 have no effect. These bits are always be read as 0000. 3 EN 0 R/W Enable timer. When a 1 is written to this bit the timer is enabled and starts incrementing. Writing a 0 to this bit in timer mode stops the timer. Writing a 0 to this bit in watchdog mode has no effect. 2 1:0 MODE INT[1:0] 0 00 R/W R/W 0 Timer disabled (stop timer) 1 Timer enabled Mode select. This bit selects the watchdog timer mode. 0 Watchdog mode 1 Timer mode Timer interval select. These bits select the timer interval defined as a given number of 32.768 kHz oscillator periods. 00 clock period x 32768 (typical 1 s) 01 clock period x 8192 (typical 0.25 s) 10 clock period x 512 (typical 15.625 ms) 11 clock period x 64 (typical 1.9 ms) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 146 of 232 CC2430 13.13 USART USART0 and USART1 are serial communications interfaces that can be operated separately in either asynchronous UART mode or in synchronous SPI mode. The two USARTs have identical function, and are assigned to separate I/O pins. Refer to section 13.1 for I/O configuration. 13.13.1 UART mode For asynchronous serial interfaces, the UART mode is provided. In the UART mode the interface uses a two-wire or four-wire interface consisting of the pins RXD, TXD and optionally RTS and CTS. The UART mode of operation includes the following features: • 8 or 9 data bits • Odd, even or no parity • Configurable start and stop bit level • Configurable LSB or MSB first transfer • Independent interrupts receive and transmit • Independent receive DMA triggers and transmit • Parity and framing error status The UART mode provides full duplex asynchronous transfers, and the synchronization of bits in the receiver does not interfere with the transmit function. A UART byte transfer consists of a start bit, eight data bits, an optional ninth data or parity bit, and one or two stop bits. Note that the data transferred is referred to as a byte, although the data can actually consist of eight or nine bits. The UART operation is controlled by the USART Control and Status registers, UxCSR and the UART Control register UxUCR where x is the USART number, 0 or 1. The UART mode is selected UxCSR.MODE is set to 1. when 13.13.1.1 UART Transmit A UART transmission is initiated when the USART Receive/transmit Data Buffer, UxDBUF register is written. The byte is transmitted on TXDx output pin. The UxDBUF register is double-buffered. The UxCSR.ACTIVE bit goes high when the byte transmission starts and low when it ends. When the transmission ends, the UxCSR.TX_BYTE bit is set to 1. An interrupt request is generated when the UxDBUF register is ready to accept new transmit data. This happens immediately after the transmission has been started, hence a new data byte value can be loaded into the data buffer while the byte is being transmitted. 13.13.1.2 UART Receive Data reception on the UART is initiated when a 1 is written to the UxCSR.RE bit. The UART will then search for a valid start bit on the RXDx input pin and set the UxCSR.ACTIVE bit high. When a valid start bit has been detected the received byte is shifted into the receive register. The UxCSR.RX_BYTE bit is set and a receive interrupt is generated when the operation has completed. At the same time UxCSR.ACTIVE will go low. The received data byte is available through the UxDBUF register. When UxDBUF is read, UxCSR.RX_BYTE is cleared by hardware. 13.13.1.3 UART Hardware Flow Control Hardware flow control is enabled when the UxUCR.FLOW bit is set to 1. The RTS output will then be driven low when the receive register is empty and reception is enabled. Transmission of a byte will not occur before the CTS input goes low. 13.13.1.4 UART Character Format If the BIT9 and PARITY bits in register UxUCR are set high, parity generation and detection is enabled. The parity is computed and transmitted as the ninth bit, and during reception, the parity is computed and compared to the received ninth bit. If there is a parity error, the UxCSR.ERR bit is set high. This bit is cleared when UxCSR is read. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 147 of 232 CC2430 The number of stop bits to be transmitted is set to one or two bits determined by the register bit UxUCR.SPB. The receiver will always check for one stop bit. If the first stop bit received during reception is not at the expected stop bit level, a framing error is signaled by setting register bit UxCSR.FE high. UxCSR.FE is cleared when UxCSR is read. The receiver will check both stop bits when UxUCR.SPB is set. 13.13.2 SPI Mode This section describes the SPI mode of operation for synchronous communication. In SPI mode, the USART communicates with an external system through a 3-wire or 4-wire interface. The interface consists of the pins MOSI, MISO, SCK and SS_N. Refer to section 13.1 for description of how the USART pins are assigned to the I/O pins. The SPI mode includes the following features: • 3-wire (master) interface • Master and slave modes • Configurable SCK polarity and phase • Configurable LSB or MSB first transfer and 4-wire SPI generated when new received data is ready in the UxDBUF USART Receive/Transmit Data register. The polarity and clock phase of the serial clock SCK is selected by UxGCR.CPOL and UxGCR.CPHA. The order of the byte transfer is selected by the UxGCR.ORDER bit. At the end of the transfer, the received data byte is available for reading from the UxDBUF. A transmit interrupt is generated when the unit is ready to accept another data byte for transmission. Since UxDBUF is doublebuffered, this happens just after the transmission has been initiated. 13.13.2.2 SPI Slave Operation An SPI byte transfer in slave mode is controlled by the external system. The data on the MOSI input is shifted into the receive register controlled by the serial clock SCK which is an input in slave mode. At the same time the byte in the transmit register is shifted out onto the MISO output. when The UxCSR.ACTIVE bit goes high when the transfer starts and low when the transfer ends. Then the UxCSR.RX_BYTE and UxCSR.TX_BYTE bits are set and a receive interrupt is generated. In SPI mode, the USART can be configured to operate either as an SPI master or as an SPI slave by writing the UxCSR.SLAVE bit. The expected polarity and clock phase of SCK is selected by UxGCR.CPOL and UxGCR.CPHA. The expected order of the byte transfer is selected by the UxGCR.ORDER bit. The SPI mode is selected UxCSR.MODE is set to 0. 13.13.2.1 SPI Master Operation An SPI byte transfer in master mode is initiated when the UxDBUF register is written. The USART generates the SCK serial clock using the baud rate generator (see section 13.13.3) and shifts the provided byte from the transmit register onto the MOSI output. At the same time the receive register shifts in the received byte from the MISO input pin. The UxCSR.ACTIVE bit goes high when the transfer starts and low when the transfer ends. When the transfer ends, the UxCSR.RX_BYTE and UxCSR.TX_BYTE bits are set to 1. A receive interrupt is At the end of the transfer, the received data byte is available for reading from UxDBUF The transmit interrupt is generated at the start of the operation. 13.13.3 SSN Slave Select Pin When the USART is operating in SPI mode, configured as an SPI slave, the Slave Select (SSN) pin is an input to the SPI. When SSN is held low, the SPI slave is active and receives data on the MOSI input and outputs data on the MISO output. When SSN is held high, the SPI slave is inactive and will not receive data. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 148 of 232 CC2430 In SPI master mode, the SSN pin is not used. When the USART operates as an SPI master and a slave select signal is needed by an external SPI slave device, then a general purpose I/O pin should be used to implement the slave select signal function in software. 13.13.4 Baud Rate Generation An internal baud rate generator sets the UART baud rate when operating in UART mode and the SPI master clock frequency when operating in SPI mode. UxBAUD.BAUD_M[7:0] and The UxGCR.BAUD_E[4:0] registers define the baud rate used for UART transfers and the rate of the serial clock for SPI transfers. The baud rate is given by the following equation: Baud rate (bps) UxBAUD.BAUD_M Baudrate = (256 + BAUD _ M ) ∗ 2 BAUD _ E ∗F 2 28 where F is the system clock frequency, 16 MHz or 32 MHz. The register values required for standard baud rates are shown in Table 39 for a typical system clock set to 32 MHz. The table also gives the difference in actual baud rate to standard baud rate value as a percentage error. The maximum baud rate for UART mode is F/16 when BAUD_E is 16 and BAUD_M is 0, and where F is the system clock frequency. The maximum baud rate for SPI mode and thus SCK frequency, is F/2 when BAUD_E is 19 and BAUD_M is 0. Setting higher baud rates than this will give erroneous results. UxGCR.BAUD_E Error (%) 2400 59 6 0.14 4800 59 7 0.14 9600 59 8 0.14 14400 216 8 0.03 19200 59 9 0.14 28800 216 9 0.03 38400 59 10 0.14 57600 216 10 0.03 76800 59 11 0.14 115200 216 11 0.03 230400 216 12 0.03 Table 39: Commonly used baud rate settings for 32 MHz system clock 13.13.5 USART flushing 13.13.6 USART Interrupts The current operation can be aborted by setting the UxUCR.FLUSH register bit. This event will immediately stop the current operation and clear all data buffers. Each USART has two interrupts. These are the RX complete interrupt (URXx) and the TX complete interrupt (UTXx). The USART interrupt enable bits are found in the IEN0 and IEN2 registers. The interrupt flags are located in the TCON and IRCON2 registers. Refer to section 12.7 on page 52 for details of these registers. The CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 149 of 232 CC2430 interrupt enables summarized below. and flags are Interrupt enables: • USART0 RX : IEN0.URX0IE • USART1 RX : IEN0.URX1IE • USART0 TX : IEN2.UTX0IE • USART1 TX : IEN2.UTX1IE Interrupt flags: • USART0 RX : TCON.URX0IF • USART1 RX : TCON.URX1IF • USART0 TX : IRCON2.UTX0IF • USART1 TX : IRCON2.UTX1IF 13.13.7 USART DMA Triggers There are two DMA triggers associated with each USART. The DMA triggers are activated by RX complete and TX complete events i.e. the same events as the USART interrupt requests. A DMA channel can be configured using a USART Receive/transmit buffer, UxDBUF, as source or destination address. Refer to Table 37 on page 92 for an overview of the DMA triggers. 13.13.8 USART Registers The registers for the USART are described in this section. For each USART there are five registers consisting of the following (x refers to USART number i.e. 0 or 1): • UxCSR USART x Control and Status • UxUCR USART x UART Control • UxGCR USART x Generic Control • UxDBUF USART x Receive/Transmit data buffer • UxBAUD USART x Baud Rate Control CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 150 of 232 CC2430 U0CSR (0x86) – USART 0 Control and Status Bit Name Reset R/W Description 7 MODE 0 R/W USART mode select 6 5 4 3 2 1 0 RE SLAVE FE ERR RX_BYTE TX_BYTE ACTIVE 0 0 0 0 0 0 0 R/W R/W R/W0 R/W0 R/W0 R/W0 R 0 SPI mode 1 UART mode UART receiver enable 0 Receiver disabled 1 Receiver enabled SPI master or slave mode select 0 SPI master 1 SPI slave UART framing error status 0 No framing error detected 1 Byte received with incorrect stop bit level UART parity error status 0 No parity error detected 1 Byte received with parity error Receive byte status 0 No byte received 1 Received byte ready Transmit byte status 0 Byte not transmitted 1 Last byte written to Data Buffer register transmitted USART transmit/receive active status 0 USART idle 1 USART busy in transmit or receive mode CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 151 of 232 CC2430 U0UCR (0xC4) – USART 0 UART Control Bit Name Reset R/W Description 7 FLUSH 0 R0/W1 Flush unit. When set, this event will immediately stop the current operation and return the unit to idle state. 6 FLOW 0 R/W UART hardware flow enable. Selects use of hardware flow control with RTS and CTS pins 5 D9 0 R/W 0 Flow control disabled 1 Flow control enabled UART data bit 9 contents. This value is used when 9 bit transfer is enabled. When parity is disabled, the value written to D9 is transmitted as the bit 9 when 9 bit data is enabled. If parity is enabled then this bit sets the parity level as follows. 4 3 2 1 0 BIT9 PARITY SPB STOP START 0 0 0 1 0 R/W R/W R/W R/W R/W 0 Odd parity 1 Even parity UART 9-bit data enable. When this bit is 1, data is 9 bits and the content of data bit 9 is given by D9 and PARITY. 0 8 bits transfer 1 9 bits transfer UART parity enable. 0 Parity disabled 1 Parity enabled UART number of stop bits. Selects the number of stop bits to transmit 0 1 stop bit 1 2 stop bits UART stop bit level 0 Low stop bit 1 High stop bit UART start bit level. The polarity of the idle line is assumed the opposite of the selected start bit level. 0 Low start bit 1 High start bit CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 152 of 232 CC2430 U0GCR (0xC5) – USART 0 Generic Control Bit Name Reset R/W Description 7 CPOL 0 R/W SPI clock polarity 6 5 4:0 CPHA ORDER BAUD_E[4:0] 0 0 0x00 R/W R/W R/W 0 Negative clock polarity 1 Positive clock polarity SPI clock phase 0 Data is output on MOSI when SCK goes from CPOL inverted to CPOL, and data input is sampled on MISO when SCK goes from CPOL to CPOL inverted. 1 Data is output on MOSI when SCK goes from CPOL to CPOL inverted, and data input is sampled on MISO when SCK goes from CPOL inverted to CPOL. Bit order for transfers 0 LSB first 1 MSB first Baud rate exponent value. BAUD_E along with BAUD_M decides the UART baud rate and the SPI master SCK clock frequency U0DBUF (0xC1) – USART 0 Receive/Transmit Data Buffer Bit Name Reset R/W Description 7:0 DATA[7:0] 0x00 R/W USART receive and transmit data. When writing this register the data written is written to the internal, transmit data register. When reading this register, the data from the internal read data register is read. U0BAUD (0xC2) – USART 0 Baud Rate Control Bit Name Reset R/W Description 7:0 BAUD_M[7:0] 0x00 R/W Baud rate mantissa value. BAUD_E along with BAUD_M decides the UART baud rate and the SPI master SCK clock frequency CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 153 of 232 CC2430 U1CSR (0xF8) – USART 1 Control and Status Bit Name Reset R/W Description 7 MODE 0 R/W USART mode select 6 5 4 3 2 1 0 RE SLAVE FE ERR RX_BYTE TX_BYTE ACTIVE 0 0 0 0 0 0 0 R/W R/W R/W0 R/W0 R/W0 R/W0 R 0 SPI mode 1 UART mode UART receiver enable 0 Receiver disabled 1 Receiver enabled SPI master or slave mode select 0 SPI master 1 SPI slave UART framing error status 0 No framing error detected 1 Byte received with incorrect stop bit level UART parity error status 0 No parity error detected 1 Byte received with parity error Receive byte status 0 No byte received 1 Received byte ready Transmit byte status 0 Byte not transmitted 1 Last byte written to Data Buffer register transmitted USART transmit/receive active status 0 USART idle 1 USART busy in transmit or receive mode CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 154 of 232 CC2430 U1UCR (0xFB) – USART 1 UART Control Bit Name Reset R/W Description 7 FLUSH 0 R0/W1 Flush unit. When set, this event will immediately stop the current operation and return the unit to idle state. 6 FLOW 0 R/W UART hardware flow enable. Selects use of hardware flow control with RTS and CTS pins 5 D9 0 R/W 0 Flow control disabled 1 Flow control enabled UART data bit 9 contents. This value is used 9 bit transfer is enabled. When parity is disabled, the value written to D9 is transmitted as the bit 9 when 9 bit data is enabled. If parity is enabled then this bit sets the parity level as follows. 4 3 2 1 0 BIT9 PARITY SPB STOP START 0 0 0 1 0 R/W R/W R/W R/W R/W 0 Odd parity 1 Even parity UART 9-bit data enable. When this bit is 1, data is 9 bits and the content of data bit 9 is given by D9 and PARITY. 0 8 bits transfer 1 9 bits transfer UART parity enable. 0 Parity disabled 1 Parity enabled UART number of stop bits. Selects the number of stop bits to transmit 0 1 stop bit 1 2 stop bits UART stop bit level 0 Low stop bit 1 High stop bit UART start bit level. The polarity of the idle line is assumed the opposite of the selected start bit level. 0 Low start bit 1 High start bit CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 155 of 232 CC2430 U1GCR (0xFC) – USART 1 Generic Control Bit Name Reset R/W Description 7 CPOL 0 R/W SPI clock polarity 6 5 4:0 CPHA ORDER BAUD_E[4:0] 0 0 0x00 R/W R/W R/W 0 Negative clock polarity 1 Positive clock polarity SPI clock phase 0 Data is output on MOSI when SCK goes from CPOL inverted to CPOL, and data input is sampled on MISO when SCK goes from CPOL to CPOL inverted. 1 Data is output on MOSI when SCK goes from CPOL to CPOL inverted, and data input is sampled on MISO when SCK goes from CPOL inverted to CPOL. Bit order for transfers 0 LSB first 1 MSB first Baud rate exponent value. BAUD_E along with BAUD_M decides the UART baud rate and the SPI master SCK clock frequency U1DBUF (0xF9) – USART 1 Receive/Transmit Data Buffer Bit Name Reset R/W Description 7:0 DATA[7:0] 0x00 R/W USART receive and transmit data. When writing this register the data written is written to the internal, transmit data register. When reading this register, the data from the internal read data register is read. U1BAUD (0xFA) – USART 1 Baud Rate Control Bit Name Reset R/W Description 7:0 BAUD_M[7:0] 0x00 R/W Baud rate mantissa value. BAUD_E along with BAUD_M decides the UART baud rate and the SPI master SCK clock frequency CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 156 of 232 CC2430 13.14 Flash Controller The CC2430 contains 32, 64 or 128 KB flash memory for storage of program code. The flash memory is programmable from the user software. The Flash Controller handles writing and erasing the embedded flash memory. The embedded flash memory consists of 64 pages of 2048 bytes each (CC2430-F128). The flash memory is byte-addressable from the CPU and 32-bit wordprogrammable. The flash controller has the following features: • 32-bit word programmable • Page erase • Lock bits for write-protection and code security • Flash erase timing 20 ms • Flash write timing (4 bytes) 20 µs • Auto power-down during lowfrequency CPU clock read access The flash memory is 32-bit wordprogrammable, meaning data is written as 32-bit words. Therefore, the actual writing to flash memory takes place each time four bytes have been written to FWDATA. The CPU will not be able to access the flash, e.g. to read program code, while a flash write operation is in progress. Therefore the program code executing the flash write must be executed from RAM, meaning that the program code must reside in the area 0xE000 to 0xFF00 in CODE memory space. When a flash write operation is executed from RAM, the CPU continues to execute code from the next instruction after the write to FWDATA, which initiated the flash write operation. The FCTL.SWBSY bit must be 0 before accessing the flash after a flash write, otherwise an access violation occurs. This also means that FCTL.SWBSY must be 0 before program execution can continue at a location in flash memory. 13.14.1 Flash Write 13.14.1.1 DMA Flash Write Data is written to the flash memory by using a program command initiated by writing the Flash Control register, FCTL. Flash write operations can program any number of locations in the flash memory at a time – it is however important to make sure the pages to be written are erased first. When using DMA write operations, the data to be written into flash is stored in Data/XDATA memory. A DMA channel is configured to read the data to be written from memory and write this data to the Flash Write Data register, FWDATA, with the DMA trigger event FLASH enabled. Thus the Flash Controller will trigger a DMA transfer when the Flash Write Data register, FWDATA, is ready to receive new data. The DMA channel should be configured to perform a block to fixed, single mode, byte size transfers. A write operation is performed using one out of two methods; • Through DMA transfer • Through CPU SFR access. The DMA transfer method is the preferred way to write to the flash memory. A write operation is initiated by writing a 1 to FCTL.WRITE. The address to start writing at, is given by FADDRH:FADDRL. During each single, write operation FCTL.SWBSY is set high. During a write, operation the data written to the FWDATA register is forwarded to the flash memory. When the DMA channel is armed, starting a flash write will trigger the first DMA transfer. Figure 34 shows an example how a DMA channel is configured and how a DMA transfer is initiated to write a block of data from a location in XDATA to flash memory. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 157 of 232 CC2430 Setup DMA channel: SRCADDR=<XDATA location> DESTADDRR=FWDATA VLEN=0 LEN=<block size> WORDSIZE=byte TMODE=single mode TRIG=FLASH SRCINC=yes DESTINC=no IRQMASK=yes M8=0 PRIORITY=high Setup flash address Arm DMA Channel Start flash write ; Write a consecutive block of data from XDATA to consecutive locations in ; flash memory using DMA ; Assumes 32 MHz system clock is used ; MOV DPTR,#DMACFG ;load data pointer with address for DMA ;channel configuration and ;start writing DMA configuration MOV A,#SRC_HI ;source data high address MOVX @DPTR,A ; INC DPTR ; MOV A,#SRC_LO ;source data low address MOVX @DPTR,A ; INC DPTR ; MOV A,#0DFh ;destination high address = HIGH(X_FWDATA) MOVX @DPTR,A ; INC DPTR ; MOV A,#0AFh ;destination low address = LOW(X_FWDATA) MOVX @DPTR,A ; INC DPTR ; MOV A,#BLK_LEN ;block length MOVX @DPTR,A ; INC DPTR ; MOV A,#012h ;8 bits, single mode, use FLASH trigger MOVX @DPTR,A ; INC DPTR ; MOV A,#042h ;increment source by 1, don’t increment MOVX @DPTR,A ;destination, mask interrupt, high DMA ;priority MOV DMA0CFGL,#DMACFG_LO ;setup start address for current DMA MOV DMA0CFGH,#DMACFG_HI ;configuration MOV DMAARM,#01h ;arm DMA channel 0 MOV FADDRH,#00h ;setup flash address high MOV FADDRL,#01h ;setup flash address low MOV FWT,#2Ah ;setup flash timing MOV FCTL,#02h ;start flash page write => trigger DMA . . Figure 34: Flash write using DMA CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 158 of 232 CC2430 determine when the flash is ready for four more bytes to be written to FWDATA 13.14.1.2 CPU Flash Write The CPU can also write directly to the flash. The CPU writes data to the Flash Write Data register, FWDATA. The flash memory is written each time four bytes have been written to FWDATA. The CPU can poll the FCTL.SWBSY status to Performing flash write from XDATA The steps required to start a flash write operation from XDATA are shown in Figure 35 on page 159. Disable interrupts YES BUSY=1? NO Setup FCTL, FWT, FADDRH, FADDRL Write FWDATA ; Write 32-bit word from XDATA ; Assumes 32 MHz system clock is ; CLR EA C1: MOV A,FCTL JB ACC.7,C1 MOV FADDRH,#00h MOV FADDRL,#01h MOV FWT,#2Ah MOV FCTL,#02h MOV FWDATA,#12h MOV FWDATA,#34h MOV FWDATA,#56h MOV FWDATA,#78h used ;mask interrupts ;wait until flash controller is ready ;setup flash address high ;setup flash address low ;setup flash timing ;set flash page write ;first byte ;second byte ;third byte ;fourth byte, initiates write Figure 35: Flash write performed from XDATA 13.14.2 Flash Page Erase A page erase is initiated by setting FCTL.ERASE to 1. The page addressed by FADDRH[6:1] is erased when a page erase is initiated. Note that if a page erase is initiated simultaneously with a page write, i.e. FCTL.WRITE is set to 1, the page erase will be performed before the page write operation. The FCTL.BUSY bit can be polled to see when the page erase has completed. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 159 of 232 CC2430 Note: if flash erase operations are performed from within flash memory and the watchdog timer is enabled, a watchdog timer interval must be selected that is longer than 20 ms, the duration of the flash erase operation, so that the CPU will manage to clear the watchdog timer. Note that, while executing program code from within flash memory, when a flash erase or write operation is initiated, program execution will resume from the next instruction when the flash controller has completed the operation. Performing flash erase from flash memory. The steps required to perform a flash page erase from within flash memory are outlined in Figure 36. ; Erase page ; Assumes 32 ; CLR C1: MOV JB MOV MOV MOV RET in flash memory MHz system clock is used EA A,FCTL ACC.7,C1 FADDRH,#00h FWT,#2Ah FCTL,#01h ;mask interrupts ;wait until flash controller is ready ;setup flash address high ;setup flash timing ;erase page ;continues here when flash is ready Figure 36: Flash page erase performed from flash memory 13.14.3 Flash Lock Protection For software protection purposes a set of lock protection bits can be written once after each chip erase has been performed. The lock protect bits can only be written through the Debug Interface. There are three kinds of lock protect bits as described in this section. The flash lock bits reside at location 0x000 in the Flash Information page as described in section 12.11. The LSIZE[2:0] lock protect bits are used to define a section of the flash memory which is write protected. The size of the write protected area can be set by the LSIZE[2:0] lock protect bits in sizes of eight steps from 0 to 128 KB. The second type of lock protect bits is BBLOCK, which is used to lock the boot sector page (page 0 ranging from address 0 to 0x07FF). When BBLOCK is set to 0, the boot sector page is locked. The third type of lock protect bit is DBGLOCK, which is used to disable hardware debug support through the Debug Interface. When DBGLOCK is set to 0, all debug commands are disabled. The lock protect bits are written as a normal flash write to FWDATA, but the Debug Interface needs to select the Flash Information Page first instead of the Flash Main Page which is the default setting. The Information Page is selected through the Debug Configuration which is written through the Debug Interface only. Refer to section 12.9 on page 62 for details on how the Flash Information Page is selected using the Debug Interface. Table 40 defines the byte containing the flash lock protection bits. Note that this is not an SFR register, but instead the byte stored at location 0x000 in Flash Information Page. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 160 of 232 CC2430 Table 40: Flash Lock Protection Bits Definition Bit Name Description 7:5 - Reserved, write as 0 4 BBLOCK Boot Block Lock 3:1 0 0 Page 0 is write protected 1 Page 0 is writeable, unless LSIZE is 000 Lock Size. Sets the size of the upper Flash area which is writeprotected. Byte sizes and page number are listed below LSIZE[2:0] 000 128k bytes (All pages) CC2430-F128 only 001 64k bytes (page 32 - 63) CC2430-F64/128 only 010 32k bytes (page 48 - 63) 011 16k bytes (page 56 - 63) 100 8k bytes (page 60 - 63) 101 4k bytes (page 62 - 63) 110 2k bytes (page 63) 111 0k bytes (no pages) Debug lock bit DBGLOCK 0 Disable debug commands 1 Enable debug commands 13.14.4 Flash Write Timing FWT = The Flash Controller contains a timing generator, which controls the timing sequence of flash write and erase operations. The timing generator uses the information set in the Flash Write Timing register, FWT.FWT[5:0], to set the internal timing. FWT.FWT[5:0] must be set to a value according to the currently selected CPU clock frequency. 21000 ∗ FCPU 16 * 10 9 FCPU is the CPU clock frequency. The initial value held in FWT.FWT[5:0] after a reset is 0x2A which corresponds to 32 MHz CPU clock frequency. The FWT values for the 16 MHz and 32 MHz CPU clock frequencies are given in Table 41. The value set in the FWT.FWT[5:0] shall be set according to the CPU clock frequency by the following equation. CPU clock frequency (MHz) FWT 16 0x15 32 0x2A Table 41: Flash timing (FWT) values 13.14.5 Flash DMA trigger The Flash DMA trigger is activated when flash data written to the FWDATA register has been written to the specified location in the flash memory, thus indicating that the flash controller is ready to accept new data to be written to FWDATA. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 161 of 232 CC2430 The Flash Controller described in this section. 13.14.6 Flash Controller Registers registers are FCTL (0xAE) – Flash Control Bit Name Reset R/W Description 7 BUSY 0 R Indicates that write or erase is in operation 6 SWBSY 0 R Indicates that single write is busy; avoid writing to FWDATA register while this is true 5 - 0 R/W Not used. 4 CONTRD 0 R/W Continuous read enable mode 3:2 0 Avoid wasting power; turn on read enables to flash only when needed 1 Enable continuous read enables to flash when read is to be done. Reduces internal switching of read enables, but greatly increases power consumption. 0 R/W Not used. 1 WRITE 0 R0/W Page Write. Start writing page given by FADDRH:FADDRL. If ERASE is set to 1, a page erase is performed before the write. 0 ERASE 0 R0/W Page Erase. Erase page that is given by FADDRH[6:1] FWDATA (0xAF) – Flash Write Data Bit Name Reset R/W Description 7:0 FWDATA[7:0] 0x00 R/W Flash write data. Data written to FWDATA is written to flash when FCTL.WRITE is set to 1. FADDRH (0xAD) – Flash Address High Byte Bit Name Reset R/W Description 7 - 0 R/W Not used 6:0 FADDRH[6:0] 0x00 R/W High byte of flash address Bits 6:1 will select page to access, while bit 0 is MSB of row access. FADDRL (0xAC) – Flash Address Low Byte Bit Name Reset R/W Description 7:0 FADDRL[7:0] 0x00 R/W Low byte of flash address Bit 0 of FADDRH and bits 7:6 will select which row to write to, while bits 5:0 will select which location to write to. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 162 of 232 CC2430 FWT (0xAB) – Flash Write Timing Bit Name Reset R/W Description 7:6 - 00 R/W Not used 5:0 FWT[5:0] 0x2A R/W Flash Write Timing. Controls flash timing generator. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 163 of 232 CC2430 14 Radio AUTOMATIC GAIN CONTROL ADC DIGITAL DEMODULATOR ADC - Digital RSSI - Gain Control - Image Suppression - Channel Filtering - Demodulation - Frame synchronization LNA RADIO REGISTER BANK Register bus FFCTRL CSMA/CA STROBE PROCESSOR 90 FREQ SYNTH RADIO DATA INTERFACE 0 CONTROL LOGIC TX/RX CONTROL SFR bus TX POWER CONTROL DAC Power Control PA Σ DIGITAL MODULATOR IRQ HANDLING - Data spreading - Modulation DAC Figure 37: CC2430 Radio Module A simplified block diagram of the IEEE 802.15.4 compliant radio inside CC2430 is shown in Figure 37. The radio core is based on the industry leading CC2420 RF transceiver. CC2430 features a low-IF receiver. The received RF signal is amplified by the lownoise amplifier (LNA) and down-converted in quadrature (I and Q) to the intermediate frequency (IF). At IF (2 MHz), the complex I/Q signal is filtered and amplified, and then digitized by the ADCs. Automatic gain control, final channel filtering, despreading, symbol correlation and byte synchronization are performed digitally. An interrupt indicates that a start of frame delimiter has been detected. CC2430 buffers the received data in a 128 byte receive FIFO. The user may read the FIFO through an SFR interface. It is recommended to use direct memory access (DMA) to move data between memory and the FIFO. CRC is verified in hardware. RSSI and correlation values are appended to the frame. Clear channel assessment, CCA, is available through an interrupt in receive mode. The CC2430 transmitter is based on direct up-conversion. The data is buffered in a 128 byte transmit FIFO (separate from the receive FIFO). The preamble and start of frame delimiter are generated in hardware. Each symbol (4 bits) is spread using the IEEE 802.15.4 spreading sequence to 32 chips and output to the digital-to-analog converters (DACs). An analog low pass filter passes the signal to the quadrature (I and Q) up-conversion mixers. The RF signal is amplified in the power amplifier (PA) and fed to the antenna. The internal T/R switch circuitry makes the antenna interface and matching easy. The RF connection is differential. A balun may be used for single-ended antennas. The biasing of the PA and LNA is done by connecting TXRX_SWITCH to RF_P and RF_N through an external DC path. The frequency synthesizer includes a completely on-chip LC VCO and a 90 degrees phase splitter for generating the I and Q LO signals to the down-conversion mixers in receive mode and up-conversion mixers in transmit mode. The VCO operates in the frequency range 4800 – CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 164 of 232 CC2430 4966 MHz, and the frequency is divided by two when split into I and Q signals. buffering, CSMA-CA strobe processor and MAC security. The digital baseband includes support for frame handling, address recognition, data An on-chip voltage regulator delivers the regulated 1.8 V supply voltage. 14.1 IEEE 802.15.4 Modulation Format transmitted first. For multi-byte fields, the least significant byte is transmitted first. This section is meant as an introduction to the 2.4 GHz direct sequence spread spectrum (DSSS) RF modulation format defined in IEEE 802.15.4. For a complete description, please refer to [1]. Each symbol is mapped to one out of 16 pseudo-random sequences, 32 chips each. The symbol to chip mapping is shown in Table 42. The chip sequence is then transmitted at 2 MChips/s, with the least significant chip (C0) transmitted first for each symbol. The modulation and spreading functions are illustrated at block level in Figure 38 [1]. Each byte is divided into two symbols, 4 bits each. The least significant symbol is Transmitted bit-stream (LSB first) Bit-toSymbol Symbolto-Chip O-QPSK Modulator Modulated Signal Figure 38: Modulation and spreading functions [1] Symbol Chip sequence (C0, C1, C2, … , C31) 0 11011001110000110101001000101110 1 11101101100111000011010100100010 2 00101110110110011100001101010010 3 00100010111011011001110000110101 4 01010010001011101101100111000011 5 00110101001000101110110110011100 6 11000011010100100010111011011001 7 10011100001101010010001011101101 8 10001100100101100000011101111011 9 10111000110010010110000001110111 10 01111011100011001001011000000111 11 01110111101110001100100101100000 12 00000111011110111000110010010110 13 01100000011101111011100011001001 14 10010110000001110111101110001100 15 11001001011000000111011110111000 Table 42: IEEE 802.15.4 symbol-to-chip mapping [1] The modulation format is Offset – Quadrature Phase Shift Keying (O-QPSK) with half-sine chip shaping. This is equivalent to MSK modulation. Each chip is shaped as a half-sine, transmitted alternately in the I and Q channels with one half chip period offset. This is illustrated for the zero-symbol in Figure 39. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 165 of 232 CC2430 TC I-phase 1 Q-phase 0 1 0 1 1 0 1 1 0 1 1 0 0 0 0 1 0 1 1 0 1 0 0 0 1 0 1 1 0 1 0 2TC Figure 39: I / Q Phases when transmitting a zero-symbol chip sequence, TC = 0.5 µs 14.2 Command strobes 14.4 Interrupts The CPU uses a set of command strobes to control operation of the radio in CC2430. The radio is associated with two interrupt vectors on the CPU. These are the RFERR interrupt (interrupt 0) and the RF interrupt (interrupt 12) with the following functions Command strobes may be viewed as single byte instructions which each control some function of the radio. These command strobes must be used to enable the frequency synthesizer, enable receive mode, enable transmit mode and other functions. A total of nine command strobes are defined for the radio and these can be written individually to the radio or they can be given in a sequence together with a set of dedicated software instructions making up a simple program. All command strobes from the CPU to the radio pass through the CSMA-CA/Command Strobe Processor (CSP). Detailed description about the CSP and how command strobes are used is given in section 14.34 on page 189. • RFERR : TXFIFO underflow, RXFIFO overflow • RF : all other RF interrupts given by RFIF interrupt flags The RF interrupt vector combines the interrupts in RFIF shown on page 168. Note that these RF interrupts are risingedge triggered. Thus an interrupt is generated when e.g. the SFD status flag goes from 0 to 1. The RF interrupt can also be used to trigger a timer capture in Timer 1. The RFIF interrupt flags are described in the next section. 14.4.1 Interrupt registers 14.3 RF Registers The operation of the radio is configured through a set of RF registers. These RF registers are mapped to XDATA memory space as shown in Figure 13 on page 38. The RF registers also provide status information from the radio. The RF registers control/status bits are referred to where appropriate in the following sections while section 14.35 on page 203 gives a full description of all RF registers. Two of the main interrupt control SFR registers are used to enable the RF and RFERR interrupts. These are the following: • RFERR : IEN0.RFERRIE • RF : IEN2.RFIE Two main interrupt flag SFR registers hold the RF and RFERR interrupt flags. These are the following: • RFERR : TCON.RFERR • RF : S1CON.RFIF Refer to section 12.7 on page 52 for details about the interrupts. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 166 of 232 CC2430 The RF interrupt is the combined interrupt from eight different sources in the radio. Two SFR registers are used for setting the eight individual RFIF radio interrupt flags and interrupt enables. These are the RFIF and RFIM registers. The interrupt flags in SFR register RFIF show the status for each interrupt source for the RF interrupt vector. The interrupt enable bits in RFIM are used to disable individual interrupt sources for the RF interrupt vector. Note that masking an interrupt source in RFIM does not affect the update of the status in the RFIF register. MOV MOV MOV RFIF,#00h S1CON,#00h RFIM,RFIM Due to the use of the individual interrupt masks in RFIM, and the main interrupt mask for the RF interrupt given by IEN2.RFIE there is two-layered masking of this interrupt. Special attention needs to be taken when processing this type of interrupt as described below. To clear the RF interrupt, S1CON.RFIF and the interrupt flag in RFIF need to be cleared. The order and method of doing this is shown in Figure 40. Note that S1CON is cleared after RFIF, otherwise S1CON.RFIF could be set once again due to the same interrupt. ;clear all interrupt flags ;clear main interrupt flags ;set interrupt mask Figure 40: Clearing RF Interrupt CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 167 of 232 CC2430 RFIF (0xE9) – RF Interrupt Flags Bit Name Reset R/W Description 7 IRQ_RREG_ON 0 R/W0 Voltage regulator for radio has been turned on 6 5 4 3 2 1 0 IRQ_TXDONE IRQ_FIFOP IRQ_SFD IRQ_CCA IRQ_CSP_WT IRQ_CSP_STOP IRQ_CSP_INT 0 0 R/W0 R/W0 0 No interrupt pending 1 Interrupt pending TX completed with packet sent 0 No interrupt pending 1 Interrupt pending Number of bytes in RXFIFO is above threshold set by IOCFG0.FIFOP_THR 0 0 0 0 0 R/W0 R/W0 R/W0 R/W0 R/W0 0 No interrupt pending 1 Interrupt pending Start of frame delimiter (SFD) has been detected 0 No interrupt pending 1 Interrupt pending Clear channel assessment (CCA) indicates that channel is clear 0 No interrupt pending 1 Interrupt pending CSMA-CA/strobe processor (CSP) wait condition is true 0 No interrupt pending 1 Interrupt pending CSMA-CA/strobe processor (CSP) program execution stopped 0 No interrupt pending 1 Interrupt pending CSMA-CA/strobe processor (CSP) INT instruction executed 0 No interrupt pending 1 Interrupt pending CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 168 of 232 CC2430 RFIM (0x91) – RF Interrupt Mask Bit Name Reset R/W Description 7 IM_RREG_PD 0 R/W Voltage regulator for radio has been turned on 6 5 4 3 2 1 0 IM_TXDONE IM_FIFOP IM_SFD IM_CCA IM_CSP_WT IM_CSP_STOP IM_CSP_INT 0 0 R/W R/W 0 Interrupt disabled 1 Interrupt enabled TX completed with packet sent 0 Interrupt disabled 1 Interrupt enabled Number of bytes in RXFIFO is above threshold set by IOCFG0.FIFOP_THR 0 0 0 0 0 R/W R/W R/W R/W R/W 0 Interrupt disabled 1 Interrupt enabled Start of frame delimiter (SFD) has been detected 0 Interrupt disabled 1 Interrupt enabled Clear channel assessment (CCA) indicates that channel is clear 0 Interrupt disabled 1 Interrupt enabled CSMA-CA/strobe processor (CSP) wait condition is true 0 Interrupt disabled 1 Interrupt enabled CSMA-CA/strobe processor (CSP) program execution stopped 0 Interrupt disabled 1 Interrupt enabled CSMA-CA/strobe processor (CSP) INT instruction executed 0 Interrupt disabled 1 Interrupt enabled 14.5 FIFO access The TXFIFO and RXFIFO may be accessed through the SFR register RFD (0xD9). Data is written to the TXFIFO when writing to the RFD register. Data is read from the he RXFIFO when the RFD register is read. in section 14.6 on page 170. Note that the RFSTATUS.FIFO and RFSTATUS.FIFOP only apply to the RXFIFO. The TXFIFO may be flushed by issuing a SFLUSHTX command strobe. Similarly, a SFLUSHRX command strobe will flush the receive FIFO. The RF register bits RFSTATUS.FIFO and RFSTATUS.FIFOP provide information on the data in the receive FIFO, as described CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 169 of 232 CC2430 RFD (0xD9) – RF Data Bit Name Reset R/W Description 7:0 RFD[7:0] 0x00 R/W Data written to the register is written to the TXFIFO. When reading this register, data from the RXFIFO is read The RF register RXFIFOCNT contains the number of bytes present in the RXFIFO. 14.6 DMA It is possible, and in most cases recommended, to use direct memory access (DMA) to move data between memory and the radio. The DMA controller is described in section 13.2. Refer to this section for a detailed description on how to setup and use DMA transfers. To support the DMA controller there is one DMA trigger associated with the radio, this is the RADIO DMA trigger (DMA trigger 19). The RADIO DMA trigger is activated by two events. The first event to cause a RADIO DMA trigger, is when the first data is present in the RXFIFO, i.e. when the RXFIFO goes from the empty state to the non-empty state. The second event that causes a RADIO DMA trigger, is when data is read from the RXFIFO (through RFD SFR register) and there is still more data available in the RXFIFO. 14.7 Receive mode In receive mode, the interrupt flag RFIF.IRQ_SFD goes high and the RF interrupt is requested after the start of frame delimiter (SFD) field has been completely received. If address recognition is disabled or is successful, the RFSTATUS.SFD bit goes low again only after the last byte of the MPDU has been received. If the received frame fails address recognition, the RFSTATUS.SFD bit goes low immediately. This is illustrated in Figure 41. The RFSTATUS.FIFO bit is high when there is one or more data bytes in the RXFIFO. The first byte to be stored in the RXFIFO is the length field of the received frame, i.e. the RFSTATUS.FIFO bit is set high when the length field is written to the RXFIFO. The RFSTATUS.FIFO bit then remains high until the RXFIFO is empty. The RFSTATUS.FIFOP bit is high when the number of unread bytes in the RXFIFO exceeds the threshold programmed into IOCFG0.FIFOP_THR. When address recognition is enabled the RFSTATUS.FIFOP bit will not go high until the incoming frame passes address recognition, even if the number of bytes in the RXFIFO exceeds the programmed threshold. The RFSTATUS.FIFOP bit will also go high when the last byte of a new packet is received, even if the threshold is not exceeded. If so the RFSTATUS.FIFOP bit will go back to low once one byte has been read out of the RXFIFO. When address recognition is enabled, data should not be read out of the RXFIFO before the address is completely received, since the frame may be automatically flushed by CC2430 if it fails address recognition. This may be handled by using the RFSTATUS.FIFOP bit, since this bit does not go high until the frame passes address recognition. Figure 42 shows an example of status bit activity when reading a packet from the RXFIFO. In this example, the packet size is 8 bytes, IOCFG0.FIFOP_THR = 3 and MODEMCTRL0.AUTOCRC is set. The length will be 8 bytes, RSSI will contain the average RSSI level during receiving of the packet and FCS/corr contain information of FCS check result and the correlation levels. 14.8 RXFIFO overflow The RXFIFO can only contain a maximum of 128 bytes at a given time. This may be divided between multiple frames, as long as the total number of bytes is 128 or less. If an overflow occurs in the RXFIFO, this is CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 170 of 232 CC2430 signaled to the CPU by asserting the RFERR interrupt when enabled. In addition the radio will set RFSTATUS.FIFO bit low while the RFSTATUS.FIFOP bit is high. Data already in the RXFIFO will not be affected by the overflow, i.e. frames already received may be read out. SF Data received over RF Address recognition OK A SFLUSHRX command strobe is required after a RXFIFO overflow to enable reception of new data. Note that the SFLUSHRX command strobe should be issued twice to ensure that the RFSTATUS.SFD bit goes back to its idle state. D t de d te ec t ng Le h te by on i ti cn o g re ss d re lete d Ad omp c ed iv ce re U d PD eive t M r ec s La yte b Preamble SFD Length MAC Protocol Data Unit (MPDU) with correct address Preamble SFD Length MAC Protocol Data Unit (MPDU) with wrong address SFD FIFO FIFOP , if threshold higher than frame length FIFOP , if threshold lower than frame length Data received over RF Address recognition fails SFD FIFO FIFOP F a IFO by s lo P te ng rem s > as ain FI n s FO um h P_ be igh TH r o R f F re IFO st ad g ar ou oe ts t s of l o la w st w by he te n Figure 41: SFD, FIFO and FIFOP activity examples during receive RXFIFO read data Length PSDU0 PSDU1 PSDU2 PSDU3 PSDU4 PSDU5 RSSI FCS/Corr FIFOP FIFO Figure 42: Example of status activity when reading RXFIFO. 14.9 Transmit mode During transmit, the RFSTATUS.FIFO and RFSTATUS.FIFOP bits are still only related to the RXFIFO. The RFSTATUS.SFD bit is however active during transmission of a data frame, as shown in CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 171 of 232 CC2430 Figure 43. The RFIF.IRQ_SFD interrupt flag goes high and the RF interrupt is requested when the SFD field has been completely transmitted. It goes low again when the complete MPDU (as defined by the length field) has been transmitted or if an underflow is detected. The interrupt RFERR is asserted when enabled. See section 14.17.1 on page 176 for more information on TXFIFO underflow. N nd XO ma ST om e c trob Data s transmitted over RF Preamble d tte D mi F s S an tr Lengt SFD h As can be seen from comparing Figure 41 and Figure 43, the RFSTATUS.SFD bit behaves very similarly during reception and transmission of a data frame. If the RFSTATUS.SFD bits of the transmitter and the receiver are compared during the transmission of a data frame, a small delay of approximately 2 µs can be seen because of bandwidth limitations in both the transmitter and the receiver. MAC Protocol Data Unit (MPDU) U PD or M t ed low t s t i La yte sm erf b an nd tr X u T SFD 12 symbol periods Automatically generated preamble and SFD Data fetched from TXFIFO CRC generated Figure 43: SFD status activity example during transmit 14.10 General control and status In receive mode, the RFIF.IRQ_FIFOP interrupt flag and RF interrupt request can be used to interrupt the CPU when a threshold has been exceeded or a complete frame has been received. In receive mode, the RFSTATUS.FIFO bit can be used to detect if there is data at all in the receive FIFO. The RFIF.IRQ_SFD interrupt flag can be used to extract the timing information of transmitted and received data frames. The RFIF.IRQ_SFD bit will go high when a start of frame delimiter has been completely detected / transmitted. For debug purposes, the RFSTATUS.SFD, RFSTATUS.FIFO, RFSTATUS.FIFOP and RFSTATUS.CCA bits can be output onto P1.7 – P1.4 I/O pins to monitor the status of these signals as selected by the IOCFG0, IOCFG1 and IOCFG2 register. The polarity of these signals given on the debug outputs can also be controlled by the IOCFG0-2 registers, if needed. 14.11 Demodulator, Symbol Synchronizer and Data Decision The block diagram for the CC2430 demodulator is shown in Figure 44. Channel filtering and frequency offset compensation is performed digitally. The signal level in the channel is estimated to generate the RSSI level (see the RSSI / Energy Detection section on page 181 for more information). Data filtering is also included for enhanced performance. With the ±40 ppm frequency accuracy requirement from [1], a compliant receiver must be able to compensate for up to 80 ppm or 200 kHz. The CC2430 demodulator tolerates up to 300 kHz offset without CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 172 of 232 CC2430 significant degradation of the receiver performance. CPU at a lower bit rate than the 250 kbps generated by the receiver. Soft decision is used at the chip level, i.e. the demodulator does not make a decision for each chip, only for each received symbol. De-spreading is performed using over-sampling symbol correlators. Symbol synchronization is achieved by a continuous start of frame delimiter (SFD) search. The CC2430 demodulator also handles symbol rate errors in excess of 120 ppm without performance degradation. Resynchronization is performed continuously to adjust for error in the incoming symbol rate. When an SFD is detected, data is written to the RXFIFO and may be read out by the I / Q Analog IF signal Digital IF Channel Filtering ADC The RF register MDMCTRL1H.CORR_THR control bits should be written to 20 to set the threshold for detecting IEEE 802.15.4 start of frame delimiters. Frequency Offset Compensation RSSI Generator Digital Data Filtering Symbol Correlators and Synchronisation Data Symbol Output Average Correlation Value (may be used for LQI) RSSI Figure 44: Demodulator Simplified Block Diagram 14.12 Frame Format CC2430 has hardware support for parts of the IEEE 802.15.4 frame format. This section gives a brief summary to the IEEE 802.15.4 frame format, and describes how CC2430 is set up to comply with this. Figure 45 [1] shows a schematic view of the IEEE 802.15.4 frame format. Similar figures describing specific frame formats (data frames, beacon frames, acknowledgment frames and MAC command frames) are included in [1]. Bytes: 1 0 to 20 2 Frame Data Address Control Field Sequence Information (FCF) Number MAC Header (MHR) MAC Layer Bytes: PHY Layer 1 1 Start of frame Frame Delimiter Length (SFD) Synchronisation Header PHY Header (SHR) (PHR) n Frame payload MAC Payload 2 Frame Check Sequence (FCS) MAC Footer (MFR) 5 + (0 to 20) + n MAC Protocol Data Unit (MPDU) PHY Service Data Unit (PSDU) 4 Preamble Sequence 11 + (0 to 20) + n PHY Protocol Data Unit (PPDU) Figure 45: Schematic view of the IEEE 802.15.4 Frame Format [1] 14.13 Synchronization header The synchronization header (SHR) consists of the preamble sequence followed by the start of frame delimiter (SFD). In [1], the preamble sequence is defined to be four bytes of 0x00. The SFD is one byte, set to 0xA7. In CC2430, the preamble length and SFD is configurable. The default values are CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 173 of 232 CC2430 compliant with [1]. Changing these values will make the system non-compliant to IEEE 802.15.4. compliance with [1]. Two additional zero symbols in SYNCWORDH:SYNCWORDL make CC2430 compliant with [1]. A synchronization header is always transmitted first in all transmit modes. In reception, CC2430 synchronizes to received zero-symbols and searches for the SFD sequence defined by the SYNCWORDH:SYNCWORDL registers. The least significant symbols in SYNCWORDH:SYNCWORDL set to 0xF will be ignored, while symbols different from 0xF will be required for synchronization. The default setting of 0xA70F thereby requires one additional zero-symbol for synchronization. This will reduce the number of false frames detected due to noise. The preamble sequence length can be set with RF register bit MDMCTRL0L.PREAMBLE_LENGTH, while the SFD is programmed in the SYNCWORDH:SYNCWORDL registers. SYNCWORDH:SYNCWORDL is two bytes long, which gives the user some extra flexibility as described below. Figure 46 shows how the CC2430 synchronization header relates to the IEEE 802.15.4 specification. In receive mode CC2430 uses the preamble sequence for symbol synchronization and frequency offset adjustments. The SFD is used for byte synchronization, and is not part of the data stored in the receive buffer (RXFIFO). The programmable preamble length only applies to transmission, it does not affect receive mode. The preamble length should not be set shorter than the default value. Note that 2 of the 8 zero-symbols in the preamble sequence required by [1] are included in the SYNCWORDH:SYNCWORDL registers so that the CC2430 preamble sequence is only 6 symbols long for Synchronisation Header Preamble IEEE 802.15.4 CC2430 0 0 0 0 SFD 0 0 2·(PREAMBLE_LENGTH + 1) zero symbols 0 0 7 A SW0 SW1 SW2 SW3 SW0 = SYNCWORD[3:0] if different from 'F', else '0' SW1 = SYNCWORD[7:4] if different from 'F', else '0' SW2 = SYNCWORD[11:8] if different from 'F', else '0' SW3 = SYNCWORD[15:12] if different from 'F', else '0' Figure 46: Transmitted Synchronization Header 14.14 Length field The frame length field shown in Figure 45 defines the number of bytes in the MPDU. Note that the length field does not include the length field itself. It does however include the FCS (Frame Check Sequence), even if this is inserted automatically by CC2430 hardware. The length field is 7 bits and has a maximum value of 127. The most significant bit in the length field is reserved [1], and should be set to zero. CC2430 uses the length field both for transmission and reception, so this field must always be included. In transmit mode, the length field is used for underflow detection, as described in the FIFO access section on page 169. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 174 of 232 CC2430 14.15 MAC protocol data unit The FCF, data sequence number and address information follows the length field as shown in Figure 45. Together with the MAC data payload and Frame Check Sequence, they form the MAC Protocol Data Unit (MPDU). There is no hardware support for the data sequence number, this field must be inserted and verified by software. CC2430 includes hardware address recognition, as described in the Address Recognition section on page 177. The format of the FCF is shown in Figure 47. Please refer to [1] for details. Bits: 0-2 3 4 5 6 7-9 10-11 12-13 14-15 Frame Type Security Enabled Frame Pending Acknowledge request Intra PAN Reserved Destination addressing mode Reserved Source addressing mode Figure 47: Format of the Frame Control Field (FCF) [1] 14.16 Frame check sequence A 2-byte frame check sequence (FCS) follows the last MAC payload byte as shown in Figure 45. The FCS is calculated over the MPDU, i.e. the length field is not part of the FCS. This field is automatically generated and verified by hardware when the RF register MDMCTRL0L.AUTOCRC control bit is set. It is recommended to always have this enabled, except possibly for debug purposes. If cleared, CRC generation and verification must be performed by software. The FCS polynomial is [1]: x16 + x12 + x5 + 1 The CC2430 hardware implementation is shown in Figure 48. Please refer to [1] for further details. In transmit mode the FCS is appended at the correct position defined by the length field. The FCS is not written to the TXFIFO, but stored in a separate 16-bit register. interested in the correctness of the FCS, not the FCS sequence itself. The FCS sequence itself is therefore not written to the RXFIFO during receive. Instead, when MDMCTRL0L.AUTOCRC is set the two FCS bytes are replaced by the RSSI value, average correlation value (used for LQI) and CRC OK/not OK. This is illustrated in Figure 49. The first FCS byte is replaced by the 8-bit RSSI value. See the RSSI section on page 181 for details. The seven least significant bits in the last FCS byte are replaced by the average correlation value of the 8 first symbols of the received PHY header (length field) and PHY Service Data Unit (PSDU). This correlation value may be used as a basis for calculating the LQI. See the Link Quality Indication section on page 182 for details. The most significant bit in the last byte of each frame is set high if the CRC of the received frame is correct and low otherwise. In receive mode the FCS is verified by hardware. The user is normally only CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 175 of 232 CC2430 Data input (LSB first) r0 r1 r2 r3 r4 r5 r6 r7 r8 r9 r10 r11 r12 r13 r14 r15 Figure 48: CC2430 Frame Check Sequence (FCS) hardware implementation [1] Length byte Data in RXFIFO n MPDU MPDU1 MPDU2 MPDUn-2 Bit number RSSI (signed) CRC / Corr 7 6 5 4 3 2 1 0 CRC Correlation value (unsigned) OK Figure 49: Data in RXFIFO when MDMCTRL0L.AUTOCRC is set 14.17 RF Data Buffering CC2430 can be configured for different transmit and receive modes, as set in the MDMCTRL1L.TX_MODE and MDMCTRL1L.RX_MODE control bits. Buffered mode (mode 0) will be used for normal operation of CC2430, while other modes are available for test purposes. 14.17.1 Buffered transmit mode In buffered transmit mode (TX_MODE 0), the 128 byte TXFIFO, located in CC2430 RAM, is used to buffer data before transmission. A synchronization header is automatically inserted before the length field during transmission. The length field must always be the first byte written to the transmit buffer for all frames. Writing one or multiple bytes to the TXFIFO is described in the FIFO access section on page 169. A DMA transfer can be configured to write transmit data to the TXFIFO. Transmission is enabled by issuing a STXON or STXONCCA command strobe. See the Radio control state machine section on page 179 for an illustration of how the transmit command strobes affect the state of CC2430. The STXONCCA strobe is ignored if the channel is busy. See section 14.25 on page 182 for details on CCA. The preamble sequence is started 12 symbol periods after the transmit command strobe. After the programmable start of frame delimiter has been transmitted, data is fetched from the TXFIFO. The TXFIFO can only contain one data frame at a given time. After complete transmission of a data frame, the TXFIFO is automatically refilled with the last transmitted frame. Issuing a new STXON or STXONCCA command strobe will then cause CC2430 to retransmit the last frame. Writing to the TXFIFO after a frame has been transmitted will cause the TXFIFO to be automatically flushed before the new byte is written. The only exception is if a TXFIFO underflow has occurred, when a SFLUSHTX command strobe is required. 14.17.2 Buffered receive mode In buffered receive mode (RX_MODE 0), the 128 byte RXFIFO, located in CC2430 RAM, is used to buffer data received by the demodulator. Accessing data in the RXFIFO is described in the FIFO access section on page 169. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 176 of 232 CC2430 The RF interrupt generated by RFSTATUS.FIFOP and also the RFSTATUS.FIFO and RFSTATUS.FIFOP register bits are used to assist the CPU in supervising the RXFIFO. Please note that these status bits are only related to the RXFIFO, even if CC2430 is in transmit mode. A DMA transfer should be used to read data from the RXFIFO. In this case a DMA channel can be setup to use the RADIO DMA trigger (see DMA triggers on page 92) to initiate a DMA transfer using the RFD register as the DMA source. Multiple data frames may be in the RXFIFO simultaneously, as long as the total number of bytes does not exceed 128. See the RXFIFO overflow section on page 170 for details on how a RXFIFO overflow is detected and signaled. 14.18 Address Recognition CC2430 includes hardware support for address recognition, as specified in [1]. Hardware address recognition may be enabled or disabled using the MDMCTRL0H.ADDR_DECODE control bit. Address recognition uses the following RF registers • IEEE_ADDR7-IEEE_ADDR0 • PANIDH:PANIDL • SHORTADDRH:SHORTADDRL. Address recognition is based on the following requirements, listed from section 7.5.6.2 in [1]: • The frame type subfield shall not contain an illegal frame type • If the frame type indicates that the frame is a beacon frame, the source PAN identifier shall match macPANId unless macPANId is equal to 0xFFFF, in which case the beacon frame shall be accepted regardless of the source PAN identifier. • If a destination PAN identifier is included in the frame, it shall match macPANId or shall be the broadcast PAN identifier (0xFFFF). • If a short destination address is included in the frame, it shall match either macShortAddress or the broadcast address (0xFFFF). Otherwise if an extended destination address is included in the frame, it shall match aExtendedAddress. • If only source addressing fields are included in a data or MAC command frame, the frame shall only be accepted if the device is a PAN coordinator and the source PAN identifier matches macPANId. If any of the above requirements are not satisfied and address recognition is enabled, CC2430 will disregard the incoming frame and flush the data from the RXFIFO. Only data from the rejected frame is flushed, data from previously accepted frames may still be in the RXFIFO. Incoming frames are first subject to frame type filtering according to the setting of the MDMCTRL0H.FRAMET_FILT register bit. Following the required frame type filtering, incoming frames with reserved frame types (FCF frame type subfield is 4, 5, 6 or 7) are however accepted if the RESERVED_FRAME_MODE control bit in the RF register MDMCTRL0H is set. In this case, no further address recognition is performed on these frames. This option is included for future expansions of the IEEE 802.15.4 standard. If a frame is rejected, CC2430 will only start searching for a new frame after the rejected frame has been completely received (as defined by the length field) to avoid detecting false SFDs within the frame. MDMCTRL0.PAN_COORDINATOR The control bit must be correctly set, since parts of the address recognition procedure requires knowledge about whether the current device is a PAN coordinator or not. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 177 of 232 CC2430 14.19 Acknowledge Frames CC2430 includes hardware support for transmitting acknowledge frames, as specified in [1]. Figure 50 shows the format of the acknowledge frame. If MDMCTRL0L.AUTOACK is enabled, an acknowledge frame is transmitted for all Bytes: 1 1 Start of Frame Preamble Frame Delimiter Sequence Length (SFD) Synchronisation Header PHY Header (SHR) (PHR) 4 incoming frames accepted by the address recognition with the acknowledge request flag set and a valid CRC. AUTOACK therefore does not make sense unless also ADDR_DECODE and AUTOCRC are enabled. The sequence number is copied from the incoming frame. 1 2 Frame Data Control Field Sequence (FCF) Number MAC Header (MHR) 2 Frame Check Sequence (FCS) MAC Footer (MFR) Figure 50: Acknowledge frame format [1] Two command strobes, SACK and SACKPEND are defined to transmit acknowledge frames with the frame pending field cleared or set, respectively. The acknowledge frame is only transmitted if the CRC is valid. For systems using beacons, there is an additional timing requirement that the acknowledge frame transmission may be started on the first backoff-slot boundary (20 symbol periods) at least 12 symbol periods after the last symbol of the incoming frame. When the RF register control bit MDMCTRL1H.SLOTTED_ACK is set to 1, the acknowledge frame is transmitted between 12 and 30 symbol periods after the incoming frame. The timing is defined such that there is an integer number of 20-symbol period backoff-slots between the incoming packet SFD and the transmitted acknowledge frame SFD. This timing is also illustrated in Figure 51. Using SACKPEND will set the pending data flag for automatically transmitted acknowledge frames using AUTOACK. The pending flag will then be set also for future acknowledge frames, until a SACK command strobe is issued. The pending data flag that is transmitted will be logically OR’ed with the value of FSMTC1.PENDING_OR. Thus the pending flag can be set high using this register control bit. Acknowledge frames may be manually transmitted using normal data transmission if desired. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 178 of 232 CC2430 U PD l t P bo s L a s ym SLOTTED_ACK = 0 PPDU Acknowledge t ack = 12 sym bol periods SLOTTED_ACK = 1 t backoffslot = 20 sym bol periods PPDU U PD l t P bo s L a s ym Acknowledge t ack = 12 - 30 sym bol periods Figure 51: Acknowledge frame timing 14.20 Radio control state machine CC2430 has a built-in state machine that is used to switch between different operation states (modes). The change of state is done either by using command strobes or by internal events such as SFD detected in receive mode. The radio control state machine states are shown in Figure 52. The numbers in brackets refer to the state number readable in the FSMSTATE status register. Reading the FSMSTATE status register is primarily for test / debug purposes. The figure assumes that the device is already placed in the PM0 power mode. Before using the radio in either RX or TX mode, the voltage regulator and crystal oscillator must be turned on and become stable. The voltage regulator and crystal oscillator startup times are given in the section 7.4 on page 16. The voltage regulator for the radio is enabled by setting the RF register bit RFPWR.RREG_RADIO_PD high. The interrupt flag RFIF.IRQ_RREG_ON is set to 1 when the voltage regulator has powered-up. the oscillator is running and stable or not (see page 142). This SFR register can be polled when waiting for the oscillator to start. For test purposes, the frequency synthesizer (FS) can also be manually calibrated and started by using the STXCALN or ISTXCALN command strobe (see section 0 and 0). This will not start a transmission before a STXON command strobe is issued. This is not shown in Figure 52. Enabling transmission is done by issuing a STXON or STXONCCA command strobe. Turning off RF can be accomplished by using the SRFOFF command strobe. After bringing the CC2430 up to Power Mode 0 (PM0) from a low-power mode e.g. Power Mode 3 (PM3), all RF registers will retain their values thus placing the chip ready to operate at the correct frequency and mode. Due to the very fast start-up time, CC2430 can remain in a low-power mode until a transmission session is requested. The crystal oscillator is controlled through the Power Management Controller. The SLEEP.XOSC_STB bit indicates whether CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 179 of 232 CC2430 Voltage Regulator Off RFPWR.RREG_RADIO_PD set high RFPWR.RREG_RADIO_PD set low Wait until voltage regulator has powered up RFIF.IRQ_RREG_ON = 1 32 MHz Crystal Oscillator off SLEEP.OSC_PD set low CLKCON.OSC set low Wait for the specified crystal oscillator start-up time, or poll the SLEEP.XOSC_STB status bit SRFOFF IDLE [1] RX_CALIBRATE [2 and 40] SFD found RX_FRAME [16 and 40] Automatic or manual acknowledge request TX_ACK_CALIBRATE [48 and 55] SACK or SACKPEND Fr am fa e r ile ec re d a eiv co dd ed gn re o itio ss r n ed let mp co RX_SFD_SEARCH [3, 4, 5 and 6] (S ST TX XO ON N CC CC or A) A an d TX_CALIBRATE [32] ion iss sm an Tr 12 symbol periods later All RX states N XO ST SR XO N All States except Power Down (PD) 8 or 12 symbol periods later TX_PREAMBLE [34, 35 and 36] TX_FRAME [37, 38 and 39] Preamble and SFD is transmitted TXFIFO Data is transmitted 12 - 30 symbol periods later TX_ACK_PREAMBLE [49, 50 and 51] TX_ACK [52, 53 and 54] Acknowledge completed Figure 52: Radio control states CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 180 of 232 CC2430 14.21 MAC Security Operations (Encryption and Authentication) CC2430 features hardware IEEE 802.15.4 MAC security operations. Refer to section 14.22 Linear IF and AGC Settings 13.9 on page 135 for a description of the AES encryption unit. dynamic range by using an analog/digital feedback loop. C2430 is based on a linear IF chain where the signal amplification is done in an analog VGA (variable gain amplifier). The gain of the VGA is digitally controlled. The AGC characteristics are set through the AGCCTRLL:AGCCTRLH, registers. The reset values should be used for all AGC control registers. The AGC (Automatic Gain Control) loop ensures that the ADC operates inside its 14.23 RSSI / Energy Detection CC2430 has a built-in RSSI (Received Signal Strength Indicator) giving a digital value that can be read form the 8 bit, signed 2’s complement RSSIL.RSSI_VAL register bits. The RSSI value is always averaged over 8 symbol periods (128 µs), in accordance with [1]. The RSSI register value RSSI.RSSI_VAL can be referred to the power P at the RF pins by using the following equations: where the RSSI_OFFSET is found empirically during system development from the front end gain. RSSI_OFFSET is approximately –45. E.g. if reading a value of –20 from the RSSI register, the RF input power is approximately –65 dBm. A typical plot of the RSSI_VAL reading as function of input power is shown in Figure 53. It can be seen from the figure that the RSSI reading from CC2430 is very linear and has a dynamic range of about 100 dB. P = RSSI_VAL + RSSI_OFFSET [dBm] 60 RSSI Register Value 40 20 0 -100 -80 -60 -40 -20 0 -20 -40 -60 RF Level [dBm] Figure 53: Typical RSSI value vs. input power CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 181 of 232 CC2430 14.24 Link Quality Indication The link quality indication (LQI) measurement is a characterization of the strength and/or quality of a received packet, as defined by [1]. The RSSI value described in the previous section may be used by the MAC software to produce the LQI value. The LQI value is required by [1] to be limited to the range 0 through 255, with at least eight unique values. Software is responsible for generating the appropriate scaling of the LQI value for the given application. Using the RSSI value directly to calculate the LQI value has the disadvantage that e.g. a narrowband interferer inside the channel bandwidth will increase the LQI value although it actually reduces the true link quality. CC2430 therefore also provides an average correlation value for each incoming packet, based on the eight first symbols following the SFD. This unsigned 7-bit value can be looked upon as a measurement of the “chip error rate,” although CC2430 decision. does not do chip As described in the Frame check sequence section on page 175, the average correlation value for the eight first symbols is appended to each received frame together with the RSSI and CRC OK/not OK when MDMCTRL0L.AUTOCRC is set. A correlation value of approx. 110 indicates a maximum quality frame while a value of approx. 50 is typically the lowest quality frames detectable by CC2430. Software must convert the correlation value to the range 0-255 defined by [1], e.g. by calculating: LQI = (CORR – a) · b limited to the range 0-255, where a and b are found empirically based on PER measurements as a function of the correlation value. A combination of RSSI and correlation values may also be used to generate the LQI value. 14.25 Clear Channel Assessment The clear channel assessment signal is based on the measured RSSI value and a programmable threshold. The clear channel assessment function is used to implement the CSMA-CA functionality specified in [1]. CCA is valid when the receiver has been enabled for at least 8 symbol periods. Carrier sense threshold level is programmed by RSSI.CCA_THR. The threshold value can be programmed in steps of 1 dB. A CCA hysteresis can also be programmed in the MDMCTRL0H.CCA_HYST control bits. All three CCA modes specified by [1] are implemented in CC2430. These are set in MDMCTRL0L.CCA_MODE, as can be seen in the register description. The different modes are: 00 Reserved 01 Clear channel when received energy is below threshold. 10 Clear channel when not receiving valid IEEE 802.15.4 data. 11 Clear channel when energy is below threshold and not receiving valid IEEE 802.15.4 data Clear channel assessment is available on the RFSTATUS.CCA RF register bit. RFSTATUS.CCA is active high. This register bit will also set the interrupt flag RFIF.IRQ_CCA. Implementing CSMA-CA may easiest be done by using the STXONCCA command strobe given by the CSMA-CA/strobe processor, as shown in the Radio control state machine section on page 179. Transmission will then only start if the channel is clear. The TX_ACTIVE status bit in the RFSTATUS RF register may be used to detect the result of the CCA. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 182 of 232 CC2430 so here the LO frequency equals FC. The 2 MHz IF is automatically set by CC2430, so the frequency programming is equal for RX and TX. 14.26 Frequency and Channel Programming The operating frequency is set by programming the 10 bit frequency word located in FSCTRLH.FREQ[9:8] and FSCTRLL.FREQ[7:0]. The operating frequency FC in MHz is given by: IEEE 802.15.4 specifies 16 channels within the 2.4 GHz band, numbered 11 through 26. The RF frequency of channel k is given by [1] : FC = 2048 + FREQ[9:0] MHz FC = 2405 + 5 (k-11) MHz, k=11, 12, ..., 26 where FREQ[9:0] is the value given by FSCTRLH.FREQ[9:8]:FSCTRLL.FREQ[7 :0] For operation in channel k, the FSCTRLH.FREQ:FSCTRLL.FREQ register should therefore be set to: In receive mode the actual LO frequency is FC – 2 MHz, since a 2 MHz IF is used. Direct conversion is used for transmission, FSCTRLH.FREQ:FSCTRLL.FREQ = 357 + 5 (k-11) automatically calibrated every time the RX mode or TX mode is enabled, i.e. in the RX_CALIBRATE, TX_CALIBRATE and TX_ACK_CALIBRATE control states in Figure 52 on page 180. 14.27 VCO and PLL Self-Calibration 14.27.1 VCO The VCO is completely integrated and operates at 4800 – 4966 MHz. The VCO frequency is divided by 2 to generate frequencies in the desired band (24002483.5 MHz). 14.28 Output Power Programming The RF output power of the device is programmable and is controlled by the TXCTRLL.PA_LEVEL RF register. Table 43 shows the output power for different settings, including the complete programming of the TXCTRLL control register and the current consumption in the radio itself. 14.27.2 PLL self-calibration The VCO's characteristics will vary with temperature, changes in supply voltages, and the desired operating frequency. In order to ensure reliable operation the VCO’s bias current and tuning range are PA_LEVEL TXCTRLL register Output Power [dBm] Current consumption [mA] 31 0xFF 0 17.4 27 0xFB -1 16.5 23 0xF7 -3 15.2 19 0xF3 -5 13.9 15 0xEF -7 12.5 11 0xEB -10 11.2 7 0xE7 -15 9.9 3 0xE3 -25 8.5 Table 43: Output power settings CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 183 of 232 CC2430 14.29 Input / Output Matching The RF input / output is differential (RF_N and RF_P). In addition there is supply switch output pin (TXRX_SWITCH) that must have an external DC path to RF_N and RF_P. In RX mode the TXRX_SWITCH pin is at ground and will bias the LNA. In TX mode the TXRX_SWITCH pin is at supply rail voltage and will properly bias the internal PA. The RF output and DC bias can be done using different topologies. Some are shown in Figure 6 on page 30. Component values are given in Table 24 on page 31. If a differential antenna is implemented, no balun is required. If a single ended output is required (for a single ended connector or a single ended antenna), a balun should be used for optimum performance. 14.30 Transmitter Test Modes CC2430 can be set into different transmit test modes for performance evaluation. The test mode descriptions in the following sections requires that the chip is first reset, the crystal oscillator is selected using the CLKCON register and that the crystal oscillator has stabilized. 0x1800 to the DACTSTH:DACTSTL registers and issue a STXON command strobe. The transmitter is then enabled while the transmitter I/Q DACs are overridden to static values. An unmodulated carrier will then be available on the RF output pins. 14.30.1 Unmodulated carrier A plot of the single carrier output spectrum from CC2430 is shown in Figure 54 below. An unmodulated carrier may be transmitted by setting MDMCTRL1L.TX_MODE to 2, writing CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 184 of 232 CC2430 Figure 54: Single carrier output 14.30.2 Modulated spectrum The CC2430 has a built-in test pattern generator that can generate a pseudo random sequence using the CRC generator. This is enabled by setting MDMCTRL1L.TX_MODE to 3 and issuing a STXON command strobe. The modulated spectrum is then available on the RF pins. The low byte of the CRC word is transmitted and the CRC is updated with 0xFF for each new byte. The length of the transmitted data sequence is 65535 bits. The transmitted data-sequence is then: sequence for bit error testing. Please note that CC2430 requires symbol synchronization, not only bit synchronization, for correct reception. Packet error rate is therefore a better measurement for the true RF performance. 0x78, Another option to generate a modulated spectrum is to fill the TXFIFO with pseudorandom data and set MDMCTRL1L.TX_MODE to 2. CC2430 will then transmit data from the FIFO disregarding a TXFIFO underflow. The length of the transmitted data sequence is then 1024 bits (128 bytes). Since a synchronization header (preamble and SFD) is transmitted in all TX modes, this test mode may also be used to transmit a known pseudorandom bit A plot of the modulated spectrum from CC2430 is shown in Figure 55. Note that to find the output power from the modulated spectrum, the RBW must be set to 3 MHz or higher. [synchronization header] [0x00, 0xb8, 0x4b, 0x99, 0xc3, 0xe9, …] CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 185 of 232 CC2430 Figure 55: Modulated spectrum plot 14.31 System Considerations Guidelines and 14.31.1 SRD regulations International regulations and national laws regulate the use of radio receivers and transmitters. SRDs (Short Range Devices) for license free operation are allowed to operate in the 2.4 GHz band worldwide. The most important regulations are ETSI EN 300 328 and EN 300 440 (Europe), FCC CFR-47 part 15.247 and 15.249 (USA), and ARIB STD-T66 (Japan). defined by [1] to spread the output power, thereby making the communication link more robust even in a noisy environment. With CC2430 it is also possible to combine both DSSS and FHSS (frequency hopping spread spectrum) in a proprietary nonIEEE 802.15.4 system. This is achieved by reprogramming the operating frequency (see the Frequency and Channel Programming section on page 183) before enabling RX or TX. A frequency synchronization scheme must then be implemented within the proprietary MAC layer to make the transmitter and receiver operate on the same RF channel. 14.31.2 Frequency hopping and multichannel systems 14.31.3 Data burst transmissions The 2.4 GHz band is shared by many systems both in industrial, office and home CC2430 uses direct environments. sequence spread spectrum (DSSS) as The data buffering in CC2430 lets the user have a lower data rate link between the CPU and the radio module than the RF bit rate of 250 kbps. This allows the CPU to CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 186 of 232 CC2430 buffer data at its own speed, reducing the workload and timing requirements. DMA transfers may be used to efficiently move data to and from the radio FIFOs. The relatively high data rate of CC2430 also reduces the average power consumption compared to the 868 / 915 MHz bands defined by [1], where only 20 / 40 kbps are available. CC2430 may be powered up a smaller portion of the time, so that the average power consumption is reduced for a given amount of data to be transferred. 14.31.4 Crystal accuracy and drift A crystal accuracy of ±40 ppm is required for compliance with IEEE 802.15.4 [1]. This accuracy must also take ageing and temperature drift into consideration. secure communication, which is required for many applications. Security operations require a lot of data processing, which is costly in an 8-bit microcontroller system. The hardware support within CC2430 enables a high level of security with minimum CPU processing requirements. 14.31.7 Low cost systems As the CC2430 provides 250 kbps multichannel performance without any external filters, a very low cost system can be made (e.g. two layer PCB with singlesided component mounting). A differential antenna will eliminate the need for a balun, and the DC biasing can be achieved in the antenna topology. 14.31.8 Battery operated systems A crystal with low temperature drift and low aging could be used without further compensation. A trimmer capacitor in the crystal oscillator circuit (in parallel with C191 in Figure 6) could be used to set the initial frequency accurately. In low power applications, the CC2430 should be placed in the low-power modes PM2 or PM3 when not being active. Ultra low power consumption may be achieved since the voltage regulators are turned off. For non-IEEE 802.15.4 systems, the robust demodulator in CC2430 allows up to 120 ppm total frequency offset between the transmitter and receiver. This could e.g. relax the accuracy requirement to 60 ppm for each of the devices. 14.31.9 BER / PER measurements Optionally in a star network topology, the FFD could be equipped with a more accurate crystal thereby relaxing the requirement on the RFD. This can make sense in systems where the RFDs ship in higher volumes than the FFDs. CC2430 includes test modes where data is received infinitely and output to pins. The required test modes are selected with the RF register bits MDMCTRL1L.TX_MODE[1:0] and MDMCTRL1L.RX_MODE[1:0]. These modes may be used for Bit Error Rate (BER) measurements. However, the following precautions must be taken to perform such a measurement: • A preamble and SFD sequence must be used, even if pseudo random data is transmitted, since receiving the DSSS modulated symbol signal requires bit synchronization, not synchronization like e.g. in 2FSK systems. The SYNCWORDH:SYNCWORDL may be set to another value to fit to the measurement setup if necessary. • The data transmitted over air must be spread according to [1] and the description on page 165. This means that the transmitter used during measurements must be able to do spreading of the bit 14.31.5 Communication robustness CC2430 provides very good adjacent, alternate and co channel rejection, image frequency suppression and blocking properties. The CC2430 performance is significantly better than the requirements imposed by [1]. These are highly important parameters for reliable operation in the 2.4 GHz band, since an increasing number of devices/systems are using this license free frequency band. 14.31.6 Communication security The hardware encryption and authentication operations in CC2430 enable CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 187 of 232 CC2430 data to chip data. Remember that the chip sequence transmitted by the test setup is not the same as the bit sequence, which is output by CC2430. • When operating at or below the sensitivity limit, CC2430 may lose symbol synchronization in infinite receive mode. A new SFD and restart of the receiver may be required to re-gain synchronization. In an IEEE 802.15.4 system, all communication is based on packets. The sensitivity limit specified by [1] is based on Packet Error Rate (PER) measurements instead of BER. This is a more realistic measurement of the true RF performance since it mirrors the way the actual system operates. Chipcon recommends performing PER measurements instead of BER measurements to evaluate the performance of IEEE 802.15.4 systems. To do PER measurements, the following may be used as a guideline: • A valid preamble, SFD and length field must be used for each packet. • The PSDU (see Figure 45 on page 173) length should be 20 bytes for sensitivity measurements as specified by [1]. • The sensitivity limit specified by [1] is the RF level resulting in a 1% PER. The packet sample space for a given measurement must then be >> 100 to have a sufficiently large sample space. E.g. at least 1000 packets should be used to measure the sensitivity. • The data transmitted over air must be spread according to [1] and the description on page 165. Pregenerated packets may be used, although [1] requires that the PER is averaged over random PSDU data. • The CC2430 receive FIFO may be used to buffer data received during PER measurements, since it is able to buffer up to 128 bytes. • The MDMCTRL1H.CORR_THR control register should be set to 20, as described in the Demodulator, Symbol Synchronizer and Data Decision section. The simplest way of making a PER measurement will be to use another CC2430 as the reference transmitter. However, this makes it difficult to measure the exact receiver performance. Using a signal generator, this may either be set up as O-QPSK with half-sine shaping or as MSK. If using O-QPSK, the phases must be selected according to [1]. If using MSK, the chip sequence must be modified such that the modulated MSK signal has the same phase shifts as the OQPSK sequence previously defined. For a desired symbol sequence s0, s1, … , sn-1 of length n symbols, the desired chip sequence c0, c1, c2, …, c32n-1 of length 32n is found using table lookup from Table 42 on page 165. It can be seen from comparing the phase shifts of the O-QPSK signal with the frequency of a MSK signal that the MSK chip sequence is generated as: (c0 xnor c1), (c1 xor c2), (c2 xnor c3), … , (c32n-1 xor c32n) where c32n may be arbitrarily selected. 14.32 PCB Layout Recommendation A two layer PCB is highly recommended. In Chipcon’s reference design, the top layer is used for signal routing, and the open areas are filled with metallization connected to ground using several vias. The area under the chip is used for grounding and must be well connected to the ground plane with several vias. The ground pins should be connected to ground as close as possible to the package pin using individual vias. The decoupling capacitors should also be placed as close as possible to the supply pins and connected to the ground plane by separate vias. Supply power filtering is very important. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 188 of 232 CC2430 The external components should be as small as possible (0402 is recommended) and surface mount devices must be used. If using any external high-speed digital devices, caution should be used when placing these in order to avoid interference with the RF circuitry. A Development Kit, CC2430DK, with a fully assembled Evaluation Module is available. It is strongly advised that this reference layout is followed very closely in order to obtain the best performance. The schematic, BOM and layout Gerber files for the reference designs are all available from the Chipcon website. 14.33 Antenna Considerations CC2430 can be used together with various types of antennas. A differential antenna like a dipole would be the easiest to interface not needing a balun (balanced to un-balanced transformation network). Non-resonant monopole antennas shorter than λ/4 can also be used, but at the expense of range. In size and cost critical applications such an antenna may very well be integrated into the PCB. The length of the λ/2-dipole antenna is given by: Enclosing the antenna in high dielectric constant material reduces the overall size of the antenna. Many vendors offer such antennas intended for PCB mounting. L = 14250 / f where f is in MHz, giving the length in cm. An antenna for 2450 MHz should be 5.8 cm. Each arm is therefore 2.9 cm. Other commonly used antennas for shortrange communication are monopole, helical and loop antennas. The singleended monopole and helical would require a balun network between the differential output and the antenna. Monopole antennas are resonant antennas with a length corresponding to one quarter of the electrical wavelength (λ/4). They are very easy to design and can be implemented simply as a “piece of wire” or even integrated into the PCB. The length of the λ/4-monopole antenna is given by: L = 7125 / f Helical antennas can be thought of as a combination of a monopole and a loop antenna. They are a good compromise in size critical applications. Helical antennas tend to be more difficult to optimize than the simple monopole. Loop antennas are easy to integrate into the PCB, but are less effective due to difficult impedance matching because of their very low radiation resistance. For low power applications the differential antenna is recommended giving the best range and because of its simplicity. The antenna should be connected as close as possible to the IC. If the antenna is located away from the RF pins the antenna should be matched to the feeding transmission line (50 Ω). where f is in MHz, giving the length in cm. An antenna for 2450 MHz should be 2.9 cm. 14.34 CSMA/CA Strobe Processor The Command Strobe/CSMA-CA Processor (CSP) provides the control interface between the CPU and the Radio module in the CC2430. The CSP interfaces with the CPU through the SFR register RFST and the RF registers CSPX, CSPY, CSPZ, CSPT and CSPCTRL. The CSP produces interrupt requests to the CPU. In addition the CSP interfaces with the MAC Timer by observing MAC Timer overflow events. The CSP allows the CPU to issue command strobes to the radio thus controlling the operation of the radio. The CSP has two modes of operation as follows, which are described below. • Immediate execution. • Program execution CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Command Strobe Page 189 of 232 CC2430 Immediate Command Strobes are written as an Immediate Command Strobe instruction to the CSP which are issued instantly to the Radio module. The Immediate Command Strobe instruction is also used only to control the CSP. The Immediate Command Strobe instructions are described in section 1.1.1. in section 1.1.1. The required program is first loaded into the CSP by the CPU, then the CPU instructs the CSP to start executing the program. The program execution mode together with the MAC Timer allows the CSP to automate CSMA-CA algorithms and thus act as a co-processor for the CPU. Program execution mode means that the CSP executes a sequence of instructions, from a program memory or instruction memory, thus constituting a short userdefined program. The available instructions are from a set of 14 instructions. The instruction set is defined The operation of the CSP is described in detail in the following sections. The command strobes and other instructions supported by the CSP are given in section 14.34.8 on page 194. Example programs for the CSP are shown in section 14.34.9 on page 201. RFST (0xE1) – RF CSMA-CA / Strobe Processor Bit Name Reset R/W Description 7:0 INSTR[7:0] 0xC0 R/W Data written to this register will be written to the CSP instruction memory. Reading this register will return the CSP instruction currently being executed. 14.34.1 Instruction Memory The CSP executes single byte program instructions which are read from a 24 byte instruction memory. The instruction memory is written to sequentially through the SFR register RFST. An instruction write pointer is maintained within the CSP to hold the location within the instruction memory where the next instruction written to RFST will be stored. Following a reset the write pointer is reset to location 0. During each RFST register write, the write pointer will be incremented by 1 until the end of memory is reached when the write pointer will stop incrementing. The first instruction written to RFST will be stored in location 0, the location where program execution starts. Thus a complete 24 instruction program is written to the instruction memory by writing each instruction in the desired order to the RFST register. The write pointer may be reset to 0 by writing the immediate command strobe instruction ISSTOP. In addition the write pointer will be reset to 0 when the command strobe SSTOP is executed in a program. Following a reset, the instruction memory is filled with SNOP (No Operation) instructions (opcode value 0xC0). While the CSP is executing a program, there shall be no attempts to write instructions to the instruction memory by writing to RFST. Failure to observe this rule can lead to incorrect program execution and corrupt instruction memory contents. However, Immediate Command Strobe instructions may be written to RFST (see section 14.34.3). 14.34.2 Data Registers The CSP has three data registers CSPT, CSPX, CSPY and CSPZ, which are read/write accessible for the CPU as RF registers. These registers are read or modified by some instructions, thus allowing the CPU to set parameters to be used by a CSP program or allowing the CPU to read CSP program status. The CSPT data register is not modified by any instruction. The CSPT data register is used to set a MAC Timer overflow compare value. Once program execution has started on the CSP, the contents of this register is decremented by 1 each time the MAC timer overflows. When CSPT CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 190 of 232 CC2430 reaches zero, program execution is halted and the interrupt IRQ_CSP_STOP is asserted. The CSPT register will not be decremented if the CPU writes 0xFF to this register. Note: If the CSPT register compare function is not used, this register must be set to 0xFF before the program execution is started. 14.34.3 Program Execution After the instruction memory has been filled, program execution is started by writing the immediate command strobe instruction ISSTART to the RFST register. The program execution will continue until either the instruction at last location has been executed, the CSPT data register contents is zero, a SSTOP instruction has been executed, an immediate ISSTOP instruction is written to RFST or until a SKIP instruction returns a location beyond the last location in the instruction memory. Immediate Command Strobe instructions may be written to RFST while a program is being executed. In this case the Immediate instruction will bypass the instruction in the instruction memory, which will be completed once the Immediate instruction has been completed. During program execution, reading RFST will return the current instruction being executed. An exception to this is the execution of immediate command strobes, during which RFST will return C0h. 14.34.4 Interrupt Requests • IRQ_CSP_STOP: asserted when the processor has executed the last instruction in memory and when the processor stops due to a SSTOP or ISSTOP instruction or CSPT register equal zero. • IRQ_CSP_WT: asserted when the processor continues executing the next instruction after a WAIT W or WAITX instruction. • IRQ_CSP_INT: asserted when the processor executes an INT instruction. 14.34.5 Random Number Instruction There will be a delay in the update of the random number used by the RANDXY instruction. Therefore if an instruction, RANDXY, that uses this value is issued immediately after a previous RANDXY instruction, the random value read may be the same in both cases. 14.34.6 Running CSP Programs The basic flow for loading and running a program on the CSP is shown in Figure 56. When program execution stops due to end of program the current program remains in program memory so that the same program can be run again by starting execution once again with the ISSTART command. However, when program execution is stopped by the SSTOP or ISTOP instruction, the program memory will be cleared. . The CSP has three interrupts flags which can produce the RF interrupt vector. These are the following: CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 191 of 232 CC2430 no Write instruction to RFST All instructions written? yes Setup CSPT, CSPX, CSPY, CSPZ and CSPCTRL registers Start execution by writing ISSTART to RFST SSTOP instruction, end of program or writing ISTOP to RFST stops program Figure 56: Running a CSP program 14.34.7 Instruction Set Summary This section gives an overview of the instruction set. This is intended as a summary and definition of instruction opcodes. Refer to section 14.34.8 for a description of each instruction. Each instruction consists of one byte which is written to the RFST register to be stored in the instruction memory. instructions are written to the RFST register, they are executed immediately. If the CSP is already executing a program the current instruction will be delayed until the Immediate Strobe instruction has completed. For undefined opcodes, the behavior of the CSP is defined as a No Operation Strobe Command (SNOP). The Immediate Strobe instructions (ISxxx) are not used in a program. When these CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 192 of 232 CC2430 Table 44: Instruction Set Summary Opcode Bit number 5 Mnemonic 7 6 5 4 SKIP C,S 0 WAIT W 1 0 0 WEVENT 1 0 1 1 1 0 0 0 Wait until MAC Timer first compare WAITX 1 0 1 1 1 0 1 1 Wait for MAC Timer overflow count equal CSPX LABEL 1 0 1 1 1 0 1 0 Label next instruction as loop start RPT 1 0 1 0 N INT 1 0 1 1 1 0 0 1 Assert interrupt INCY 1 0 1 1 1 1 0 1 Increment CSPY INCMAXY 1 0 1 1 0 DECY 1 0 1 1 1 1 1 0 Decrement CSPY DECZ 1 0 1 1 1 1 1 1 Decrement CSPZ RANDXY 1 0 1 1 1 1 0 0 Load CSPX with CSPY bit random value. Sxxx 1 1 0 STRB Command strobe instructions6 ISxxx 1 1 1 STRB Immediate strobe instructions7 S 3 2 N 1 0 Description Skip S instructions when condition (C xor N) is true5 C Wait for MAC Timer overflow count equal W W Repeat from start of loop if condition (C xor N) is true C Increment CSPY not greater than M M Refer to section 14.34.8 for full description of each instruction 6 The Command strobe instruction is divided into eleven sub-instructions as defined by the STRB field. See sections 14.34.8.13 to 14.34.8.23 for a description. 7 The Immediate strobe instruction is divided into eleven sub-instructions as defined by the STRB field. See sections 0 to 14.34.8.34 for a description. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 193 of 232 CC2430 14.34.8.3 INCY 14.34.8 Instruction Set Definition There are 14 basic instruction types. Furthermore the Command Strobe and Immediate Strobe instructions can each be divided into eleven sub-instructions giving an effective number of 34 different instructions. The following sub-sections describe each instruction. Note: the following definitions are used in this section PC = CSP program counter X = RF register CSPX Y = RF register CSPY Z = RF register CSPZ T = RF register CSPT Y := Y+1 Operation: Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 1 0 1 Increment Y not greater Function: than M. Decrement Z Description: The Z register is decremented by 1. An original value of 0x00 will underflow to 0x0FF. Description: The Y register is incremented by 1 if the result is less than M otherwise Y register is loaded with value M. Y:= min(Y+1, M) Operation: Z := Z-1 Operation: Description: The Y register is incremented by 1. An original value of 0x0FF will overflow to 0x00. 14.34.8.4 INCMAXY 14.34.8.1 DECZ Function: Increment Y Function: Opcode: Opcode: 7 6 5 4 3 2 1 0 7 6 5 4 3 1 0 1 1 1 1 1 1 1 0 1 1 0 14.34.8.2 DECY Description: The Y register is decremented by 1. An original value of 0x00 will underflow to 0x0FF. Y := Y-1 Operation: 1 0 M 14.34.8.5 RANDXY Decrement Y Function: 2 Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 1 1 0 Load random value into X Function: Description: The [Y] LSB bits of X register are loaded with random value. Note that if two RANDXY instructions are issued immediately after each other the same random value will be used in both cases. Operation: X[Y-1:0]:= RNG_DOUT[Y1:0], X[7:Y] := 0 Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 1 0 0 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 194 of 232 CC2430 flag IRQ_CSP_WT is asserted when the wait condition is true. 14.34.8.6 INT Interrupt. Function: Description: The interrupt IRQ_CSP_INT is asserted when this instruction is executed. IRQ_CSP_INT=1 Operation: Operation: PC := PC while number of MAC Timer overflow = true < W PC := PC+1 when number of MAC Timer overflow = true = W Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 0 0 1 Opcode: 7 6 5 1 0 0 4 3 2 1 0 W 14.34.8.7 WAITX Wait for X MAC Timer Function: overflows Description: Wait until MAC Timer overflows the number of times equal to register X. The contents of register X is decremented each time a MAC Timer overflow is detected. Program execution continues with the next instruction and the interrupt flag IRQ_CSP_WT is asserted when the wait condition is true. Operation: X := X-1 when MAC Timer overflow = true PC := PC while number of MAC Timer overflow = true < X PC := PC+1 when number of MAC Timer overflow = true = X Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 0 1 1 14.34.8.9 WEVENT Wait Function: compare until MAC Timer Description: Wait until next MAC Timer compare. Program execution continues with the next instruction when the wait condition is true. Operation: PC := PC while MAC Timer compare = false PC := PC+1 when MAC Timer compare = true Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 0 0 0 14.34.8.8 WAIT W Function: overflows Wait for W MAC Timer Description: Wait until MAC Timer overflows number of times equal to value W. If W=0 the instruction will wait for 32 overflows. Program execution continues with the next instruction and the interrupt CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 195 of 232 CC2430 Opcode: 14.34.8.10 LABEL Function: Set loop label Description: Sets next instruction as start of loop. If the current instruction is the last instruction in the instruction memory then the current PC is set as start of loop. Only one level of loops is supported. LABEL := PC+1 Operation: Opcode: 7 6 5 4 3 2 1 0 1 0 1 1 1 0 1 0 7 6 5 4 3 1 0 1 0 N 2 1 0 C 14.34.8.12 SKIP S, C Function: instruction Conditional skip Description: If condition C is true then skip S instructions. The condition C may be negated (N=1) and is described in the table below (note same conditions as RPT C instruction). Condition code C Description Function 14.34.8.11 RPT C 000 CCA is true CCA=1 Function: Conditional repeat 001 Receiving packet SFD =1 010 CPU control true CSPCTRL.CPU_CTRL =1 011 End of instruction memory PC=23 100 Register X=0 X=0 101 Register Y=0 Y=0 110 Register Z=0 Z=0 111 Not used - Description: If condition C is true then jump to instruction defined by last LABEL instruction, i.e. jump to start of loop. If the condition is false or if a LABEL instruction has not been executed, then execution will continue from next instruction. The condition C may be negated by setting N=1 and is described in the table below. Condition code C Description Function 000 CCA is true CCA=1 Operation: 001 Receiving packet SFD =1 PC := PC+S+1 when (C xor N)=true 010 CPU control true CSPCTRL.CPU_CTRL=1 011 End of instruction memory PC=23 100 Register X=0 X=0 101 Register Y=0 Y=0 110 Register Z=0 Z=0 111 Not used - PC := PC+1 when (C xor N)=false Opcode: 7 0 6 5 4 S 3 N 2 1 0 C Operation: PC := LABEL when (C xor N)=true PC := PC+1 when (C xor N) =false or LABEL=not set CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 196 of 232 CC2430 14.34.8.13 STOP Opcode: Function: Stop program execution Description: The SSTOP instruction stops the CSP program execution. The instruction memory is cleared, any loop start location set by the LABEL instruction is invalidated and the IRQ_CSP_STOP interrupt flag is asserted. Operation: Stop execution, PC := 0, write pointer := 0 Opcode: 7 6 5 4 3 2 1 0 1 1 0 1 1 1 1 1 7 6 5 4 3 2 1 0 1 1 0 0 0 0 0 1 14.34.8.16 SRXON Function: Enable and frequency synthesizer for RX calibrate Description: The SRXON instruction asserts the output FFCTL_SRXON_STRB to enable and calibrate frequency synthesizer for RX. The instruction waits for the radio to acknowledge the command before executing the next instruction. SRXON Operation: Opcode: 14.34.8.14 SNOP Function: No Operation Description: Operation continues at the next instruction. 7 6 5 4 3 2 1 0 1 1 0 0 0 0 1 0 PC := PC+1 Operation: Opcode: 14.34.8.17 STXON Enable TX after 7 6 5 4 3 2 1 0 Function: calibration 1 1 0 0 0 0 0 0 Description: The STXON instruction enables TX after calibration. The instruction waits for the radio to acknowledge the command before executing the next instruction. 14.34.8.15 Function: Enable and frequency synthesizer for TX. calibrate Note this instruction is for test purposes only (see section 14.20). Description: The STXCALN instruction enables and calibrate frequency synthesizer for TX. The instruction waits for the radio to acknowledge the command before executing the next instruction. Operation: STXON Operation: STXCALN Opcode: 7 6 5 4 3 2 1 0 1 1 0 0 0 0 1 1 STXCALN CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 197 of 232 CC2430 Opcode: 14.34.8.18 STXONCCA Function: Enable calibration and TX if CCA indicates a clear channel Description: The STXONCCA instruction enables TX after calibration if CCA indicates a clear channel. The instruction waits for the radio to acknowledge the command before executing the next instruction. STXONCCA Operation: Opcode: 7 6 5 4 3 2 1 0 1 1 0 0 0 1 0 0 7 6 5 4 3 2 1 0 1 1 0 0 0 1 1 0 14.34.8.21 SFLUSHTX Function: Flush TXFIFO buffer Description: The SFLUSHTX instruction flushes the TXFIFO buffer. The instruction waits for the radio to acknowledge the command before executing the next instruction. SFLUSHTX Operation: Opcode: 14.34.8.19 SRFOFF Function: Disable frequency synthesizer. RX/TX and Description: The SRFOFF instruction asserts disables RX/TX and the frequency synthesizer. The instruction waits for the radio to acknowledge the command before executing the next instruction. 6 5 4 3 2 1 0 1 1 0 0 0 1 1 1 14.34.8.22 SACK Function: Send acknowledge frame with pending field cleared SRFOFF Operation: 7 Opcode: 7 6 5 4 3 2 1 0 1 1 0 0 0 1 0 1 Description: The SACK instruction sends an acknowledge frame. The instruction waits for the radio to acknowledge the command before executing the next instruction. SACK Operation: 14.34.8.20 SFLUSHRX Function: Flush RXFIFO buffer and reset demodulator Description: The SFLUSHRX instruction flushes the RXFIFO buffer and resets the demodulator. The instruction waits for the radio to acknowledge the command before executing the next instruction. Operation: Opcode: 7 6 5 4 3 2 1 0 1 1 0 0 1 0 0 0 SFLUSHRX CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 198 of 232 CC2430 14.34.8.23 SACKPEND Opcode: Function: Send acknowledge frame with pending field set 7 6 5 4 3 2 1 0 Description: The SACKPEND instruction sends an acknowledge frame with pending field set. The instruction waits for the radio to acknowledge the command before executing the next instruction. 1 1 1 1 1 1 1 0 SACKPEND Operation: 14.34.8.26 ISTXCALN Function: Enable and frequency synthesizer for TX. Opcode: 7 6 5 4 3 2 1 0 1 1 0 0 1 0 0 1 14.34.8.24 ISSTOP Function: Stop program execution Description: The ISSTOP instruction stops the CSP program execution. The instruction memory is cleared, any loop start location set be the LABEL instruction is invalidated and the IRQ_CSP_STOP interrupt flag is asserted. calibrate Note this instruction is for test purposes only (see section 14.20). Description: The ISTXCALN instruction immediately enables and calibrates frequency synthesizer for TX. The instruction waits for the radio to acknowledge the command before executing the next instruction. STXCALN Operation: Opcode: 7 6 5 4 3 2 1 0 1 1 1 0 0 0 0 1 Stop execution Operation: 14.34.8.27 Opcode: ISRXON 7 6 5 4 3 2 1 0 Function: Enable and frequency synthesizer for RX 1 1 1 1 1 1 1 1 calibrate 14.34.8.25 ISSTART Description: The ISRXON instruction immediately enables and calibrates frequency synthesizer for RX. The instruction waits for the radio to acknowledge the command before executing the next instruction. Function: Start program execution Operation: Description: The ISSTART instruction starts the CSP program execution from first instruction written to instruction memory. Operation: PC := 0, start execution SRXON Opcode: 7 6 5 4 3 2 1 0 1 1 1 0 0 0 1 0 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 199 of 232 CC2430 14.34.8.28 ISTXON Function: calibration Enable Opcode: TX after 7 6 5 4 3 2 1 0 Description: The ISTXON instruction immediately enables TX after calibration. The instruction waits for the radio to acknowledge the command before executing the next instruction. 1 1 1 0 0 1 0 1 STXON_STRB Operation: 14.34.8.31 ISFLUSHRX Function: Flush RXFIFO buffer and reset demodulator Opcode: 7 6 5 4 3 2 1 0 1 1 1 0 0 0 1 1 Description: The ISFLUSHRX instruction immediately flushes the RXFIFO buffer and resets the demodulator. The instruction waits for the radio to acknowledge the command before executing the next instruction. SFLUSHRX Operation: 14.34.8.29 ISTXONCCA Function: Enable calibration and TX if CCA indicates a clear channel Description: The ISTXONCCA instruction immediately enables TX after calibration if CCA indicates a clear channel. The instruction waits for the radio to acknowledge the command before executing the next instruction. STXONCCA Operation: Opcode: 7 6 5 4 3 2 1 0 1 1 1 0 0 1 0 0 Opcode: 7 6 5 4 3 2 1 0 1 1 1 0 0 1 1 0 14.34.8.32 ISFLUSHTX Function: Flush TXFIFO buffer Description: The ISFLUSHTX instruction immediately flushes the TXFIFO buffer. The instruction waits for the radio to acknowledge the command before executing the next instruction. SFLUSHTX Operation: Opcode: 14.34.8.30 ISRFOFF Function: Disable frequency synthesizer. RX/TX and 7 6 5 4 3 2 1 0 1 1 1 0 0 1 1 1 Description: The ISRFOFF instruction immediately disables RX/TX and frequency synthesizer. The instruction waits for the radio to acknowledge the command before executing the next instruction. Operation: FFCTL_SRFOFF_STRB=1 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 200 of 232 CC2430 14.34.8.33 ISACK Function: Send acknowledge frame with pending field cleared Description: The ISACK instruction immediately sends an acknowledge frame. The instruction waits for the radio to receive and interpret the command before executing the next instruction. SACK_ Operation: receive and interpret the command before executing the next instruction. SACKPEND Operation: Opcode: 7 6 5 4 3 2 1 0 1 1 1 0 1 0 0 1 Opcode: 7 6 5 4 3 2 1 0 14.34.9 Example programs 1 1 1 0 1 0 0 0 This section shows two example programs for the CSP. 14.34.8.34 ISACKPEND Function: Send acknowledge frame with pending field set Description: The ISACKPEND instruction immediately sends an acknowledge frame with pending field set. The instruction waits for the radio to The first example in Figure 57 on page 202 shows how a slotted CSMA-CA algorithm as defined by IEEE 802.15.4 can be implemented. The second example in Figure 58 shows how a non-slotted CSMA-CA algorithm can be implemented on the CSP. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 201 of 232 CC2430 0xba, // LABEL 0xbb, // WAITX Delay for random backoffs 0x22, // SKIP 2, C2 Turn on RX? 0xc2, // SRXON Yes, RX on 0xb8, // WEVENT Wait for RX to be stable 0x58, // 0xb8, // WEVENT CCA = TRUE, CW = CW - 1 0x38, // SKIPC 3, !C0 Is CCA = TRUE? 0xc3, // STXON Turn on TX 0xb9, // INT Yes, signal success to CPU 0xdf, // SSTOP CSMA completed successfully, stop processing 0x12, // SKIP 1, C2 0xc5, // SRFOFF 0xb5, // INCMAXY 5 BE = min(BE+1, aMaxBE) 0xbc, // RANDXY Next delay random unit backoff periods 0xbf, // DECZ NB = NB - 1 0xae, // RPT ! C6 SKIP 5, !C0 Is CCA = TRUE? Turn off RX to preserve power? Yes, RX off Continue until NB = 0 (NB > macMaxCSMABackoffs Figure 57: Example Slotted CSMA-CA algorithm implementation 0xba, // LABEL 0xbb, // WAITX Delay for random backoffs 0x22, // SKIP 2, C2 Turn on RX? 0xc2, // SRXON Yes, RX on 0xb8, // WEVENT Wait for RX to be stable 0x38, // 0xc3, // STXON Turn on TX 0xb9, // INT Yes, signal success to CPU 0xdf, // SSTOP CSMA completed successfully, stop processing 0x12, // SKIP 1, C2 0xc5, // SRFOFF 0xb5, // INCMAXY 5 BE = min(BE+1, aMaxBE) 0xbc, // RANDXY Next delay random unit backoff periods 0xbf, // DECZ NB = NB - 1 0xae, // RPT ! C6 SKIP 3, !C0 Is CCA = TRUE? Turn off RX to preserve power? Yes, RX off Continue until NB = 0 (NB > macMaxCSMABackoffs) Figure 58: Example Non-slotted CSMA-CA algorithm implementation CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 202 of 232 CC2430 14.35 Radio Registers This section describes all RF registers used for control and status for the radio. The RF registers reside in XDATA memory space. Table 45 gives an overview of register addresses while the remaining tables in this section describe each register. Refer also to section 3 for Register conventions. Table 45 : Overview of RF registers XDATA Address Register name Description 0xDF000xDF01 - Reserved 0xDF02 MDMCTRL0H Modem Control 0, high 0xDF03 MDMCTRL0L Modem Control 0, low 0xDF04 MDMCTRL1H Modem Control 1, high 0xDF05 MDMCTRL1L Modem Control 1, low 0xDF06 RSSIH RSSI and CCA Status and Control, high 0xDF07 RSSIL RSSI and CCA Status and Control, low 0xDF08 SYNCWORDH Synchronisation Word Control, high 0xDF09 SYNCWORDL Synchronisation Word Control, low 0xDF0A TXCTRLH Transmit Control, high 0xDF0B TXCTRLL Transmit Control, low 0xDF0C RXCTRL0H Receive Control 0, high 0xDF0D RXCTRL0L Receive Control 0, low 0xDF0E RXCTRL1H Receive Control 1, high 0xDF0F RXCTRL1L Receive Control 1, low 0xDF10 FSCTRLH Frequency Synthesizer Control and Status, high 0xDF11 FSCTRLL Frequency Synthesizer Control and Status, low 0xDF12 CSPX CSP X Data 0xDF13 CSPY CSP Y Data 0xDF14 CSPZ CSP Z Data 0xDF15 CSPCTRL CSP Control 0xDF16 CSPT CSP T Data 0xDF17 RFPWR RF Power Control 0xDF20 FSMTCH Finite State Machine Time Constants, high 0xDF21 FSMTCL Finite State Machine Time Constants, low 0xDF22 MANANDH Manual AND Override, high 0xDF23 MANANDL Manual AND Override, low 0xDF24 MANORH Manual OR Override, high 0xDF25 MANORL Manual OR Override, low 0xDF26 AGCCTRLH AGC Control, high 0xDF27 AGCCTRLL AGC Control, low CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 203 of 232 CC2430 XDATA Address Register name Description 0xDF280xDF38 - Reserved 0xDF39 FSMSTATE Finite State Machine State Status 0xDF3A ADCTSTH ADC Test, high 0xDF3B ADCTSTL ADC Test, low 0xDF3C DACTSTH DAC Test, high 0xDF3D DACTSTL DAC Test, low 0xDF3E - Reserved 0xDF3F - Reserved 0xDF40 - Reserved 0xDF41 - Reserved 0xDF43 IEEE_ADDR0 IEEE Address 0 0xDF44 IEEE_ADDR1 IEEE Address 1 0xDF45 IEEE_ADDR2 IEEE Address 2 0xDF46 IEEE_ADDR3 IEEE Address 3 0xDF47 IEEE_ADDR4 IEEE Address 4 0xDF48 IEEE_ADDR5 IEEE Address 5 0xDF49 IEEE_ADDR6 IEEE Address 6 0xDF4A IEEE_ADDR7 IEEE Address 7 0xDF4B PANIDH PAN Identifier, high 0xDF4C PANIDL PAN Identifier, low 0xDF4D SHORTADDRH Short Address, high 0xDF4E SHORTADDRL Short Address, low 0xDF4F IOCFG0 I/O Configuration 0 0xDF50 IOCFG1 I/O Configuration 1 0xDF51 IOCFG2 I/O Configuration 2 0xDF52 IOCFG3 I/O Configuration 3 0xDF53 RXFIFOCNT RX FIFO Count 0xDF54 FSMTC1 Finite State Machine Control 0xDF55xDF5F - Reserved 0xDF60 CHVER Chip Version 0xDF61 CHIPID Chip Identification 0xDF62 RFSTATUS RF Status CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 204 of 232 CC2430 Bit Name Reset R/W Function 7:5 - 000 R/W Reserved. Always set to 000 4 PAN_COORDINATOR 0 R/W PAN Coordinator enable. Used for filtering packets with no destination address, as specified in section 7.5.6.2 in 802.15.4 [1] 0 : Device is not a PAN Coordinator 1 : Device is a PAN Coordinator 3 ADR_DECODE 1 R/W Hardware Address decode enable. 0 : Address decoding is disabled 1 : Address decoding is enabled 2:0 CCA_HYST[2:0] 010 R/W CCA Hysteresis in dB, values 0 through 7 dB Table 46: Register MDMCTRL0H (0xDF02) Bit Name Reset R/W Description 7:6 CCA_MODE[1:0] 11 R/W Clear Channel Assessment mode select. 00 : Reserved 01 : CCA=1 when RSSI < CCA_THR-CCA_HYST CCA=0 when RSSI >= CCA_THR 10 : CCA=1 when not receiving a packet 11 : CCA=1 when RSSI < CCA_THR-CCA_HYST and not receiving a packet CCA=0 when RSSI >= CCA_THR or receiving a packet 5 AUTOCRC 1 R/W In packet mode a CRC-16 (ITU-T) is calculated and is transmitted after the last data byte in TX. In RX CRC is calculated and checked for validity. 4 AUTOACK 0 R/W If AUTOACK is set, all packets accepted by address recognition with the acknowledge request flag set and a valid CRC are ack’ed 12 symbol periods after being received. 3:0 PREAMBLE_LENGTH[3:0] 0010 R/W The number of preamble bytes (2 zero-symbols) to be sent in TX mode prior to the SYNCWORD. The reset value of th 0010 is compliant with IEEE 802.15.4, since the 4 zero byte is included in the SYNCWORD. 0000 : 1 leading zero bytes (not recommended) 0001 : 2 leading zero bytes (not recommended) 0010 : 3 leading zero bytes (IEEE 802.15.4 compliant) 0011 : 4 leading zero bytes … 1111 : 16 leading zero bytes Table 47: Register MDMCTRL0L (0xDF03) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 205 of 232 CC2430 Bit Name Reset R/W Description 7 SLOTTED_ACK 0 R/W SLOTTED_ACK defines the timing of automatically transmitted acknowledgment frames. 0 : The acknowledgment frame is transmitted 12 symbol periods after the incoming frame. 1 : The acknowledgment frame is transmitted between 12 and 30 symbol periods after the incoming frame. The timing is defined such that there is an integer number of 20-symbol periods between the received and the transmitted SFDs. This may be used to transmit slotted acknowledgment frames in a beacon enabled network. 6 - 0 R/W Reserved 5 CORR_THR_SFD 1 R/W CORR_THR_SFD defines the level at which the CORR_THR correlation threshold is used to filter out received frames. 0 : Same filtering as CC2420, should be combined with a CORR_THR of 0x14 1 : More extensive filtering is performed, which will result in less false frame detections e.g. caused by noise. 4:0 CORR_THR[4:0] 0x10 R/W Demodulator correlator threshold value, required before SFD search. Table 48: Register MDMCTRL1H (0xDF04) Bit Name Reset R/W Description 7:6 - 00 R0 Reserved, read as 0. 5 DEMOD_AVG_MODE 0 R/W DC average filter behavior. 0 : Lock DC level to be removed after preamble match 1 : Continuously update DC average level. 4 MODULATION_MODE 0 R/W Set one of two RF modulation modes for RX / TX 0 : IEEE 802.15.4 compliant mode 1 : Reversed phase, non-IEEE compliant (could be used to set up a system which will not receive 802.15.4 packets) 3:2 TX_MODE[1:0] 00 R/W Set test modes for TX 00 : Normal operation, transmit TXFIFO 01 : Serial mode, use transmit data on serial interface, infinite transmission. 10 : TXFIFO looping ignore underflow in TXFIFO and read cyclic, infinite transmission. 11 : Send random data from CRC, infinite transmission. 1:0 RX_MODE[1:0] 00 R/W Set test mode of RX 00 : Normal operation, use RXFIFO 01 : Receive serial mode, output received data on pins. Infinite RX. 10 : RXFIFO looping ignore overflow in RXFIFO and write cyclic, infinite reception. 11 : Reserved Table 49: Register MDMCTRL1L (0xDF05) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 206 of 232 CC2430 Bit Name Reset R/W Description 7:0 CCA_THR[7:0] 0xE0 R/W Clear Channel Assessment threshold value, signed number in 2’s complement for comparison with the RSSI. The unit is 1 dB, offset is TBD [depends on the absolute gain of the RX chain, including external components and should be measured]. The CCA signal goes high when the received signal is below this value. The reset value is in the range of -70 dBm. Table 50: Register RSSIH (0xDF06) Bit Name Reset R/W Description 7:0 RSSI_VAL[7:0] 0x00 R RSSI estimate on a logarithmic scale, signed numbern 2’s complement. Unit is 1 dB, offset is TBD [depends on the absolute gain of the RX chain, including external components, and should be measured]. The RSSI value is averaged over 8 symbol periods. Table 51: Register RSSIL (0xDF07) Bit Name Reset R/W Description 7:0 SYNCWORD[15:8] 0xA7 R/W Synchronization word. The SYNCWORD is processed from the least significant nibble (F at reset) to the most significant nibble (A at reset). SYNCWORD is used both during modulation (where 0xF’s are replaced with 0x0’s) and during demodulation (where 0xF’s are not required for frame synchronization). In reception an implicit zero is required before the first symbol required by SYNCWORD. The reset value is compliant with IEEE 802.15.4. Table 52: Register SYNCWORDH (0xDF08) Bit Name Reset R/W Description 7:0 SYNCWORD[7:0] 0x0F R/W Synchronization word. The SYNCWORD is processed from the least significant nibble (F at reset) to the most significant nibble (A at reset). SYNCWORD is used both during modulation (where 0xF’s are replaced with 0x0’s) and during demodulation (where 0xF’s are not required for frame synchronization). In reception an implicit zero is required before the first symbol required by SYNCWORD. The reset value is compliant with IEEE 802.15.4. Table 53: Register SYNCWORDL (0xDF09) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 207 of 232 CC2430 Bit Name Reset R/W Description 7:6 TXMIXBUF_CUR[1:0] 10 R/W TX mixer buffer bias current. 00 : 690 uA 01 : 980 uA 10 : 1.16 mA (nominal) 11 : 1.44 mA 5 TX_TURNAROUND 1 R/W Sets the wait time after STXON before transmission is started. 0 : 8 symbol periods (128 us) 1 : 12 symbol periods (192 us) 4:3 TXMIX_CAP_ARRAY[1:0] 0 R/W Selects varactor array settings in the transmit mixers. 2:1 TXMIX_CURRENT[1:0] 0 R/W Transmit mixers current: 00 : 1.72 mA 01 : 1.88 mA 10 : 2.05 mA 11 : 2.21 mA 0 PA_DIFF 1 R/W Power Amplifier (PA) output select. Selects differential or single-ended PA output. 0 : Single-ended output 1 : Differential output Table 54: Register TXCTRLH (0xDF0A) Bit Name Reset R/W Description 7:5 PA_CURRENT[2:0] 011 R/W Current programming of the PA 000 : -3 current adjustment 001 : -2 current adjustment 010 : -1 current adjustment 011 : Nominal setting 100 : +1 current adjustment 101 : +2 current adjustment 110 : +3 current adjustment 111 : +4 current adjustment 4:0 PA_LEVEL[4:0] 0x1F R/W Output PA level. (~0 dBm) Table 55: Register TXCTRLL (0xDF0B) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 208 of 232 CC2430 Bit Name Reset R/W Description 7:6 - 00 R0 Reserved, read as 0. 5:4 RXMIXBUF_CUR[1:0] 01 R/W RX mixer buffer bias current. 00 : 690 uA 01 : 980 uA (nominal) 10 : 1.16 mA 11 : 1.44 mA 3:2 HIGH_LNA_GAIN[1:0] 0 R/W Controls current in the LNA gain compensation branch in AGC High gain mode. 00 : Compensation disabled 01 : 100 µA compensation current 10 : 300 µA compensation current (Nominal) 11 : 1000 µA compensation current 1:0 MED_LNA_GAIN[1:0] 10 R/W Controls current in the LNA gain compensation branch in AGC Med gain mode. Table 56: Register RXCTRL0H (0xDF0C) Bit Name Reset R/W Description 7:6 LOW_LNA_GAIN[1:0] 11 R/W Controls current in the LNA gain compensation branch in AGC Low gain mode 5:4 HIGH_LNA_CURRENT[1:0] 10 R/W Controls main current in the LNA in AGC High gain mode 00 : 240 µA LNA current (x2) 01 : 480 µA LNA current (x2) 10 : 640 µA LNA current (x2) 11 : 1280 µA LNA current (x2) 3:2 MED_LNA_CURRENT[1:0] 01 R/W Controls main current in the LNA in AGC Med gain mode 1:0 LOW_LNA_CURRENT[1:0] 01 R/W Controls main current in the LNA in AGC Low gain mode Table 57: Register RXCTRL0L (0xDF0D) Bit Name Reset R/W Description 7:6 - 0 R0 Reserved, read as 0. 5 RXBPF_LOCUR 1 R/W Controls reference bias current to RX band-pass filters: 0 : 4 uA 1 : 3 uA (Default) 4 RXBPF_MIDCUR 0 R/W Controls reference bias current to RX band-pass filters: 0 : 4 uA (Default) 1 : 3.5 uA 3 LOW_LOWGAIN 1 R/W LNA low gain mode setting in AGC low gain mode. 2 MED_LOWGAIN 0 R/W LNA low gain mode setting in AGC medium gain mode. 1 HIGH_HGM 1 R/W RX Mixers high gain mode setting in AGC high gain mode. 0 MED_HGM 0 R/W RX Mixers high gain mode setting in AGC medium gain mode. Table 58: Register RXCTRL1H (0xDF0E) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 209 of 232 CC2430 Bit Name Reset R/W Description 7:6 LNA_CAP_ARRAY[1:0] 01 R/W Selects varactor array setting in the LNA 00 : OFF 01 : 0.1 pF (x2) (Nominal) 10 : 0.2 pF (x2) 11 : 0.3 pF (x2) 5:4 RXMIX_TAIL[1:0] 01 R/W Control of the receiver mixers output current. 00 : 12 µA 01 : 16 µA (Nominal) 10 : 20 µA 11 : 24 µA 3:2 RXMIX_VCM[1:0] 01 R/W Controls VCM level in the mixer feedback loop 00 : 8 µA mixer current 01 : 12 µA mixer current (Nominal) 10 : 16 µA mixer current 11 : 20 µA mixer current 1:0 RXMIX_CURRENT[1:0] 10 R/W Controls current in the mixer 00 : 360 µA mixer current (x2) 01 : 720 µA mixer current (x2) 10 : 900 µA mixer current (x2) (Nominal) 11 : 1260 µA mixer current (x2) Table 59: Register RXCTRL1L (0xDF0F) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 210 of 232 CC2430 Bit Name Reset R/W Description 7:6 LOCK_THR[1:0] 01 R/W Number of consecutive reference clock periods with successful sync windows required to indicate lock: 00 : 64 01 : 128 10 : 256 11 : 512 5 CAL_DONE 0 R Frequency synthesizer calibration done. 0 : Calibration not performed since the last time the FS was turned on. 1 : Calibration performed since the last time the FS was turned on. 4 CAL_RUNNING 0 R Calibration status, '1' when calibration in progress. 3 LOCK_LENGTH 0 R/W LOCK_WINDOW pulse width: 0: 2 CLK_PRE periods 1: 4 CLK_PRE periods 2 LOCK_STATUS 0 R PLL lock status 0 : PLL is not in lock 1 : PLL is in lock 1:0 FREQ[9:8] 01 R/W (2405 MHz) Frequency control word. Used directly in TX, in RX the LO frequency is automatically set 2 MHz below the RF frequency. 2048 + FREQ [9 : 0] ⇔ 4 = (2048 + FREQ [9 : 0]) MHz Frequency division = f RF f LO = (2048 + FREQ [9 : 0] − 2 ⋅ RXEN ) MHz Table 60: Register FSCTRLH (0xDF10) Bit Name Reset R/W Description 7:0 FREQ[7:0] 0x65 R/W Frequency control word. Used directly in TX, in RX the LO frequency is automatically set 2 MHz below the RF frequency. (2405 MHz) 2048 + FREQ [9 : 0] ⇔ 4 = (2048 + FREQ [9 : 0]) MHz Frequency division = f RF f LO = (2048 + FREQ [9 : 0] − 2 ⋅ RXEN ) MHz Table 61: Register FSCTRLL (0xDF11) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 211 of 232 CC2430 Bit Name Reset R/W Description 7:0 CSPT 0x00 R/W CSP T Data register. Contents is decremented each time MAC Timer overflows while CSP program is running. CSP program stops when is about to count to 0. Setting T=0xFF disables decrement function. Table 62: Register CSPT (0xDF16) Bit Name Reset R/W Description 7:0 CSPX 0x00 R/W CSP X Data register. Used by CSP WAITX, RANDXY and conditional instructions Table 63: Register CSPX (0xDF12) Bit Name Reset R/W Description 7:0 CSPY 0x00 R/W CSP Y Data register. Used by CSP INCY, DECY, INCMAXY, RANDXY and conditional instructions Table 64: Register CSPY (0xDF13) Bit Name Reset R/W Description 7:0 CSPZ 0x00 R/W CSP Z Data register. Used by CSP DECZ and conditional instructions Table 65: Register CSPZ (0xDF14) Bit Name Reset R/W Description 7:1 - 0x00 R0 Reserved, read as 0 0 CPU_CTRL 0 R/W CSP CPU control input. Used by CSP conditional instructions. Table 66: Register CSPCTRL (0xDF15) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 212 of 232 CC2430 Bit Name Reset R/W Description 7:5 - 0 R0 Reserved, read as 0. 4 ADI_RADIO_PD 0 R ADI_RADIO_PD is a delayed version of RREG_RADIO_PD. The delay is set by RREG_DELAY[2:0]. When ADI_RADIO_PD is 0, all analog modules in the radio are set in power down. ADI_RADIO_PD is read only. 3 RREG_RADIO_PD 1 R/W Power down of the voltage regulator to the analog part of the radio. This signal is used to enable or disable the analog radio. 0 : Power up 1 : Power down 2:0 RREG_DELAY[2:0] 100 R/W Delay value used in power-on for voltage regulator VREG_DELAY[2:0] Delay Units 000 0 µs 001 31 µs 010 63 µs 011 125 µs 100 250 µs 101 500 µs 110 1000 µs 111 2000 µs Table 67: Register RFPWR (0xDF17) Bit Name Reset R/W Description 7:5 TC_RXCHAIN2RX[2:0] 011 R/W The time in 5 us steps between the time the RX chain is enabled and the demodulator and AGC is enabled. The RX chain is started when the band pass filter has been calibrated (after 6.5 symbol periods). 4:2 TC_SWITCH2TX[2:0] 110 R/W The time in advance the RXTX switch is set high, before enabling TX. Unit is µs. 1:0 TC_PAON2TX[3:2] 10 R/W The time in advance the PA is powered up before enabling TX. Unit is µs. Table 68: Register FSMTCH (0xDF20) Bit Name Reset R/W Description 7:6 TC_PAON2TX[1:0] 10 R/W The time in advance the PA is powered up before enabling TX. Unit is µs. 5:3 TC_TXEND2SWITCH[2:0] 010 R/W The time after the last chip in the packet is sent, and the rxtx switch is disabled. Unit is µs. 2:0 TC_TXEND2PAOFF[2:0] 100 R/W The time after the last chip in the packet is sent, and the PA is set in power-down. Also the time at which the modulator is disabled. Unit is µs. Table 69: Register FSMTCL (0xDF21) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 213 of 232 CC2430 Bit Name Reset R/W Description 7 VGA_RESET_N 1 R/W The VGA_RESET_N signal is used to reset the peak detectors in the VGA in the RX chain. 6 BIAS_PD 1 R/W Reserved, read as 0 5 BALUN_CTRL 1 R/W The BALUN_CTRL signal controls whether the PA should receive its required external biasing (1) or not (0) by controlling the RX/TX output switch. 4 RXTX 1 R/W RXTX signal: controls whether the LO buffers (0) or PA buffers (1) should be used. 3 PRE_PD 1 R/W Powerdown of prescaler. 2 PA_N_PD 1 R/W Powerdown of PA (negative path). 1 PA_P_PD 1 R/W Powerdown of PA (positive path). When PA_N_PD=1 and PA_P_PD=1 the up conversion mixers are in powerdown. 0 DAC_LPF_PD 1 R/W Powerdown of TX DACs. Table 70: Register MANANDH (0xDF22) Bit Name Reset R/W Description 7 - 0 R0 Reserved, read as 0 6 RXBPF_CAL_PD 1 R/W Powerdown control of complex band pass receive filter calibration oscillator. 5 CHP_PD 1 R/W Powerdown control of charge pump. 4 FS_PD 1 R/W Powerdown control of VCO, I/Q generator, LO buffers. 3 ADC_PD 1 R/W Powerdown control of the ADCs. 2 VGA_PD 1 R/W Powerdown control of the VGA. 1 RXBPF_PD 1 R/W Powerdown control of complex band pass receive filter. 0 LNAMIX_PD 1 R/W Powerdown control of LNA, down conversion mixers and front-end bias. Table 71: Register MANANDL (0xDF23) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 214 of 232 CC2430 Bit Name Reset R/W Description 7 VGA_RESET_N 0 R/W The VGA_RESET_N signal is used to reset the peak detectors in the VGA in the RX chain. 6 BIAS_PD 0 R/W Global Bias power down (1) 5 BALUN_CTRL 0 R/W The BALUN_CTRL signal controls whether the PA should receive its required external biasing (1) or not (0) by controlling the RX/TX output switch. 4 RXTX 0 R/W RXTX signal: controls whether the LO buffers (0) or PA buffers (1) should be used. 3 PRE_PD 0 R/W Powerdown of prescaler. 2 PA_N_PD 0 R/W Powerdown of PA (negative path). 1 PA_P_PD 0 R/W Powerdown of PA (positive path). When PA_N_PD=1 and PA_P_PD=1 the up conversion mixers are in powerdown. 0 DAC_LPF_PD 0 R/W Powerdown of TX DACs. Table 72: Register MANORH (0xDF24) Bit Name Reset R/W Description 7 - 0 R0 Reserved, read as 0 6 RXBPF_CAL_PD 0 R/W Powerdown control of complex band pass receive filter calibration oscillator. 5 CHP_PD 0 R/W Powerdown control of charge pump. 4 FS_PD 0 R/W Powerdown control of VCO, I/Q generator, LO buffers. 3 ADC_PD 0 R/W Powerdown control of the ADCs. 2 VGA_PD 0 R/W Powerdown control of the VGA. 1 RXBPF_PD 0 R/W Powerdown control of complex band pass receive filter. 0 LNAMIX_PD 0 R/W Powerdown control of LNA, down conversion mixers and front-end bias. Table 73: Register MANORL (0xDF25) Bit Name Reset R/W Description 7 VGA_GAIN_OE 0 R/W Use the VGA_GAIN value during RX instead of the AGC value. 6:0 VGA_GAIN[6:0] 0x7F R/W When written, VGA manual gain override value; when read, the currently used VGA gain setting. Table 74: Register AGCCTRLH (0xDF26) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 215 of 232 CC2430 Bit Name Reset R/W Description 7:4 - 0 R0 Reserved, read as 0. 3:2 LNAMIX_GAINMODE_O [1:0] 00 R/W LNA / Mixer Gain mode override setting LNAMIX_GAINMODE[1:0] 00 1:0 00 : Gain mode is set by AGC algorithm 01 : Gain mode is always low-gain 10 : Gain mode is always med-gain 11 : Gain mode is always high-gain R Status bit, defining the currently selected gain mode selected by the AGC or overridden by the LNAMIX_GAINMODE_O setting. Table 75: Register AGCCTRLL (0xDF27) Bit Name Reset R/W Description 7:6 - 0 R0 Reserved, read as 0. 5:0 FSM_FFCTRL_STATE[5:0 ] - R Gives the current state of the FIFO and Frame Control (FFCTRL) finite state machine. Table 76: Register FSMSTATE (0xDF39) Bit Name Reset R/W Function 7 ADC_CLOCK_DISABLE 0 R/W ADC Clock Disable 0 : Clock enabled when ADC enabled 1 : Clock disabled, even if ADC is enabled 6:0 ADC_I[6:0] - R Returns the current ADC I-branch value. Table 77: Register ADCTSTH (0xDF3A) Bit Name Reset R/W Function 7:6 - 0 R0 Reserved, read as 0. 6:0 ADC_Q[6:0] - R Returns the current ADC Q-branch value. Table 78: Register ADCTSTL (0xDF3B) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 216 of 232 CC2430 Bit Name Reset R/W Description 7 - 0 R0 Reserved, read as 0. 6:4 DAC_SRC[2:0] 000 R/W The TX DACs data source is selected by DAC_SRC according to: 000 : Normal operation (from modulator). 001 : The DAC_I_O and DAC_Q_O override values below.010 : From ADC, most significant bits 011 : I/Q after digital down mix and channel filtering. 100 : Full-spectrum White Noise (from CRC) 101 : From ADC, least significant bits 110 : RSSI / Cordic Magnitude Output 111 : HSSD module. This feature will often require the DACs to be manually turned on in MANOVR and PAMTST.ATESTMOD_MODE=4. 3:0 DAC_I_O[5:2] 000 R/W I-branch DAC override value. Table 79: Register DACTSTH (0xDF3C) Bit Name Reset R/W Description 7:6 DAC_I_O[1:0] 00 R/W I-branch DAC override value. 5:0 DAC_Q_O[5:0] 0x00 R/W Q-branch DAC override value. Table 80: Register DACTSTL (0xDF3D) Bit Name Reset R/W Description 7:0 IEEE_ADDR0[7:0] 0x00 R/W IEEE ADDR byte 0 Table 81: Register IEEE_ADDR0 (0xDF43) Bit Name Reset R/W Description 7:0 IEEE_ADDR1[7:0] 0x00 R/W IEEE ADDR byte 1 Table 82: Register IEEE_ADDR1 (0xDF44) Bit Name Reset R/W Description 7:0 IEEE_ADDR2[7:0] 0x00 R/W IEEE ADDR byte 2 Table 83: Register IEEE_ADDR2 (0xDF45) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 217 of 232 CC2430 Bit Name Reset R/W Description 7:0 IEEE_ADDR3[7:0] 0x00 R/W IEEE ADDR byte 3 Table 84: Register IEEE_ADDR3 (0xDF46) Bit Name Reset R/W Description 7:0 IEEE_ADDR4[7:0] 0x00 R/W IEEE ADDR byte 4 Table 85: Register IEEE_ADDR4 (0xDF47) Bit Name Reset R/W Description 7:0 IEEE_ADDR5[7:0] 0x00 R/W IEEE ADDR byte 5 Table 86: Register IEEE_ADDR5 (0xDF48) Bit Name Reset R/W Description 7:0 IEEE_ADDR6[7:0] 0x00 R/W IEEE ADDR byte 6 Table 87: Register IEEE_ADDR6 (0xDF49) Bit Name Reset R/W Description 7:0 IEEE_ADDR7[7:0] 0x00 R/W IEEE ADDR byte 7 Table 88: Register IEEE_ADDR7 (0xDF4A) Bit Name Reset R/W Description 7:0 PANIDH[7:0] 0x00 R/W PAN identifier high byte Table 89: Register PANIDH (0xDF4B) Bit Name Reset R/W Description 7:0 PANIDL[7:0] 0x00 R/W PAN identifier low byte Table 90: Register PANIDL (0xDF4C) Bit Name Reset R/W Description 7:0 SHORTADDRH[7:0] 0x00 R/W Short address high byte Table 91: Register SHORTADDRH (0xDF4D) Bit Name Reset R/W Description 7:0 SHORTADDRL[7:0] 0x00 R/W Short address low byte Table 92: Register SHORTADDRL (0xDF4E) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 218 of 232 CC2430 Bit Name Reset R/W Description 7 - 0 R0 Reserved, read as 0. 6:0 FIFOP_THR[6:0] 0x40 R/W Sets the number of bytes in RXFIFO that is required for FIFOP to go high. Table 93: Register IOCFG0 (0xDF4F) Bit Name Reset R/W Description 7 - 0 R0 Reserved, read as 0. 6 OE_CCA 0 R/W CCA is output on P1.7 when this bit is 1 5 IO_CCA_POL 0 R/W Polarity of the IO_CCA signal. This bit is xor’ed with the internal CCA signal. 4:0 IO_CCA_SEL 000000 R/W Multiplexer setting for the CCA signal. Must be 0x00 in order to output the CCA status. Table 94: Register IOCFG1 (0xDF50) Bit Name Reset R/W Description 7 - 0 R0 Reserved, read as 0. 6 OE_SFD 0 R/W SFD is output on P1.6 when this bit is 1 5 IO_SFD_POL 0 R/W Polarity of the IO_SFD signal. This bit is xor’ed with the internal SFD signal. 4:0 IO_SFD_SEL 000000 R/W Multiplexer setting for the SFD signal. Must be 0x00 in order to output the SFD status Table 95: Register IOCFG2 (0xDF51) Bit Name Reset R/W Description 7:6 - 00 R0 Reserved, read as 0. 5:4 HSSD_SRC 00 R/W Configures the HSSD interface. Only the first 4 settings (compared to CC2420) are used. 00 : Off 01 : Output AGC status (gain setting/peak detector status/accumulator value) 10 : Output ADC I and Q values 11 : Output I/Q after digital down mix and channel filtering 3 OE_FIFOP 0 R/W FIFOP is output on P1.5 when this bit is 1. 2 IO_FIFOP_POL 0 R/W Polarity of the IO_FIFOP signal. This bit is xor’ed with the internal FIFOP signal 1 OE_FIFO 0 R/W FIFO is output on P1.4 when this bit is 1 0 IO_FIFO_POL 0 R/W Polarity of the IO_FIFO signal. This bit is xor’ed with the internal FIFO signal Table 96: Register IOCFG3 (0xDF52) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 219 of 232 CC2430 Bit Name Reset R/W Description 7:0 RXFIFOCNT[7:0] 0x00 R Number of bytes in the RX FIFO Table 97: Register RXFIFOCNT (0xDF53) Bit Name Reset R/W Description 7:6 - 00 R0 Reserved, read as 0. 5 ABORTRX_ON_SRXON 1 R/W Abort RX when SRXON strobe is issued 0 : Packet reception is not aborted when SRXON is issued 1 : Packet reception is aborted when SRXON is issued 4 RX_INTERRUPTED 0 R RX interrupted by strobe command This bit is cleared when the next strobe is detected. 0 : Strobe command detected 1 : Packet reception was interrupted by strobe command 3 AUTO_TX2RX_OFF 0 R/W Automatically go to RX after TX. Applies to both data packets and ACK packets. 0 : Automatic RX after TX 1 : No automatic RX after TX 2 RX2RX_TIME_OFF 0 R/W Turns off the 12 symbol timeout after packet reception has ended. Active high. 1 PENDING_OR 0 R/W This bit is OR’ed with the pending bit from FFCTRL before it goes to the modulator. 0 ACCEPT_ACKPKT. 1 R/W Accept ACK packet control. 0 : Reject all ACK packets 1 : ACK packets are received Table 98: Register FSMTC1 (0xDF54) Bit Name Reset R/W Description 7:0 VERSION[7:0] 0x01 R Chip revision number Table 99: Register CHVER (0xDF60) Bit Name Reset R/W Description 7:0 CHIPID[7:0] 0x85 R Chip identification number. Always read as 0x85. Table 100: Register CHIPID (0xDF61) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 220 of 232 CC2430 Bit Name Reset R/W Description 7:5 - 000 R0 Reserved, read as 0. 4 TX_ACTIVE 0 R TX active indicates transmission in progress 0 : TX inactive 1 : TX active 3 FIFO 0 R RXFIFO data available 0 : No data available in RXFIFO 1 : One or more bytes available in RXFIFO 2 FIFOP 0 R RXFIFO threshold flag 0 : Number of bytes in RXFIFO is less or equal threshold set by IOCFG0.FIFOP_THR 1 : Number of bytes in RXFIFO is above threshold set by IOCFG0.FIFOP_THR 1 SFD 0 R Start of Frame Delimiter status 0 : SFD inactive 1 : SFD active 0 CCA R Clear Channel Assessment Table 101: Register RFSTATUS (0xDF62) CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 221 of 232 CC2430 15 Radio Test Output Signals For debug purposes, the RFSTATUS.SFD, RFSTATUS.FIFO, RFSTATUS.FIFOP and RFSTATUS.CCA bits can be output onto P1.7 – P1.4 I/O pins to monitor the status of these signals. These test output signals are selected by the IOCFG0, IOCFG1 and IOCFG2 registers. • P1.4 – FIFO • P1.5 – FIFOP • P1.6 – SFD • P1.7 - CCA The debug signals are output to the following I/O pins: CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 222 of 232 CC2430 16 Voltage Regulators The CC2430 includes two low drop-out voltage regulators. These are used to provide a 1.8 V power supply to the CC2430 analog and digital power supplies. Note: The voltage regulators should not be used to provide power to external circuits because of limited power sourcing capability and also due to noise considerations. The analog voltage regulator input pin AVDD_RREG is to be connected to the unregulated 2.0 to 3.6 V power supply. The regulated 1.8 V voltage output to the analog parts, is available on the RREG_OUT pin. The digital regulator input pin AVDD_DREG is also to be connected to the unregulated 2.0 to 3.6 V power supply. The output of the digital regulator is connected internally within the CC2430 to the digital power supply. The voltage regulators require external components as described in section 11 on page 29. 17 Evaluation Software Chipcon provides users of CC2430 with a software program, SmartRF® Studio, which may be used for radio performance 16.1 Voltage Regulators Power-on The analog voltage regulator is disabled by setting the RF register bit RFPWR.RREG_RADIO_PD to 1. When the analog voltage regulator is powered-on by clearing the RFPWR.RREG_RADIO_PD bit, there will be a delay before the regulator is enabled. This delay is programmable through the RFPWR RF register. The interrupt flag RFIF.IRQ_RREG_PD is set when the delay has expired. The delayed power-on can also be observed by polling the RF register bit RFPWR.ADI_RADIO_PD. The digital voltage regulator is disabled when the CC2430 is placed in power modes PM2 or PM3 (see section 13.10). When the voltage regulators are disabled, register and RAM contents will be retained while the unregulated 2.0 to 3.6 power supply is present. and functionality evaluation. SmartRF® Studio runs on Microsoft Windows 95/98 and Microsoft Windows NT/XP/2000. SmartRF® Studio can be downloaded from Chipcon’s web page: http://www.chipcon.com CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 223 of 232 CC2430 18 Register overview DPH0 (0x83) – Data Pointer 0 High Byte............................................................................... 41 DPL0 (0x82) – Data Pointer 0 Low Byte ................................................................................ 41 DPH1 (0x85) – Data Pointer 1 High Byte............................................................................... 41 DPL1 (0x84) – Data Pointer 1 Low Byte ................................................................................ 41 DPS (0x92) – Data Pointer Select ........................................................................................... 41 MPAGE (0x93) – Memory Page Select .................................................................................. 42 PSW (0xD0) – Program Status Word...................................................................................... 47 ACC (0xE0) – Accumulator.................................................................................................... 47 B (0xF0) – B Register ............................................................................................................. 47 SP (0x81) – Stack Pointer ....................................................................................................... 48 IEN0 (0xA8) – Interrupt Enable 0........................................................................................... 54 IEN1 (0xB8) – Interrupt Enable 1 ........................................................................................... 55 IEN2 (0x9A) – Interrupt Enable 2........................................................................................... 56 TCON (0x88) – Interrupt Flags............................................................................................... 57 S0CON (0x98) – Interrupt Flags 2 .......................................................................................... 58 S1CON (0x9B) – Interrupt Flags 3 ......................................................................................... 58 IRCON (0xC0) – Interrupt Flags 4.......................................................................................... 59 IRCON2 (0xE8) – Interrupt Flags 5........................................................................................ 60 IP1 (0xB9) – Interrupt Priority 1 ............................................................................................. 61 IP0 (0xA9) – Interrupt Priority 0............................................................................................. 61 MEMCTR (0xC7) – Memory Arbiter Control CC2430-F128 ............................................... 67 MEMCTR (0xC7) – Memory Arbiter Control CC2430-F32/64 ............................................ 68 P0 (0x80) – Port 0 ................................................................................................................... 73 P1 (0x90) – Port 1 ................................................................................................................... 73 P2 (0xA0) – Port 2................................................................................................................... 73 PERCFG (0xF1) – Peripheral Control .................................................................................... 74 ADCCFG (0xF2) – ADC Input Configuration........................................................................ 74 P0SEL (0xF3) – Port 0 Function Select .................................................................................. 75 P1SEL (0xF4) – Port 1 Function Select .................................................................................. 76 P2SEL (0xF5) – Port 2 Function Select .................................................................................. 77 P0DIR (0xFD) – Port 0 Direction ........................................................................................... 78 P1DIR (0xFE) – Port 1 Direction............................................................................................ 79 P2DIR (0xFF) – Port 2 Direction ............................................................................................ 80 P0INP (0x8F) – Port 0 Input Mode ......................................................................................... 81 P1INP (0xF6) – Port 1 Input Mode ......................................................................................... 82 P2INP (0xF7) – Port 2 Input Mode ......................................................................................... 83 P0IFG (0x89) – Port 0 Interrupt Status Flag ........................................................................... 83 P1IFG (0x8A) – Port 1 Interrupt Status Flag .......................................................................... 83 P2IFG (0x8B) – Port 2 Interrupt Status Flag........................................................................... 84 PICTL (0x8C) – Port Interrupt Control................................................................................... 84 P1IEN (0x8D) – Port 1 Interrupt Mask ................................................................................... 85 DMAARM (0xD6) – DMA Channel Arm .............................................................................. 95 DMAREQ (0xD7) – DMA Channel Start Request and Status................................................ 96 DMA0CFGH (0xD5) – DMA Channel 0 Configuration Address High Byte ......................... 96 DMA0CFGL (0xD4) – DMA Channel 0 Configuration Address Low Byte .......................... 96 DMA1CFGH (0xD3) – DMA Channel 1-4 Configuration Address High Byte...................... 97 DMA1CFGL (0xD2) – DMA Channel 1-4 Configuration Address Low Byte....................... 97 DMAIRQ (0xD1) – DMA Interrupt Flag ................................................................................ 97 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 224 of 232 CC2430 T1CNTH (0xE3) – Timer 1 Counter High ............................................................................ 106 T1CNTL (0xE2) – Timer 1 Counter Low ............................................................................. 106 T1CTL (0xE4) – Timer 1 Control and Status........................................................................ 106 T1CCTL0 (0xE5) – Timer 1 Channel 0 Capture/Compare Control...................................... 107 T1CC0H (0xDB) – Timer 1 Channel 0 Capture/Compare Value High ................................ 107 T1CC0L (0xDA) – Timer 1 Channel 0 Capture/Compare Value Low ................................. 107 T1CCTL1 (0xE6) – Timer 1 Channel 1 Capture/Compare Control...................................... 108 T1CC1H (0xDD) – Timer 1 Channel 1 Capture/Compare Value High ................................ 108 T1CC1L (0xDC) – Timer 1 Channel 1 Capture/Compare Value Low ................................. 108 T1CCTL2 (0xE7) – Timer 1 Channel 2 Capture/Compare Control...................................... 109 T1CC2H (0xDF) – Timer 1 Channel 2 Capture/Compare Value High................................. 109 T1CC2L (0xDE) – Timer 1 Channel 2 Capture/Compare Value Low.................................. 109 T2CNF (0xC3) – Timer 2 Configuration .............................................................................. 113 T2THD (0xA7) – Timer 2 Timer Value High Byte .............................................................. 114 T2TLD (0xA6) – Timer 2 Timer Value Low Byte ............................................................... 114 T2CMP (0x94) – Timer 2 Compare Value............................................................................ 114 T2OF2 (0xA3) – Timer 2 Overflow Count 2 ........................................................................ 114 T2OF1 (0xA2) – Timer 2 Overflow Count 1 ........................................................................ 115 T2OF0 (0xA1) – Timer 2 Overflow Count 0 ........................................................................ 115 T2CAPHPH (0xA5) – Timer 2 Period High Byte................................................................. 115 T2CAPLPL (0xA4) – Timer 2 Period Low Byte .................................................................. 115 T2PEROF2 (0x9E) – Timer 2 Overflow Capture/Compare 2............................................... 116 T2PEROF1 (0x9D) – Timer 2 Overflow Capture/Compare 1 .............................................. 116 T2PEROF0 (0x9C) – Timer 2 Overflow Capture/Compare 0 .............................................. 116 ST2 (0x97) – Sleep Timer 2 .................................................................................................. 117 ST1 (0x96) – Sleep Timer 1 .................................................................................................. 117 ST0 (0x95) – Sleep Timer 0 .................................................................................................. 117 T3CNT (0xCA) – Timer 3 Counter....................................................................................... 120 T3CTL (0xCB) – Timer 3 Control ........................................................................................ 120 T3CCTL0 (0xCC) – Timer 3 Channel 0 Capture/Compare Control..................................... 121 T3CC0 (0xCD) – Timer 3 Channel 0 Capture/Compare Value ............................................ 121 T3CCTL1 (0xCE) – Timer 3 Channel 1 Capture/Compare Control ..................................... 122 T3CC1 (0xCF) – Timer 3 Channel 1 Capture/Compare Value............................................. 122 T4CNT (0xEA) – Timer 4 Counter ....................................................................................... 122 T4CTL (0xEB) – Timer 4 Control ........................................................................................ 123 T4CCTL0 (0xEC) – Timer 4 Channel 0 Capture/Compare Control ..................................... 124 T4CC0 (0xED) – Timer 4 Channel 0 Capture/Compare Value ............................................ 124 T4CCTL1 (0xEE) – Timer 4 Channel 1 Capture/Compare Control ..................................... 125 T4CC1 (0xEF) – Timer 4 Channel 1 Capture/Compare Value ............................................. 125 TIMIF (0xD8) – Timers 1/3/4 Interrupt Mask/Flag .............................................................. 126 ADCL (0xBA) – ADC Data Low.......................................................................................... 129 ADCH (0xBB) – ADC Data High......................................................................................... 130 ADCCON1 (0xB4) – ADC Control 1 ................................................................................... 130 ADCCON2 (0xB5) – ADC Control 2 ................................................................................... 131 ADCCON3 (0xB6) – ADC Control 3 ................................................................................... 132 RNDL (0xBC) – Random Number Generator Data Low Byte ............................................. 134 RNDH (0xBD) – Random Number Generator Data High Byte ............................................ 134 ENCCS (0xB3) – Encryption Control and Status ................................................................. 139 ENCDI (0xB1) – Encryption Input Data............................................................................... 139 ENCDO (0xB2) – Encryption Output Data........................................................................... 139 PCON (0x87) – Power Mode Control ................................................................................... 142 SLEEP (0xBE) – Sleep Mode Control .................................................................................. 142 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 225 of 232 CC2430 CLKCON (0xC6) – Clock Control........................................................................................ 143 WDCTL (0xC9) – Watchdog Timer Control ........................................................................ 146 U0CSR (0x86) – USART 0 Control and Status .................................................................... 151 U0UCR (0xC4) – USART 0 UART Control ........................................................................ 152 U0GCR (0xC5) – USART 0 Generic Control....................................................................... 153 U0DBUF (0xC1) – USART 0 Receive/Transmit Data Buffer.............................................. 153 U0BAUD (0xC2) – USART 0 Baud Rate Control................................................................ 153 U1CSR (0xF8) – USART 1 Control and Status .................................................................... 154 U1UCR (0xFB) – USART 1 UART Control ........................................................................ 155 U1GCR (0xFC) – USART 1 Generic Control....................................................................... 156 U1DBUF (0xF9) – USART 1 Receive/Transmit Data Buffer .............................................. 156 U1BAUD (0xFA) – USART 1 Baud Rate Control ............................................................... 156 FCTL (0xAE) – Flash Control .............................................................................................. 162 FWDATA (0xAF) – Flash Write Data .................................................................................. 162 FADDRH (0xAD) – Flash Address High Byte ..................................................................... 162 FADDRL (0xAC) – Flash Address Low Byte ...................................................................... 162 FWT (0xAB) – Flash Write Timing ...................................................................................... 163 RFIF (0xE9) – RF Interrupt Flags ......................................................................................... 168 RFIM (0x91) – RF Interrupt Mask........................................................................................ 169 RFD (0xD9) – RF Data ......................................................................................................... 170 RFST (0xE1) – RF CSMA-CA / Strobe Processor ............................................................... 190 CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 226 of 232 CC2430 19 Package Description (QLP 48) All dimensions are in millimeters, angles in degrees. NOTE: The CC2430 is available in RoHS lead-free package only. Compliant with JEDEC MS-020. Figure 59: Package dimensions drawing Quad Leadless Package (QLP) QLP 48 Min Max D D1 E E1 6.9 6.65 6.9 6.65 7.0 6.75 7.0 6.75 7.1 6.85 7.1 6.85 e b L D2 E2 0.18 0.3 5.05 5.05 0.4 5.10 5.10 0.5 5.15 5.15 0.5 0.30 The overall package height is 0.85 +/- 0.05 All dimensions in mm Table 102: Package dimensions CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 227 of 232 CC2430 19.1 Recommended PCB layout for package (QLP 48) Figure 60: Recommended PCB layout for QLP 48 package Note: The figure is an illustration only and not to scale. There are nine 14 mil diameter via holes distributed symmetrically in the ground pad under the package. See also the CC2430 EM reference design. 19.2 Package thermal properties Thermal resistance Air velocity [m/s] 0 Rth,j-a [K/W] 25.6 Table 103: Thermal properties of QLP 48 package 19.3 Soldering information The recommendations for lead-free solder reflow in IPC/JEDEC J-STD-020C should be followed. 19.4 Plastic tube specification Tube Specification Package Tube Width Tube Height Tube Length Units per Tube QLP 48 8.5mm ± 0.2mm 2.2mm +0.2/–0.1mm 315mm ± 1.25mm 43 Table 104: Plastic tube specification CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 228 of 232 CC2430 19.5 Carrier tape and reel specification Carrier tape and reel is in accordance with EIA Specification 481. Tape and Reel Specification Package Tape Width Component Pitch Hole Pitch Reel Diameter Units per Reel QLP 48 16mm 12mm 4mm 13 inches 2500 Table 105: Carrier tape and reel specification 20 Ordering Information Ordering part number Ti-Part Description MOQ Chipcon Part CC2430F-128RTC CC2430-RTB1-F128 CC2430, QLP48 package, RoHS compliant Pb-free assembly, tubes with 43 pcs per tube, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver. CC2430F-128RTCR CC2430-RTR1-F128 CC2430, QLP48 package, RoHS compliant Pb-free assembly, T&R with 2500 pcs per reel, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver. CC2430F-128ZRTC CC2430-RTB1-F128Z CC2430, QLP48 package, RoHS compliant Pb-free assembly, tubes with 43 pcs per tube, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver, Including licence fee. CC2430F-128ZRTCR CC2430-RTR1-F128Z CC2430, QLP48 package, RoHS compliant Pb-free assembly, T&R with 2500 pcs per reel, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver, Including licence fee. CC2430F-64RTC CC2430-RTB1-F64 CC2430, QLP48 package, RoHS compliant Pb-free assembly, tubes with 43 pcs per tube, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver. CC2430F-64RTCR CC2430-RTR1-F64 CC2430, QLP48 package, RoHS compliant Pb-free assembly, T&R with 2500 pcs per reel, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver. CC2430F64ZRTC CC2430-RTB1-F64Z CC2430, QLP48 package, RoHS compliant Pb-free assembly, tubes with 43 pcs per tube, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver, Including licence fee. CC2430F-64ZRTCR CC2430-RTR1-F64Z CC2430, QLP48 package, RoHS compliant Pb-free assembly, T&R with 2500 pcs per reel, 64 Kbytes in-system programmable flash memory, System-on-chip RF transceiver, Including licence fee. 2,500 CC2430F-32RTC CC2430-RTB1-F32 CC2430, QLP48 package, RoHS compliant Pb-free assembly, tubes with 43 pcs per tube, 32 Kbytes in-system programmable flash memory, System-on-chip RF transceiver. 43 CC2430F-32RTCR CC2430-RTR1-F32 CC2430, QLP48 package, RoHS compliant Pb-free assembly, T&R with 2500 pcs per reel, 32 Kbytes in-system programmable flash memory, System-on-chip RF transceiver. 2,500 CC2430F-32ZRTC CC2430-RTB1-F32Z CC2430, QLP48 package, RoHS compliant Pb-free assembly, tubes with 43 pcs per tube, 32 Kbytes in-system programmable flash memory, System-on-chip RF transceiver, Including licence fee. 43 CC2430F-32ZRTCR CC2430-RTR1-F32Z CC2430, QLP48 package, RoHS compliant Pb-free assembly, T&R with 2500 pcs per reel, 32 Kbytes in-system CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 229 of 232 43 2,500 43 2,500 43 2,500 43 2,500 CC2430 programmable flash memory, System-on-chip RF transceiver, Including licence fee. CC2430DK CC2430DK CC2430 ZigBee DK Development kit. 1 CC2430ZDK Pro CC2430ZDK Pro CC2430 ZigBee DK Development kit including support and training 1 MOQ = Minimum Order Quantity T&R = tape and reel Table 106: Ordering Information 21 General Information 21.1 Document History Revision Date Description/Changes Updated ADC characteristics (Table 14). Updated DMAREQ, DMAARM and changed section 13.2 first paragraph, section 13.2.4 and Figure 17 Registers UxBUF renamed as UxDBUF. EAL renamed as EA. Added code protection and encryption disclaimers. Clarified flash write description Updated DC characteristics (Table 20) Added information about clearing PxIFG in section 13.1.2 Removed T2CON Updated Table 45 Changed formatting of Table 25 STXCALN/ISTXCALN are intended for test only Modified Figure 37 Updated MDMCTRL0L.PREAMBLE_LENGTH Clarified use of ADC conversions triggered by ADCCON3 Clarified RNDL/RNDH descriptions, renamed Random Generator to Random Number Generator Expanded description and changed reset value for SLEEP.OSC_PD Corrected P0/P1/P2 reset values Changed reference to SXOSCON to CLKCON Changed RFSTATUS.SFD description Corrected references to Figure 42 and Figure 43 Corrected descriptions in FSMTCH/FSMTCL Corrected numbers in Table 32 Various clarifications in Timers, ADC and Power Management Changed typical start-up time for 32 MHz crystal oscillator Corrected T1CCTL1.CMP and T1CCTL2.CMP Updated address information Changed Random Number Generator seeding; modified ADCCON1.RCTRL and section 13.8.2.2 Changed descriptions for T2PEROF2, T2PEROF1 and T2PEROF0 Changed Figure 15 and section 12.3.2; unified CODE space uses memory banking Added CLKCON.CLKSPD bit, and altered descriptions in CLKCON Corrected RSSIL description Updated ordering information Added SSN description section 13.13.3 and updated Table 16 and Figure 2 Preliminary status updated 1.03 1.02 2005-10-03 Added ADC external trigger (section 13.1.5 and 13.7.2). Updated sensitivity. Corrected Application circuit 1.01 2005-09-15 Updated Table 103, Units per reel 1.0 2005-09-12 First release, preliminary Table 107: Document History CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 230 of 232 CC2430 21.2 Product Status Definitions Data Sheet Identification Product Status Definition Advance Information Planned or Under Development This data sheet contains the design specifications for product development. Specifications may change in any manner without notice. Preliminary Engineering Samples and Pre-Production Prototypes This data sheet contains preliminary data, and supplementary data will be published at a later date. Chipcon reserves the right to make changes at any time without notice in order to improve design and supply the best possible product. The product is not yet fully qualified at this point. No Identification Noted Full Production This data sheet contains the final specifications. Chipcon reserves the right to make changes at any time without notice in order to improve design and supply the best possible product. Obsolete Not In Production This data sheet contains specifications on a product that has been discontinued by Chipcon. The data sheet is printed for reference information only. Table 108: Product Status Definitions CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 231 of 232 CC2430 21.3 Disclaimer Chipcon AS believes the information contained herein is correct and accurate at the time of this printing. However, Chipcon AS reserves the right to make changes to this product without notice. Chipcon AS does not assume any responsibility for the use of the described product; neither does it convey any license under its patent rights, or the rights of others. The latest updates are available at the Chipcon website or by contacting Chipcon directly. As far as possible, major changes of product specifications and functionality, will be stated in product specific Errata Notes published at the Chipcon website. Customers are encouraged to sign up for the Chipcon Newsletter for the most recent updates on products and support tools. When a product is discontinued this will be done according to Chipcon’s procedure for obsolete products as described in Chipcon’s Quality Manual. This includes informing about last-time-buy options. The Quality Manual can be downloaded from Chipcon’s website. Compliance with regulations is dependent on complete system performance. It is the customer’s responsibility to ensure that the system complies with regulations. The ZigBee Specification includes intellectual property rights of ZigBee Alliance member/promoter companies. Chipcon is a ZigBee Alliance Promoter. Under the ZigBee Alliance terms of use, no part of the Specification may be used by a company in the development of a product for sale without such company becoming a member of the ZigBee Alliance. Therefore, the Figure 8 Wireless Z-Stack™ may only be used for commercial purposes by ZigBee Alliance member companies. If a customer desires to use the Figure 8 Wireless Z-Stack™ or any other third party ZigBee stack together with a product described in this datasheet, the customer is responsible for complying with the applicable ZigBee Alliance policies. See http://www.zigbee.org. This Chipcon product contains Flash memory code protection. However, Chipcon does not guarantee the security of this protection. Chipcon customers using or selling these products with program code do so at their own risk and agree to fully indemnify Chipcon AS for any damages resulting from the use or sale of such products. Chipcon believes that the Flash memory protection used in this product is one of the most secure in the market today when used in the intended manner and under normal conditions. However, there might be methods to breach the code protection feature. Neither Chipcon nor any other semiconductor manufacturer can guarantee the security of their code protection. Code protection does not mean that we are guaranteeing the product as “unbreakable”. This Chipcon product contains hardware AES encryption. Chipcon does not guarantee the security of the key protection or the security of the encryption scheme. Chipcon customers using or selling products with AES do so at their own risk and agree to fully indemnify Chipcon AS for any damages resulting from the use or sale of such products. It is the Chipcon customer's responsibility to ensure that sale or export/import of products including this Chipcon product with AES encryption is sold with the required export/import licenses, if necessary, and does not violate any applicable export/import and/or other trade restrictions. 21.4 Trademarks SmartRF® is a registered trademark of Chipcon AS. SmartRF® is Chipcon's RF technology platform with RF library cells, modules and design expertise. Based on SmartRF® technology Chipcon develops standard component RF circuits as well as full custom ASICs based on customer requirements and this technology. All other trademarks, registered trademarks and product names are the sole property of their respective owners. 21.5 Life Support Policy This Chipcon product is not designed for use in life support appliances, devices, or other systems where malfunction can reasonably be expected to result in significant personal injury to the user, or as a critical component in any life support device or system whose failure to perform can be reasonably expected to cause the failure of the life support device or system, or to affect its safety or effectiveness. Chipcon AS customers using or selling these products for use in such applications do so at their own risk and agree to fully indemnify Chipcon AS for any damages resulting from any improper use or sale. © 2006, Chipcon AS. All rights reserved. CC2430 PRELIMINARY Data Sheet (rev. 1.03) SWRS036A Page 232 of 232 IMPORTANT NOTICE Texas Instruments Incorporated and its subsidiaries (TI) reserve the right to make corrections, modifications, enhancements, improvements, and other changes to its products and services at any time and to discontinue any product or service without notice. Customers should obtain the latest relevant information before placing orders and should verify that such information is current and complete. All products are sold subject to TI’s terms and conditions of sale supplied at the time of order acknowledgment. TI warrants performance of its hardware products to the specifications applicable at the time of sale in accordance with TI’s standard warranty. Testing and other quality control techniques are used to the extent TI deems necessary to support this warranty. Except where mandated by government requirements, testing of all parameters of each product is not necessarily performed. TI assumes no liability for applications assistance or customer product design. Customers are responsible for their products and applications using TI components. To minimize the risks associated with customer products and applications, customers should provide adequate design and operating safeguards. TI does not warrant or represent that any license, either express or implied, is granted under any TI patent right, copyright, mask work right, or other TI intellectual property right relating to any combination, machine, or process in which TI products or services are used. Information published by TI regarding third-party products or services does not constitute a license from TI to use such products or services or a warranty or endorsement thereof. Use of such information may require a license from a third party under the patents or other intellectual property of the third party, or a license from TI under the patents or other intellectual property of TI. Reproduction of information in TI data books or data sheets is permissible only if reproduction is without alteration and is accompanied by all associated warranties, conditions, limitations, and notices. Reproduction of this information with alteration is an unfair and deceptive business practice. TI is not responsible or liable for such altered documentation. Resale of TI products or services with statements different from or beyond the parameters stated by TI for that product or service voids all express and any implied warranties for the associated TI product or service and is an unfair and deceptive business practice. TI is not responsible or liable for any such statements. Following are URLs where you can obtain information on other Texas Instruments products and application solutions: Products Applications Amplifiers amplifier.ti.com Audio www.ti.com/audio Data Converters dataconverter.ti.com Automotive www.ti.com/automotive DSP dsp.ti.com Broadband www.ti.com/broadband Interface interface.ti.com Digital Control www.ti.com/digitalcontrol Logic logic.ti.com Military www.ti.com/military Power Mgmt power.ti.com Optical Networking www.ti.com/opticalnetwork Microcontrollers microcontroller.ti.com Security www.ti.com/security Mailing Address: Telephony www.ti.com/telephony Video & Imaging www.ti.com/video Wireless www.ti.com/wireless Texas Instruments Post Office Box 655303 Dallas, Texas 75265 Copyright 2006, Texas Instruments Incorporated