| /* cc2520.h - IEEE 802.15.4 driver for TI CC2520 */ |
| |
| /* |
| * Copyright (c) 2015 Intel Corporation. |
| * |
| * Copyright (c) 2011, Swedish Institute of Computer Science |
| * All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions are met: |
| * |
| * 1) Redistributions of source code must retain the above copyright notice, |
| * this list of conditions and the following disclaimer. |
| * |
| * 2) Redistributions in binary form must reproduce the above copyright notice, |
| * this list of conditions and the following disclaimer in the documentation |
| * and/or other materials provided with the distribution. |
| * |
| * 3) Neither the name of Intel Corporation nor the names of its contributors |
| * may be used to endorse or promote products derived from this software without |
| * specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE |
| * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE |
| * POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #ifndef __CC2520_CONST_H__ |
| #define __CC2520_CONST_H__ |
| |
| /* |
| * All constants are from the Chipcon cc2520 Data Sheet that at one |
| * point in time could be found at |
| * http://www.chipcon.com/files/cc2520_Data_Sheet_1_4.pdf |
| * |
| * The page numbers below refer to pages in this document. |
| */ |
| |
| /* Page 27. */ |
| enum cc2520_status_byte { |
| CC2520_XOSC16M_STABLE = 7, |
| CC2520_RSSI_VALID = 6, |
| CC2520_EXCEPTION_CHA = 5, |
| CC2520_EXCEPTION_CHB = 4, |
| CC2520_DPU_H = 3, |
| CC2520_DPU_L = 2, |
| CC2520_TX_ACTIVE = 1, |
| CC2520_RX_ACTIVE = 0, |
| }; |
| |
| #define TX_FRM_DONE 0x02 |
| #define RX_FRM_DONE 0x01 |
| #define RX_FRM_ABORTED 0x20 |
| #define RX_FRM_UNDERFLOW 0x20 |
| |
| enum cc2520_radio_status { |
| CC2520_STATUS_FIFO = 7, |
| CC2520_STATUS_FIFOP = 6, |
| CC2520_STATUS_SFD = 5, |
| CC2520_STATUS_CCA = 4, |
| CC2520_STATUS_SAMPLED_CCA = 3, |
| CC2520_STATUS_LOCK_STATUS = 2, |
| CC2520_STATUS_TX_ACTIVE = 1, |
| CC2520_STATUS_RX_ACTIVE = 0, |
| }; |
| |
| /* Page 27. */ |
| enum cc2520_memory_size { |
| CC2520_RAM_SIZE = 640, |
| CC2520_FIFO_SIZE = 128, |
| }; |
| |
| /* Page 29. */ |
| enum cc2520_address { |
| CC2520RAM_TXFIFO = 0x100, |
| CC2520RAM_RXFIFO = 0x180, |
| CC2520RAM_IEEEADDR = 0x3EA, |
| CC2520RAM_PANID = 0x3F2, |
| CC2520RAM_SHORTADDR = 0x3F4, |
| }; |
| |
| /* Pages 112 & 113. */ |
| enum cc2520_excflags0 { |
| CC2520_EXCFLAGS0_RF_IDLE = 0, |
| CC2520_EXCFLAGS0_TX_FRM_DONE, |
| CC2520_EXCFLAGS0_TX_ACK_DONE, |
| CC2520_EXCFLAGS0_TX_UNDERFLOW, |
| CC2520_EXCFLAGS0_TX_OVERFLOW, |
| CC2520_EXCFLAGS0_RX_UNDERFLOW, |
| CC2520_EXCFLAGS0_RX_OVERFLOW, |
| CC2520_EXCFLAGS0_RXENABLE_ZERO, |
| }; |
| |
| enum cc2520_excflags1 { |
| CC2520_EXCFLAGS1_RX_FRM_DONE = 0, |
| CC2520_EXCFLAGS1_RX_FRM_ACCEPTED, |
| CC2520_EXCFLAGS1_SRC_MATCH_DONE, |
| CC2520_EXCFLAGS1_SRC_MATCH_FOUND, |
| CC2520_EXCFLAGS1_FIFOP, |
| CC2520_EXCFLAGS1_SFD, |
| CC2520_EXCFLAGS1_DPU_DONE_L, |
| CC2520_EXCFLAGS1_DPU_DONE_H, |
| }; |
| |
| enum cc2520_excflags2 { |
| CC2520_EXCFLAGS2_MEMADDR_ERROR = 0, |
| CC2520_EXCFLAGS2_USAGE_ERROR, |
| CC2520_EXCFLAGS2_OPERAND_ERROR, |
| CC2520_EXCFLAGS2_SPI_ERROR, |
| CC2520_EXCFLAGS2_RF_NO_LOCK, |
| CC2520_EXCFLAGS2_RX_FRM_ABORTED, |
| CC2520_EXCFLAGS2_RFBUFMOV_TIMEOUT, |
| CC2520_EXCFLAGS2_UNUSED, |
| }; |
| |
| #define CC2520_FSMSTAT1_SAMPLED_CCA 0x08 |
| |
| /* IEEE 802.15.4 defined constants (2.4 GHz logical channels) */ |
| #define MIN_CHANNEL 11 /* 2405 MHz */ |
| #define MAX_CHANNEL 26 /* 2480 MHz */ |
| #define CHANNEL_SPACING 5 /* MHz */ |
| |
| /* FREG definitions (BSET/BCLR supported) */ |
| #define CC2520_FRMFILT0 0x000 |
| #define CC2520_FRMFILT1 0x001 |
| #define CC2520_SRCMATCH 0x002 |
| #define CC2520_SRCSHORTEN0 0x004 |
| #define CC2520_SRCSHORTEN1 0x005 |
| #define CC2520_SRCSHORTEN2 0x006 |
| #define CC2520_SRCEXTEN0 0x008 |
| #define CC2520_SRCEXTEN1 0x009 |
| #define CC2520_SRCEXTEN2 0x00A |
| #define CC2520_FRMCTRL0 0x00C |
| #define CC2520_FRMCTRL1 0x00D |
| #define CC2520_RXENABLE0 0x00E |
| #define CC2520_RXENABLE1 0x00F |
| #define CC2520_EXCFLAG0 0x010 |
| #define CC2520_EXCFLAG1 0x011 |
| #define CC2520_EXCFLAG2 0x012 |
| #define CC2520_EXCMASKA0 0x014 |
| #define CC2520_EXCMASKA1 0x015 |
| #define CC2520_EXCMASKA2 0x016 |
| #define CC2520_EXCMASKB0 0x018 |
| #define CC2520_EXCMASKB1 0x019 |
| #define CC2520_EXCMASKB2 0x01A |
| #define CC2520_EXCBINDX0 0x01C |
| #define CC2520_EXCBINDX1 0x01D |
| #define CC2520_EXCBINDY0 0x01E |
| #define CC2520_EXCBINDY1 0x01F |
| #define CC2520_GPIOCTRL0 0x020 |
| #define CC2520_GPIOCTRL1 0x021 |
| #define CC2520_GPIOCTRL2 0x022 |
| #define CC2520_GPIOCTRL3 0x023 |
| #define CC2520_GPIOCTRL4 0x024 |
| #define CC2520_GPIOCTRL5 0x025 |
| #define CC2520_GPIOPOLARITY 0x026 |
| #define CC2520_GPIOCTRL 0x028 |
| #define CC2520_DPUCON 0x02A |
| #define CC2520_DPUSTAT 0x02C |
| #define CC2520_FREQCTRL 0x02E |
| #define CC2520_FREQTUNE 0x02F |
| #define CC2520_TXPOWER 0x030 |
| #define CC2520_TXCTRL 0x031 |
| #define CC2520_FSMSTAT0 0x032 |
| #define CC2520_FSMSTAT1 0x033 |
| #define CC2520_FIFOPCTRL 0x034 |
| #define CC2520_FSMCTRL 0x035 |
| #define CC2520_CCACTRL0 0x036 |
| #define CC2520_CCACTRL1 0x037 |
| #define CC2520_RSSI 0x038 |
| #define CC2520_RSSISTAT 0x039 |
| #define CC2520_TXFIFO_BUF 0x03A |
| #define CC2520_RXFIRST 0x03C |
| #define CC2520_RXFIFOCNT 0x03E |
| #define CC2520_TXFIFOCNT 0x03F |
| |
| /* SREG definitions (BSET/BCLR unsupported) */ |
| #define CC2520_CHIPID 0x040 |
| #define CC2520_VERSION 0x042 |
| #define CC2520_EXTCLOCK 0x044 |
| #define CC2520_MDMCTRL0 0x046 |
| #define CC2520_MDMCTRL1 0x047 |
| #define CC2520_FREQEST 0x048 |
| #define CC2520_RXCTRL 0x04A |
| #define CC2520_FSCTRL 0x04C |
| #define CC2520_FSCAL0 0x04E |
| #define CC2520_FSCAL1 0x04F |
| #define CC2520_FSCAL2 0x050 |
| #define CC2520_FSCAL3 0x051 |
| #define CC2520_AGCCTRL0 0x052 |
| #define CC2520_AGCCTRL1 0x053 |
| #define CC2520_AGCCTRL2 0x054 |
| #define CC2520_AGCCTRL3 0x055 |
| #define CC2520_ADCTEST0 0x056 |
| #define CC2520_ADCTEST1 0x057 |
| #define CC2520_ADCTEST2 0x058 |
| #define CC2520_MDMTEST0 0x05A |
| #define CC2520_MDMTEST1 0x05B |
| #define CC2520_DACTEST0 0x05C |
| #define CC2520_DACTEST1 0x05D |
| #define CC2520_ATEST 0x05E |
| #define CC2520_DACTEST2 0x05F |
| #define CC2520_PTEST0 0x060 |
| #define CC2520_PTEST1 0x061 |
| #define CC2520_RESERVED 0x062 |
| #define CC2520_DPUBIST 0x07A |
| #define CC2520_ACTBIST 0x07C |
| #define CC2520_RAMBIST 0x07E |
| |
| /* Instruction implementation */ |
| #define CC2520_INS_SNOP 0x00 |
| #define CC2520_INS_IBUFLD 0x02 |
| #define CC2520_INS_SIBUFEX 0x03 |
| #define CC2520_INS_SSAMPLECCA 0x04 |
| #define CC2520_INS_SRES 0x0F |
| #define CC2520_INS_MEMRD 0x10 |
| #define CC2520_INS_MEMWR 0x20 |
| #define CC2520_INS_RXBUF 0x30 |
| #define CC2520_INS_RXBUFCP 0x38 |
| #define CC2520_INS_RXBUFMOV 0x32 |
| #define CC2520_INS_TXBUF 0x3A |
| #define CC2520_INS_TXBUFCP 0x3E |
| #define CC2520_INS_RANDOM 0x3C |
| #define CC2520_INS_SXOSCON 0x40 |
| #define CC2520_INS_STXCAL 0x41 |
| #define CC2520_INS_SRXON 0x42 |
| #define CC2520_INS_STXON 0x43 |
| #define CC2520_INS_STXONCCA 0x44 |
| #define CC2520_INS_SRFOFF 0x45 |
| #define CC2520_INS_SXOSCOFF 0x46 |
| #define CC2520_INS_SFLUSHRX 0x47 |
| #define CC2520_INS_SFLUSHTX 0x48 |
| #define CC2520_INS_SACK 0x49 |
| #define CC2520_INS_SACKPEND 0x4A |
| #define CC2520_INS_SNACK 0x4B |
| #define CC2520_INS_SRXMASKBITSET 0x4C |
| #define CC2520_INS_SRXMASKBITCLR 0x4D |
| #define CC2520_INS_RXMASKAND 0x4E |
| #define CC2520_INS_RXMASKOR 0x4F |
| #define CC2520_INS_MEMCP 0x50 |
| #define CC2520_INS_MEMCPR 0x52 |
| #define CC2520_INS_MEMXCP 0x54 |
| #define CC2520_INS_MEMXWR 0x56 |
| #define CC2520_INS_BCLR 0x58 |
| #define CC2520_INS_BSET 0x59 |
| #define CC2520_INS_CTR 0x60 |
| #define CC2520_INS_CBCMAC 0x64 |
| #define CC2520_INS_UCBCMAC 0x66 |
| #define CC2520_INS_CCM 0x68 |
| #define CC2520_INS_UCCM 0x6A |
| #define CC2520_INS_ECB 0x70 |
| #define CC2520_INS_ECBO 0x72 |
| #define CC2520_INS_ECBX 0x74 |
| #define CC2520_INS_ECBXO 0x76 |
| #define CC2520_INS_INC 0x78 |
| #define CC2520_INS_ABORT 0x7F |
| #define CC2520_INS_REGRD 0x80 |
| #define CC2520_INS_REGWR 0xC0 |
| |
| #endif /* __CC2520_CONST_H__ */ |