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

📄 cc2420rf.h.bak

📁 射频芯片cc2420的使用例程
💻 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 + -