📄 905.h
字号:
#include "reg52stc.h"
#include "spi.h"
#include "uart.h"
//*****************************************************//
//nRF905SPI接口指令宏定义
//*****************************************************//
#define WC 0x00 //写配置寄存器
#define RC 0x10 //读配置寄存器
#define WTP 0x20 //向TX-Payload寄存器写入发送有效数据
#define RTP 0x21 //从TX-Payload寄存器读取发送有效数据
#define WTA 0x22 //向TX-Address寄存器写入发送地址
#define RTA 0x23 //从TX-Address寄存器读取发送地址
#define RRP 0x24 //从RX-Payload寄存器读取接收到的有效数据
#define CC 0x80 //快速设置配置寄存器中ch-no,hfreq-pll,pa-pwr
//#define RELOAD_COUNT 0xfd
#define num 4
sbit D2=P1^0;
sbit D1=P1^1;
//*****************************************************//
//nRF905相关设置信息的初始值
//*****************************************************//
typedef struct RFconfig{
unsigned char n;
unsigned char buf[10];
}RFconfig;
code RFconfig RxTxconfig = {
10,
0x01, //need checked
0x0c, //output power is set to be +10dbm
0x44, //RX and TX address field width is set to be 4bytes
0x20, //RX payload is set to be 32bytes
0x20, //TX payload is set to be 32bytes
0xcc,
0xcc,
0xcc,
0xcc, //RX address
0x58 //8bits CRC and enable,Fosc=16MHz,no external clock signal availiable,output clock frequency is 4MHz
};
void Init905IO(void); //
void Config905(void); //
void Read_Config905(void);
void Tx_Package905(void);
int Rx_Package905();
void SetTx905Mode(void);
void SetRx905Mode(void);
void SetStandby905Mode(void);
void Delayms(unsigned int);
void MCU_led_Display(void);
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void Init905IO(void)
{
CSN = 1;
DR = 1;
AM = 1;
PWR_UP= 1; //in standby mode for SPI programming
TRX_CE= 0;
TXEN = 0;
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void Config905(void)
{
unsigned char i;
CSN=1;
CSN=0;
SPIReadWrite(WC);
for(i=0;i<RxTxconfig.n;i++)
{
SPIReadWrite(RxTxconfig.buf[i]);
}
CSN=1;
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void Read_Config905(void)
{
unsigned char i;
unsigned char rx_config[10];
CSN=1;
CSN=0;
SPIReadWrite(RC);
for(i=0;i<10;i++)
{
rx_config[i]=SPIReadWrite(0x00);
}
CSN=1;
for(i=0;i<10;i++)
{
UART_Send(rx_config[i]);
Delayms(10);
}
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void Tx_Package905()
{
unsigned char i;
SetStandby905Mode();
Delayms(1);
CSN=1;
CSN=0;
SPIReadWrite(WTA);
for(i=0;i<4;i++)
{
SPIReadWrite(RxTxconfig.buf[i+5]);
}
CSN=1;
Delayms(1);
CSN=0;
SPIReadWrite(WTP);
for(i=0;i<Tnum;i++)
{
SPIReadWrite(tBuf[i]); //发送出长度为RxTxconfig.buf[5]字节的数据
UART_Send(tBuf[i]);
}
CSN=1;
SetTx905Mode();
Delayms(1); //do not need
while(DR!=1);
SetStandby905Mode();
MCU_led_Display();
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
int Rx_Package905()
{
unsigned char i;
SetRx905Mode();
for(i=0;i<100;i++);
if(AM==1)
{
if(DR==1)
{
TRX_CE=0;
CSN=1;
CSN=0;
SPIReadWrite(RRP);
for(i=0;i<10;i++);
for(i=0;i<Tnum;i++)
{
rBuf[i]=SPIReadWrite(0);
UART_Send(rBuf[i]);
}
CSN=1;
while(AM||DR);
Delayms(1);
MCU_led_Display();
}
return 1;
}
return 0;
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
/*void Read_Tx905()
{
}*/
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void SetTx905Mode(void)
{
TRX_CE=1;
TXEN =1;
Delayms(1);
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void SetRx905Mode(void)
{
TRX_CE=1;
TXEN =0;
Delayms(1);
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void SetStandby905Mode(void)
{
TRX_CE=0;
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void Delayms(unsigned int n)
{
unsigned int j;
while(n>0)
{
for(j=0;j<=699;j++);
n--;
}
}
//*****************************************************//
//函数名:
//输入参数:
//输出参数:
//功能描述:
//*****************************************************//
void MCU_led_Display(void)
{
unsigned char i=0;
for(i=0;i<2;i++)
{
D2=~D2;
Delayms(25);
D2=~D2;
Delayms(25);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -