📄 cc2420rf.h.bak
字号:
#ifndef CC2420RF_H
#define CC2420RF_H
/*****************************************************************************
包格式:
数据包: *
[Preambles (4)][SFD (1)][Length (1)][Frame control field (2)][Sequence number (1)][PAN ID (2)]
[Dest. address (2)][Source address (2)][Payload (Length - 2+1+2+2+2)][Frame check sequence (2)]
*
确认包:
[Preambles (4)][SFD (1)][Length = 5 (1)][Frame control field (2)][Sequence number (1)]
[Frame check sequence (2)]
*****************************************************************************/
// 和基本的RF包格式相关的常量
// 包overhead ((frame control field, sequence number, PAN ID, destination and source) + (footer))
// 注意: 长度字节本身并没有包含进包的长度里。
#define BASIC_RF_PACKET_OVERHEAD_SIZE ((2 + 1 + 2 + 2 + 2) + (2))
#define BASIC_RF_MAX_PAYLOAD_SIZE (127 - BASIC_RF_PACKET_OVERHEAD_SIZE)
#define BASIC_RF_ACK_PACKET_SIZE 5
// 在数据包传输后到接收到确认包所花费的时间
#define BASIC_RF_ACK_DURATION (0.5 * 32 * 2 * ((4 + 1) + (1) + (2 + 1) + (2)))
#define BASIC_RF_SYMBOL_DURATION (32 * 0.5)
// 长度字节
#define BASIC_RF_LENGTH_MASK 0x7F
// 帧控制域
#define BASIC_RF_FCF_NOACK 0x8841
#define BASIC_RF_FCF_ACK 0x8861
#define BASIC_RF_FCF_ACK_BM 0x0020
#define BASIC_RF_FCF_BM (~BASIC_RF_FCF_ACK_BM)
#define BASIC_RF_ACK_FCF 0x0002
// Footer
#define BASIC_RF_CRC_OK_BM 0x80
/******************************************************************************
数据包传输
*******************************************************************************/
// 传输包时用到的数据结构
typedef struct {
WORD destPanId;
WORD destAddr;
INT8 length;
BYTE *pPayload;
BOOL ackRequest;
} BASIC_RF_TX_INFO;
/******************************************************************************
包接收
******************************************************************************/
// 接收数据结构:
typedef struct {
BYTE seqNumber;
WORD srcAddr;
WORD srcPanId;
INT8 length;
BYTE *pPayload;
BOOL ackRequest;
INT8 rssi;
} BASIC_RF_RX_INFO;
/***********************************************************
************ Initialization *******************
***********************************************************/
// RF设置结构
typedef struct {
BASIC_RF_RX_INFO *pRxInfo;
UINT8 txSeqNumber;
volatile BOOL ackReceived;
WORD panId;
WORD myAddr;
BOOL receiveOn;
} BASIC_RF_SETTINGS;
extern BASIC_RF_SETTINGS rfSettings;
#define NOP() asm ("NOP")
void halWait(UINT16 timeout);
void halRfWaitForCrystalOscillator(void);
void halRfSetChannel(UINT8 channel);
void basicRfReceiveOn(void);
void basicRfReceiveOff(void);
void basicRfInit(BASIC_RF_RX_INFO *pRRI, UINT8 channel, WORD panId, WORD myAddr);
BOOL basicRfSendPacket(BASIC_RF_TX_INFO *pRTI);
void CC2420_FIFOP_ISP();
BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -