⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 hal_cc2520.h

📁 zigbee 无线通信 CC2520 芯片 C语言 原代码
💻 H
📖 第 1 页 / 共 2 页
字号:
#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 + -