2024年6月2日发(作者:伯依云)
Rf905通信资料及程序
本程序仅供初学者使用
本人建议参考资料网站 :/view/
:/view/
/link?url=QWTFG9hOZrnlZo0oeHhbH7bo7Q7
V628OoMy0t_M2u_1WCCQc02ryn07RA55kDF0lzBe8vwSeDu1Lt1VN_LE06q
以上三份资料对于初学者 个人认为非常不错
如果程序解释上以及程序问题不对的可通过百度账号与我联系
本人试验经验:此次试验本人使用的开发板是郭天祥的51单片机 如果有使用相同的同学
请小心了 本人使用的io口是P2口 供电方式 直流稳定电源(调到3.3v)目前经本人试验
P3,P0口不可使用原因是电流过大 如果一定要使用就要加入限流电阻 在资料中rf905最大
电流是 10ma 但本人建议最多不要超过5ma (io口电流)
个人建议如果想做rf905试验的同学 不要用集成开发板 最好自己动手焊一个板子 尤其是
郭天祥的板子由于io口使用复杂 可能会导致你无法使用P1口小灯来检测是否接收到信号
其余的rf905的重要细节信息会在程序中给出
各个引脚功能图
1
Vcc
电源
2
数
字
输
入
3
使
能
4
数
字
输
入
芯
片
上
电
5
6
数
字
输
出
载
波
检
测
7
数
字
输
出
地
址
匹
配
8
数
据
输
出
接
收
或
发
送
数
据
完
成
9 10 11 12
Spi
使
能
13
14
EN Ce Pwr Uclk Cd Am Dr Miso Mosi Sck Csn Gnd Gnd
SpiSpiSpi
接口 接口 时
钟
SpiSpi
输出 输入
3.3~3.6DC 1
发
送
0
接
收
发
送
与
接
收
不
用
接地
以下是四中工作模式(x为保留向)
Pwr
0
1
1
1
Ce
X
0
1
1
En
X
X
0
1
工作模式
掉电与spi编程
Standby与spi编程
接收模式
发送模式
当rf905发送完数据时 就会将dr置为高电平 当接受到数据时dr也会被置高 但当所有数据
都接受完毕时 dr会变为低电平
Rf905要先进性寄存器配置问题 一共分9个字节 其中包括接受和发送 配置时要将接收端
与发送端一样 每个字节有8位数据具体功能代表在上面的资料中 百度中的资料配置上有
一处是错误的 正常是0x20,0x20
#include
#define uchar unsigned char//宏定义
#define uint unsigned int
#define WTP 0X20//定义寄存器地址 向TX-Payload寄存器写入发送有效数据
#define RTP 0X21//从TX-Payload寄存器读取发送有效数据
#define WTA 0x22//向TX-Address寄存器写入发送地址
#define RAT 0X23//向TX-Address寄存器写入发送地址
#define RRP 0x24//从RX-Payload寄存器读取接收到的有效数据
sbit led = P1^1;//检测数据是否已经发完
sbit csn = P2^0;//功能io口定义具体功能上面表格已经给出
sbit sck = P2^1;
sbit miso = P2^2;
sbit mosi = P2^3;
sbit dr = P2^4;
sbit pwr = P2^5;
sbit ce = P2^6;
sbit en = P2^7;
uchar txbuf[4]={0xf9,0x77,0xee,0x11};//要发送的数据
uchar conf[11]={0x00,0x4c,0x0c,0x44,0x20,0x20,0xcc,0xcc,0xcc,0xcc,0x58};//寄存器配置具体
//配置功能自行去资料中了解
void delay(uint z)//延时
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void writedate(uchar date)//向spi中写数据 spi在工作时必须是 掉电模式或stanbdy
{
uchar i;
for(i=0;i<8;i++) //写入八位有效数据
{
delay(1);
sck=0;
mosi=(bit)(date&0x80); //将数据从mosi进入
date<<=1;
delay(10);
sck=1; //时钟只有在从高到底变化时才能将进入spi中的数据锁存住
delay(10);
sck=0;
}
sck=0;
}
2024年6月2日发(作者:伯依云)
Rf905通信资料及程序
本程序仅供初学者使用
本人建议参考资料网站 :/view/
:/view/
/link?url=QWTFG9hOZrnlZo0oeHhbH7bo7Q7
V628OoMy0t_M2u_1WCCQc02ryn07RA55kDF0lzBe8vwSeDu1Lt1VN_LE06q
以上三份资料对于初学者 个人认为非常不错
如果程序解释上以及程序问题不对的可通过百度账号与我联系
本人试验经验:此次试验本人使用的开发板是郭天祥的51单片机 如果有使用相同的同学
请小心了 本人使用的io口是P2口 供电方式 直流稳定电源(调到3.3v)目前经本人试验
P3,P0口不可使用原因是电流过大 如果一定要使用就要加入限流电阻 在资料中rf905最大
电流是 10ma 但本人建议最多不要超过5ma (io口电流)
个人建议如果想做rf905试验的同学 不要用集成开发板 最好自己动手焊一个板子 尤其是
郭天祥的板子由于io口使用复杂 可能会导致你无法使用P1口小灯来检测是否接收到信号
其余的rf905的重要细节信息会在程序中给出
各个引脚功能图
1
Vcc
电源
2
数
字
输
入
3
使
能
4
数
字
输
入
芯
片
上
电
5
6
数
字
输
出
载
波
检
测
7
数
字
输
出
地
址
匹
配
8
数
据
输
出
接
收
或
发
送
数
据
完
成
9 10 11 12
Spi
使
能
13
14
EN Ce Pwr Uclk Cd Am Dr Miso Mosi Sck Csn Gnd Gnd
SpiSpiSpi
接口 接口 时
钟
SpiSpi
输出 输入
3.3~3.6DC 1
发
送
0
接
收
发
送
与
接
收
不
用
接地
以下是四中工作模式(x为保留向)
Pwr
0
1
1
1
Ce
X
0
1
1
En
X
X
0
1
工作模式
掉电与spi编程
Standby与spi编程
接收模式
发送模式
当rf905发送完数据时 就会将dr置为高电平 当接受到数据时dr也会被置高 但当所有数据
都接受完毕时 dr会变为低电平
Rf905要先进性寄存器配置问题 一共分9个字节 其中包括接受和发送 配置时要将接收端
与发送端一样 每个字节有8位数据具体功能代表在上面的资料中 百度中的资料配置上有
一处是错误的 正常是0x20,0x20
#include
#define uchar unsigned char//宏定义
#define uint unsigned int
#define WTP 0X20//定义寄存器地址 向TX-Payload寄存器写入发送有效数据
#define RTP 0X21//从TX-Payload寄存器读取发送有效数据
#define WTA 0x22//向TX-Address寄存器写入发送地址
#define RAT 0X23//向TX-Address寄存器写入发送地址
#define RRP 0x24//从RX-Payload寄存器读取接收到的有效数据
sbit led = P1^1;//检测数据是否已经发完
sbit csn = P2^0;//功能io口定义具体功能上面表格已经给出
sbit sck = P2^1;
sbit miso = P2^2;
sbit mosi = P2^3;
sbit dr = P2^4;
sbit pwr = P2^5;
sbit ce = P2^6;
sbit en = P2^7;
uchar txbuf[4]={0xf9,0x77,0xee,0x11};//要发送的数据
uchar conf[11]={0x00,0x4c,0x0c,0x44,0x20,0x20,0xcc,0xcc,0xcc,0xcc,0x58};//寄存器配置具体
//配置功能自行去资料中了解
void delay(uint z)//延时
{
uchar x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void writedate(uchar date)//向spi中写数据 spi在工作时必须是 掉电模式或stanbdy
{
uchar i;
for(i=0;i<8;i++) //写入八位有效数据
{
delay(1);
sck=0;
mosi=(bit)(date&0x80); //将数据从mosi进入
date<<=1;
delay(10);
sck=1; //时钟只有在从高到底变化时才能将进入spi中的数据锁存住
delay(10);
sck=0;
}
sck=0;
}