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

📄 nrf905_driver.h

📁 mega48+905.一份很好的材料
💻 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 + -