打印
[DemoCode下载]

[USB]NUC123和M0516与 RF2401通信 RF Mouse

[复制链接]
1886|15
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
MLI_William|  楼主 | 2014-12-11 17:58 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
M051/NUC123与RF24L01 RF Mouse sample code 说明
该应用程序简介:使用M051 TinyBoard和NUC123分别于两个RF24L01模块相连。
M051板子为RF发送,以及按键检测程序,NUC123板子接收RF数据,并转化成鼠标的移动方向值,通过USB把数据上传PC。
M0516 Tiny Board与RF的连接管脚

对应与MCU这边的接线为:                   RF模块这边:
管脚47  P14 SPI_SS0                          4  CSN
管脚1   P15 SPI_MOSI                        6  MOSI
管脚2   P16 SPI_MISO                        7  MISO
管脚3   P17 SPI_CLK                          5  SCK

管脚 33  P06  CE                            3  CE
管脚 32  P07  IRQ                           8  IRQ

管脚 5  P30 RXD
管脚 7  P31 TXD

管脚 19         #define KEY_UP                  P20            鼠标向上
管脚 20         #define KEY_DOWN          P21            鼠标向下
管脚 21         #define KEY_LEFT          P22                鼠标向左
管脚 22         #define KEY_RIGHT          P23                鼠标向右
管脚 23         #define KEY_MOUSE_LEFT         P24         鼠标左键
管脚 25         #define KEY_MOUSE_RIGHT         P25         鼠标右键

软件介绍:
开发BSP版本:BSP M051_Series_BSP_CMSIS_Rev3.00.001
NRF_24L01.c 与RF模块相关的寄存器定义,RF模块各种功能函数。
NRF_24L01.h  RF模块相关函数头文件
delay.c     延时函数定义
delay.h     延时函数头文件


发送程序:
工作原理:RF模块初始化后,进入接收状态,然后去检测下载波信号,看是否有当前的信号,如果有则跳频;如果没有,则初始化要发送值(发送检测到的按键值,目前一次只发一个按键值,优先级为上面按键的高到低),然后进入发送状态。
IRQ(外部GPIO)中断:用来检测发送数据后的接收状态。
如果收到接收方的ACK信号,则改变数据发送状态为完成。如果没收到ACK信号,则改变状态为超时状态。
Main()函数的主循环,用来判断发送数据的状态,如果当前状态为完成,则再次进入发送模式。如果当前状态为超时状态,则去检测当前频道上是否有载波信号,如果有改变当前的频道值,如果没有,则再进入发送模式。

NUC123 Tiny Board与RF的连接管脚

对应与MCU这边的接线为:                   RF模块这边:
管脚27   PC.3 SPIMOSI00                        6  MOSI
管脚28   PC.2 SPIMISO00                        7  MISO
管脚29   PC.1 SPICLK0                          5  SCK
管脚30   PC.0 SPISS00                          4  CSN

管脚 64  PB.8  CE                             3  CE
管脚 1   PB.14  IRQ                           8  IRQ

管脚 21  PB.0 RXD
管脚 22  PB.1 TXD


开发BSP版本:BSP NUC123SeriesBSP_CMSIS_V3.00.001
NRF_24L01.c 与RF模块相关的寄存器定义,RF模块各种功能函数。
NRF_24L01.h  RF模块相关函数头文件
delay.c     延时函数定义
delay.h     延时函数头文件
RF_Handle.c 处理RF接收数据和初始化相关模块函数
RF_Handle.h  头文件

接收程序:
工作原理:RF模块初始化后,进入接收状态。
使用一个定时器做记录,如果50MS未收到数据,则进行跳频一次。
使用IRQ(外部GPIO)中断,来检测是否有收到数据,如果收到数据,则会产生IRQ中断,在IRQ中断里,如果检测到接收数据标志,就去读取数据,如果第一个数据是0xAA,则取判断第二字节数据,并把它存到RF按键变量,如果是0x55(测试使用),则计数值uTestRevCount1加1。
Main()函数的主循环里,HID_UpdateMouseData函数,检测RF是否有收到数据,有收到数据,则更新USB的Buffer,再上传至到主机。






沙发
MLI_William|  楼主 | 2014-12-11 18:03 | 只看该作者
本帖最后由 MLI_William 于 2014-12-11 18:07 编辑

NUC123 NUC123SeriesBSP_CMSIS_V3.00.001_RFUSBMouse.zip (771.6 KB)



部分参考代码

使用特权

评论回复
板凳
MLI_William|  楼主 | 2014-12-11 18:04 | 只看该作者
本帖最后由 MLI_William 于 2014-12-11 18:09 编辑

M0516  部分参考代码

M051_Series_BSP_CMSIS_Rev3.00.001_RFKeyForMouse.zip

719.24 KB

M0516

使用特权

评论回复
地板
haolaishi| | 2014-12-16 00:52 | 只看该作者
下载看看,顶起!

使用特权

评论回复
5
MLI_William|  楼主 | 2015-2-4 16:10 | 只看该作者
顶起啊,挺不错的啊

使用特权

评论回复
6
swing07| | 2015-2-12 11:29 | 只看该作者
能否介绍一下 USB的流程啊

使用特权

评论回复
7
guo522129| | 2015-2-13 14:35 | 只看该作者
学习一下,谢谢楼主

使用特权

评论回复
8
mintspring| | 2015-2-16 21:58 | 只看该作者
这个芯片,我又有,谢谢楼主分享,买了还不会用

使用特权

评论回复
9
czxlly| | 2015-9-14 08:17 | 只看该作者
谢谢楼主。:)

使用特权

评论回复
10
lwd04| | 2017-7-5 23:52 | 只看该作者
非常感谢楼主分享!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

36

帖子

2

粉丝