该应用程序简介:使用两个M051 TinyBoard分别于两个RF24L01模块相连。
两个板子分别烧入发送和接收的代码。一个做发送和一个做接收。
软件介绍:
开发BSP版本:BSP M051_Series_BSP_CMSIS_Rev3.00.001
NRF_24L01.c 与RF模块相关的寄存器定义,RF模块各种功能函数。
NRF_24L01.h RF模块相关函数头文件
delay.c 延时函数定义
delay.h 延时函数头文件
接收程序:
工作原理:RF模块初始化后,进入接收状态。
使用一个定时器做记录,如果50MS未收到数据,则进行跳频一次。
使用IRQ(外部GPIO)中断,来检测是否有收到数据,如果收到数据,则会产生IRQ中断,在IRQ中断里,如果检测到接收数据标志,就去读取数据,如果第一个数据是0xAA,则计数值uTestRevCount0加1,如果是0x55,则计数值uTestRevCount1加1。
Main()函数的主循环里,每个一秒钟,打印出当前频道,计数值uTestRevCount0和计数值uTestRevCount1的值。
发送程序:
工作原理:RF模块初始化后,进入接收状态,然后去检测下载波信号,看是否有当前的信号,如果有则跳频;如果没有,则初始化要发送值,然后进入发送状态。
IRQ(外部GPIO)中断:用来检测发送数据后的接收状态。
如果收到接收方的ACK信号,则改变数据发送状态为完成。如果没收到ACK信号,则改变状态为超时状态。
Main()函数的主循环,用来判断发送数据的状态,如果当前状态为完成,则再次进入发送模式。如果当前状态为超时状态,则去检测当前频道上是否有载波信号,如果有改变当前的频道值,如果没有,则再进入发送模式。
|