最新消息: USBMI致力于为网友们分享Windows、安卓、IOS等主流手机系统相关的资讯以及评测、同时提供相关教程、应用、软件下载等服务。

rf905

IT圈 admin 27浏览 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;

}

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;

}

发布评论

评论列表 (0)

  1. 暂无评论