📄 nrf905_driver.h
字号:
/****************************************************************************
** - nRF905_driver.h -
**
** NewMsg-RF905无线收发模块驱动程序的匹配h文档
**
**
**
** mader:高其良
**
** File version: $22007.9.12$
**
***************************************************************************/
#ifndef nRF905_driver_h
#define nRF905_driver_h
/*************************自定义IO插入******************************/
#include "IO_def.h"
/*************************自定义IO插入******************************/
/*******************IO定义(根据具体情况重新定义)********************/
#pragma message ("\nnRF905驱动:")
#if !defined(nRF905_TX_EN_DDR) || !defined(nRF905_TRX_CE_DDR) || \
!defined(nRF905_PWR_UP_DDR) || !defined(nRF905_AM_DDR) || \
!defined(nRF905_DR_DDR) || !defined(nRF905_CD_DDR) || \
!defined(nRF905_MISO_DDR) || !defined(nRF905_MOSI_DDR) || \
!defined(nRF905_SCK_DDR) || !defined(nRF905_CSN_DDR) || \
!defined(nRF905_TX_EN) || !defined(nRF905_TRX_CE) || \
!defined(nRF905_PWR_UP) || !defined(nRF905_AM) || \
!defined(nRF905_DR) || !defined(nRF905_CD) || \
!defined(nRF905_MISO) || !defined(nRF905_MOSI) || \
!defined(nRF905_SCK) || !defined(nRF905_CSN) || \
!defined(nRF905_CD_PIN) || !defined(nRF905_AM_PIN) || \
!defined(nRF905_DR_PIN) || !defined(nRF905_MISO_PIN)
#pragma message ("警告:IO没有完全重新定义,使用默认定义!")
#define nRF905_TX_EN_DDR DD_7
#define nRF905_TRX_CE_DDR DB_6
#define nRF905_PWR_UP_DDR DB_7
#define nRF905_AM_DDR DD_4
#define nRF905_DR_DDR DD_3
#define nRF905_CD_DDR DD_6
#define nRF905_MISO_DDR DB_4
#define nRF905_MOSI_DDR DB_3
#define nRF905_SCK_DDR DB_5
#define nRF905_CSN_DDR DD_2
//
#define nRF905_TX_EN D_7
#define nRF905_TRX_CE B_6
#define nRF905_PWR_UP B_7
#define nRF905_AM D_4
#define nRF905_DR D_3
#define nRF905_CD D_6
#define nRF905_MISO B_4
#define nRF905_MOSI B_3
#define nRF905_SCK B_5
#define nRF905_CSN D_2
//
#define nRF905_CD_PIN PD_6
#define nRF905_AM_PIN PD_4
#define nRF905_DR_PIN PD_3
#define nRF905_MISO_PIN PB_4
#else
#pragma message ("提示:IO全部重新定义成功,使用新定义")
#endif
/*******************IO初始化(根据具体情况重新定义)********************/
#ifndef nRF905_IO_INITIALIZTION
#pragma message ("警告:IO初始化函数没有重新定义,使用默认初始化函数!")
#define nRF905_IO_INITIALIZTION() \
nRF905_TX_EN_DDR = 1;\
nRF905_TRX_CE_DDR = 1;\
nRF905_PWR_UP_DDR = 1;\
nRF905_AM_DDR = 0;\
nRF905_DR_DDR = 0;\
nRF905_CD_DDR = 0;\
nRF905_MISO_DDR = 0;\
nRF905_MOSI_DDR = 1;\
nRF905_SCK_DDR = 1;\
nRF905_CSN_DDR = 1;\
nRF905_CD = 1;\
nRF905_AM = 1;\
nRF905_DR = 1;\
nRF905_MISO = 1;\
nRF905_SCK = 0
#else
#pragma message ("提示:IO初始化函数从新定义成功,使用新定义")
#endif //LCD_128128G_IO_INITIALIZTION
/*******************宏函数**************************/
#define nRF905_POWER_DOWN_MODE() \
nRF905_PWR_UP = 0
#define nRF905_STANDBY_MODE() \
nRF905_PWR_UP = 1;\
nRF905_TRX_CE = 0
#define nRF905_RX_MODE() \
nRF905_PWR_UP = 1;\
nRF905_TRX_CE = 1;\
nRF905_TX_EN = 0
#define nRF905_TX_MODE() \
nRF905_PWR_UP = 1;\
nRF905_TRX_CE = 1;\
nRF905_TX_EN = 1
#define nRF905_SPI_ENABLE() \
nRF905_CSN = 0
#define nRF905_SPI_DISABLE() \
nRF905_CSN = 1
/*******************命令字与命令格式(格式中1表示可变参量)*********************/
#define nRF905_COMMEND_PROCESS(com_type,format,com) \
((com_type&(~format))|(com&format))
//设置写配置寄存器起始地址
#define nRF905_W_CONFIG(factor) \
nRF905_COMMEND_PROCESS(0x00,0x0f,factor)
//设置读配置寄存器起始地址
#define nRF905_R_CONFIG(factor) \
nRF905_COMMEND_PROCESS(0x10,0x0f,factor)
//写发送数据 引导命令
#define nRF905_W_TX_PAYLOAD(factor) \
nRF905_COMMEND_PROCESS(0x20,0x00,factor)
//读发送数据 引导命令
#define nRF905_R_TX_PAYLOAD(factor) \
nRF905_COMMEND_PROCESS(0x21,0x00,factor)
//写发送目标地址引 导命令
#define nRF905_W_TX_ADDRESS(factor) \
nRF905_COMMEND_PROCESS(0x22,0x00,factor)
//读发送目标地址 引导命令
#define nRF905_R_TX_ADDRESS(factor) \
nRF905_COMMEND_PROCESS(0x23,0x00,factor)
//读接收数据 引导命令
#define nRF905_R_RX_PAYLOAD(factor) \
nRF905_COMMEND_PROCESS(0x24,0x00,factor)
//快速设置CH_NO HFREQ_PLL PA_PWR 专用命令
#define nRF905_CHANNEL_CON_H(factor) \
nRF905_COMMEND_PROCESS(0x80,0x0f,factor)
#define nRF905_CHANNEL_CON_L(factor) \
nRF905_COMMEND_PROCESS(0x00,0xff,factor)
//--------------------------------------------------------------
//<RF-Configuration-Register 配置信息>
#define CH_NO 0x01//76 //freq=422.4+76/10=430MHz
#define HFREQ_PLL 0x0 //433Mhz / 868/915Mhz
#define PA_PWR 0x3 //最大输出功率
#define RX_RED_PWR 0x0 //接收功率
#define AUTO_RETRAN 0x0 //自动重新发送
//<地址宽度与数据宽度>
#define RX_AWF 0x4 //Rx 本地接收地址宽度
#define TX_AWF 0x4 //Tx 本地发送地址宽度
#define RX_PW 0x20 //Rx 本地接收有效数据宽度
#define TX_PW 0x20 //Tx 本地发送有效数据宽度
#define UP_CLK_FREQ 0x0 //输出时钟频率
#define UP_CLK_EN 0x0 //输出时钟使能
#define XOF 0x3 //16MHz //晶体振荡器频率,必须依据外部晶体的标称频率设置
#define CRC_EN 0x1 //CRC校验允许
#define CRC_MODE 0x0//0x1 //CRC模式 0b0-8位CRC校验位; 0b1-16位CRC校验位 (默认)
//<本机地址>
#define RX_ADDR_Byte3 0xcc //本机地址 最高字节
#define RX_ADDR_Byte2 0xcc
#define RX_ADDR_Byte1 0xcc
#define RX_ADDR_Byte0 0xcc //本机地址 最低字节
#define TX_ADDR_Byte3 0xcc
#define TX_ADDR_Byte2 0xcc
#define TX_ADDR_Byte1 0xcc
#define TX_ADDR_Byte0 0xcc
//-----------------------------------------------------------
//<将设置信息组合成每个字节的数据信息,此区域无需修改>
#define nRF905Config_Byte0 (CH_NO & 0xff)
#define nRF905Config_Byte1 (AUTO_RETRAN<<5 | RX_RED_PWR<<4 | PA_PWR<<2 | HFREQ_PLL<<1 | CH_NO>>8)
#define nRF905Config_Byte2 (TX_AWF<<4 | RX_AWF)
#define nRF905Config_Byte3 RX_PW
#define nRF905Config_Byte4 TX_PW
#define nRF905Config_Byte5 RX_ADDR_Byte0
#define nRF905Config_Byte6 RX_ADDR_Byte1
#define nRF905Config_Byte7 RX_ADDR_Byte2
#define nRF905Config_Byte8 RX_ADDR_Byte3
#define nRF905Config_Byte9 (CRC_MODE<<7 | CRC_EN<<6 | XOF<<3 | UP_CLK_EN<<2 | UP_CLK_FREQ)
//------------------------------------------------------------
/*******************函数申明*********************/
void nRF905Write8Bit(unsigned char byte);
unsigned char nRF905Read8Bit(void);
void nRF905ConfigRegister(unsigned char* p);
void nRF905WriteTxAddress(
unsigned char addr0 , unsigned char addr1 ,
unsigned char addr2 , unsigned char addr3 );
void nRF905WriteRxAddress(
unsigned char addr0 , unsigned char addr1 ,
unsigned char addr2 , unsigned char addr3 );
unsigned char nRF905ReadStatus(void);
void nRF905ReadRxPayload(unsigned char* p,unsigned char total);
void nRF905WriteTxPayload(unsigned char* p,unsigned char total);
void nRF905Initializtion();
unsigned char nRF905Scanf(unsigned char* p);
void nRF905Printf(unsigned char* p);
#endif //nRF905_driver_h
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -