269 lines
9.7 KiB
C
269 lines
9.7 KiB
C
/* 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__ */
|