📄 hal_cc2520.h
字号:
#define CC2520_EXC_RX_FRM_ABORTED 21
#define CC2520_EXC_RXBUFMOV_TIMEOUT 22
// Predefined exception channels
#define CC2520_EXC_CH_RX_BV \
(BV(CC2520_EXC_RX_UNDERFLOW) | BV(CC2520_EXC_RX_OVERFLOW) \
| BV(CC2520_EXC_RX_FRM_ABORTED) | BV(CC2520_EXC_RXBUFMOV_TIMEOUT))
#define CC2520_EXC_CH_ERR_BV \
(BV(CC2520_EXC_MEMADDR_ERROR) | BV(CC2520_EXC_USAGE_ERROR) \
| BV(CC2520_EXC_OPERAND_ERROR) | BV(CC2520_EXC_SPI_ERROR))
// CC2520 FSM state defintions
#define CC2520_FSM_IDLE 0
#define CC2520_FSM_FS_RX_CAL 2
#define CC2520_FSM_RX_RESET 3
#define CC2520_FSM_RX_S_CLK 4
#define CC2520_FSM_RX_ON 5
#define CC2520_FSM_RX_W_SFD 6
#define CC2520_FSM_RD_LEN 7
#define CC2520_FSM_RX_RD_FCF0 8
#define CC2520_FSM_RX_RD_FCF1 9
#define CC2520_FSM_RX_RD_SEQ 10
#define CC2520_FSM_RX_PKT 12
#define CC2520_FSM_RX_FINAL 13
#define CC2520_FSM_RXRX_WAIT 14
#define CC2520_FSM_FIFO_RESET 16
#define CC2520_FSM_RX_OVERFLOW 17
#define CC2520_FSM_FS_LB_CAL_WAIT 20
#define CC2520_FSM_LB_RESET 21
#define CC2520_FSM_LB_S_CLK 22
#define CC2520_FSM_LB_PRE 23
#define CC2520_FSM_LB_PKT 24
#define CC2520_FSM_LB_FINAL 25
#define CC2520_FSM_RX_INF 31
#define CC2520_FSM_FS_TX_CAL 32
#define CC2520_FSM_FS_TX_CAL_WAIT 33
#define CC2520_FSM_TX_RESET 34
#define CC2520_FSM_TX_S_CLK 35
#define CC2520_FSM_TX_PRE 36
#define CC2520_FSM_LEN 37
#define CC2520_FSM_PKT 38
#define CC2520_FSM_TX_FINAL 39
#define CC2520_FSM_TXRX_TRANSIT 40
#define CC2520_FSM_PA_SETTLE 41
#define CC2520_FSM_TX_MOD_DOWNRAMP 42
#define CC2520_FSM_FS_ACK_CAL 48
#define CC2520_FSM_TX_ACK_RESET 49
#define CC2520_FSM_TX_ACK_S_CLK 50
#define CC2520_FSM_TX_ACK_PRE 51
#define CC2520_FSM_TX_ACK_LEN 52
#define CC2520_FSM_TX_ACK_PKT 53
#define CC2520_FSM_TX_ACK_FIN_PKT 54
#define CC2520_FSM_TX_ACK_DELAY 55
#define CC2520_FSM_TX_UNDERFLOW 56
#define CC2520_FSM_TX_TURNOFF 57
#define CC2520_FSM_TX_INF 63
// CC2520 FSMSTAT0/1 register bits
#define CC2520_FSMSTAT_FSM_STATE_BV 0x003F
#define CC2520_FSMSTAT_CAL_RUNNING_BV 0x0040
#define CC2520_FSMSTAT_CAL_DONE_BV 0x0080
#define CC2520_FSMSTAT_RX_ACTIVE_BV 0x0100
#define CC2520_FSMSTAT_TX_ACTIVE_BV 0x0200
#define CC2520_FSMSTAT_LOCK_STATUS_BV 0x0400
#define CC2520_FSMSTAT_SAMPLED_CCA_BV 0x0800
#define CC2520_FSMSTAT_CCA_BV 0x1000
#define CC2520_FSMSTAT_SFD_BV 0x2000
#define CC2520_FSMSTAT_FIFOP_BV 0x4000
#define CC2520_FSMSTAT_FIFO_BV 0x8000
// CC2520 status byte
#define CC2520_STB_XOSC_STABLE_BV 0x80
#define CC2520_STB_RSSI_VALID_BV 0x40
#define CC2520_STB_EXC_CHB_BV 0x20
#define CC2520_STB_EXC_CHA_BV 0x10
#define CC2520_STB_DPUH_ACTIVE_BV 0x08
#define CC2520_STB_DPUL_ACTIVE_BV 0x04
#define CC2520_STB_TX_ACTIVE_BV 0x02
#define CC2520_STB_RX_ACTIVE_BV 0x01
// CC2520 GPIO output definitions
#define CC2520_GPIO_EXC_CH_A 0x21
#define CC2520_GPIO_EXC_CH_B 0x22
#define CC2520_GPIO_EXC_CH_INVA 0x23
#define CC2520_GPIO_EXC_CH_INVB 0x24
#define CC2520_GPIO_EXC_CH_RX 0x25
#define CC2520_GPIO_EXC_CH_ERR 0x26
#define CC2520_GPIO_FIFO 0x27
#define CC2520_GPIO_FIFOP 0x28
#define CC2520_GPIO_CCA 0x29
#define CC2520_GPIO_SFD 0x2A
#define CC2520_GPIO_RSSI_VALID 0x2C
#define CC2520_GPIO_SAMPLED_CCA 0x2D
#define CC2520_GPIO_SNIFFER_CLK 0x31
#define CC2520_GPIO_SNIFFER_DATA 0x32
#define CC2520_GPIO_RX_ACTIVE 0x43
#define CC2520_GPIO_TX_ACTIVE 0x44
#define CC2520_GPIO_LOW 0x7E
#define CC2520_GPIO_HIGH 0x7F
// 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
/***********************************************************************************
* GLOBAL FUNCTIONS
*/
// Instruction prototypes
uint8 CC2520_SNOP(void);
uint8 CC2520_SIBUFEX(void);
uint8 CC2520_SSAMPLECCA(void);
uint8 CC2520_SXOSCON(void);
uint8 CC2520_STXCAL(void);
uint8 CC2520_SRXON(void);
uint8 CC2520_STXON(void);
uint8 CC2520_STXONCCA(void);
uint8 CC2520_SRFOFF(void);
uint8 CC2520_SXOSCOFF(void);
uint8 CC2520_SFLUSHRX(void);
uint8 CC2520_SFLUSHTX(void);
uint8 CC2520_SACK(void);
uint8 CC2520_SACKPEND(void);
uint8 CC2520_SNACK(void);
uint8 CC2520_SRXMASKBITSET(void);
uint8 CC2520_SRXMASKBITCLR(void);
uint8 CC2520_IBUFLD(uint8 i);
uint8 CC2520_SRES(void);
uint8 CC2520_MEMRD(uint16 addr, uint16 count, uint8 *pData);
uint8 CC2520_MEMRD8(uint16 addr);
uint16 CC2520_MEMRD16(uint16 addr);
uint32 CC2520_MEMRD24(uint16 addr);
uint8 CC2520_MEMWR(uint16 addr, uint16 count, uint8 *pData);
uint8 CC2520_MEMWR8(uint16 addr, uint8 value);
uint8 CC2520_MEMWR16(uint16 addr, uint16 value);
uint8 CC2520_MEMWR24(uint16 addr, uint32 value);
uint8 CC2520_RXBUFCP_BEGIN(uint16 addr, uint8 *pCurrCount);
uint8 CC2520_RXBUFCP_END(uint16 addr, uint8 count, uint8 *pData);
uint8 CC2520_RXBUF(uint8 count, uint8 *pData);
uint8 CC2520_RXBUF8(void);
uint16 CC2520_RXBUF16(void);
uint8 CC2520_RXBUFMOV(uint8 pri, uint16 addr, uint8 count, uint8 *pCurrCount);
uint8 CC2520_TXBUF(uint8 count, uint8 *pData);
void CC2520_TXBUF8(uint8 data);
void CC2520_TXBUF16(uint16 data);
uint8 CC2520_TXBUFCP(uint8 pri, uint16 addr, uint8 count, uint8 *pCurrCount);
uint8 CC2520_RANDOM(uint8 count, uint8 *pData);
uint8 CC2520_RANDOM8(void);
uint16 CC2520_RANDOM16(void);
uint8 CC2520_RXMASKOR(uint16 orMask);
uint8 CC2520_RXMASKAND(uint16 andMask);
uint8 CC2520_MEMCP(uint8 pri, uint16 count, uint16 src, uint16 dest);
uint8 CC2520_MEMCPR(uint8 pri, uint16 count, uint16 src, uint16 dest);
uint8 CC2520_MEMXCP(uint8 pri, uint16 count, uint16 src, uint16 dest);
uint8 CC2520_MEMXWR(uint16 addr, uint16 count, uint8 *pData);
uint8 CC2520_BSET(uint8 bitAddr);
uint8 CC2520_BCLR(uint8 bitAddr);
uint8 CC2520_CTR(uint8 pri, uint8 k, uint8 c, uint8 n, uint16 src, uint16 dest);
uint8 CC2520_UCTR(uint8 pri, uint8 k, uint8 c, uint8 n, uint16 src, uint16 dest);
uint8 CC2520_CBCMAC(uint8 pri, uint8 k, uint8 c, uint16 src, uint16 dest, uint8 m);
uint8 CC2520_UCBCMAC(uint8 pri, uint8 k, uint8 c, uint16 src, uint8 m);
uint8 CC2520_CCM(uint8 pri, uint8 k, uint8 c, uint8 n, uint16 src, \
uint16 dest, uint8 f, uint8 m);
uint8 CC2520_UCCM(uint8 pri, uint8 k, uint8 c, uint8 n, uint16 src, \
uint16 dest, uint8 f, uint8 m);
uint8 CC2520_ECB(uint8 pri, uint8 k, uint8 c, uint16 src, uint16 dest);
uint8 CC2520_ECBO(uint8 pri, uint8 k, uint8 c, uint16 addr);
uint8 CC2520_ECBX(uint8 pri, uint8 k, uint8 c, uint16 src, uint16 dest);
uint8 CC2520_ECBXO(uint8 pri, uint8 k, uint8 c, uint16 addr);
uint8 CC2520_INC(uint8 pri, uint8 c, uint16 addr);
uint8 CC2520_ABORT(uint8 c);
uint8 CC2520_REGRD(uint8 addr, uint8 count, uint8 *pValues);
uint8 CC2520_REGRD8(uint8 addr);
uint16 CC2520_REGRD16(uint8 addr);
uint32 CC2520_REGRD24(uint8 addr);
uint8 CC2520_REGWR(uint8 addr, uint8 count, uint8 *pValues);
void CC2520_REGWR8(uint8 addr, uint8 value);
void CC2520_REGWR16(uint8 addr, uint16 value);
void CC2520_REGWR24(uint8 addr, uint32 value);
uint8 CC2520_INS_STROBE(uint8 strobe);
/***********************************************************************************
Copyright 2007 Texas Instruments Incorporated. All rights reserved.
IMPORTANT: Your use of this Software is limited to those specific rights
granted under the terms of a software license agreement between the user
who downloaded the software, his/her employer (which must be your employer)
and Texas Instruments Incorporated (the "License"). You may not use this
Software unless you agree to abide by the terms of the License. The License
limits your use, and you acknowledge, that the Software may not be modified,
copied or distributed unless embedded on a Texas Instruments microcontroller
or used solely and exclusively in conjunction with a Texas Instruments radio
frequency transceiver, which is integrated into your product. Other than for
the foregoing purpose, you may not use, reproduce, copy, prepare derivative
works of, modify, distribute, perform, display or sell this Software and/or
its documentation for any purpose.
YOU FURTHER ACKNOWLEDGE AND AGREE THAT THE SOFTWARE AND DOCUMENTATION ARE
PROVIDED 揂S IS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -