极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 10733|回复: 1

arduino学习 一

[复制链接]
发表于 2015-3-25 15:35:20 | 显示全部楼层 |阅读模式


闲来无事,翻出以前买的的24L01,试着尝试一下,中间也走了不少弯路,总算是搞定了。第一次写arduino的库,很多不标准,高手们见笑了。

很多人在调试24L01的时候 基本上都是收发一起调试,只要中间出现一点问题就会失败,也搞不清到底哪里错了,在阿莫上看到一个不错的方法,就是采用单方调试,发射接收分开调试。
最近百度上一些朋友都在为nRF24L01头疼,我这段时间又比较忙不能花太多时间一个一个去帮忙调试,干脆今天抽点儿时间写个应用笔记,希望能给大家提供一些方法和帮助。有问题可以跟帖留言,我看到会尽量帮大家。
nRF24L01是Nordic公司生产的一个单芯片射频收发器件,是目前应用比较广泛的一款无线通讯芯片,具体手册资料网上大把,我就不再重复它的特性什么的了,直接说说它的调试方法,供大家参考。
24L01是收发双方都需要编程的器件,这就对调试方法产生了一定的要求,如果两块一起调,那么通讯不成功,根本不知道是发的问题还是收的问题,不隐晦的说,我当时也是没理清调试思路才浪费了大半天时间看着模块干瞪眼。正确的方法应该是先调试发送方,能保证发送正确,再去调接收,这样就可以有针对性的解决问题。
至于怎么去调发送方,先说下发送方的工作流程:

·配置寄存器使芯片工作于发送模式后拉高CE端至少10us
·读状态寄存器STATUS
·判断是否是发送完成标志位置位
·清标志
·清数据缓冲

网上的程序我也看过,大多都是成品,发送方发送-等应答-(自动重发)-触发中断。可是这样的流程就已经把接收方给牵涉进来了,就是说一定要接收方正确收到数据并且回送应答信号之后发送方才能触发中断,结束一次完整的发送。可是这跟我们的初衷不相符,我们想单独调试发送,完全抛开接收,这样就要去配置一些参数来取消自动应答,取消自动重发,让发送方达到发出数据就算成功的目的。
       SPI_RW_Reg(WRITE_REG+ EN_AA, 0x00);          // 失能通道0自动应答
       SPI_RW_Reg(WRITE_REG+ EN_RXADDR, 0x00);           // 失能接收通道0
       SPI_RW_Reg(WRITE_REG+ SETUP_RETR, 0x00);      // 失能自动重
发有了以上这三个配置,发送方的流程就变成了发送-触发中断。这样就抛开了接收方,可以专心去调试发送,可是怎么样才知道发送是否成功呢,要用到另外两个寄存器,STATUS和FIFO_STATUS。这样就很清晰了,我们可以通过读取STATUS的值来判断是哪个事件触发了中断,寄存器4、5、6位分别对应自动重发完成中断,数据发送完成中断,数据接收完成中断。也就是说,在之前的配置下,如果数据成功发送,那么STATUS的值应该为0x2e。这样就可以作为一个检测标准,另外一个标准可以看FIFO_STATUS寄存器,第5位的描述:发送缓冲器满标志,1为满,0为有可用空间;第4位的描述:发送缓冲器空标志,1为空,0为有数据;同样可以看到接收缓冲器的对应标志。这样在数据发送成功后,发送寄存器当然应该是空的,接收缓冲因为在之前已经失能,所以也应该是空,也就是说成功发送之后的FIFO_STATUS寄存器值应该是0x11。
有了这两个检测标准,我们即使不用接收方也可以确定发送方是否成功发送。当发送方调试成功之后,在程序里让它一直发送,然后我们就可以去调试接收方,思路是一样的。

网上的程序很多,或多或少都会有点问题,还是看看数据手册,自己梳理一遍,不然直接拿来就下载,十有八九失败,还不知道问题在哪里。


我的用的是MEGA2560的硬件SPI,使用其他控制器需要在头文件中修改,至于硬件连接。。。照着头文件来就是了。由于24L01是半双工,我的程序是2560和电脑配套,所以2560初始化为接收模式,有数据发送就切换到发射模式,发射完成自动切换到接收模式。网上貌似还有利用ACK应答包来应答数据,实现伪双工的,有了解到高手麻烦指教,因为在24L01的数据手册中,这种伪双工的很多寄存器都看不到。

另外我用的这个USB无线模块有这个要求;无线串口模块发送,单片机接收单片机需从Buff[1]开始读,读Buff[0]个长度的字节。 Buff[1]是电脑发送的第一个字节。单片机发送,无线串口模块接收单片机发送时,需将Buff[0]置本次传输的总字节数,传输1个字节Buff[0]就是“ 0x01”,传输31个字节Buff[0]就是“ 0x1F” 。所以我的这个库不是通用的~~~需要按照自己的来,不过只要SPI函数没有问题,照着手册上的时序来,问题都不大,祝大家都成功




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回复

使用道具 举报

发表于 2015-3-26 11:09:59 | 显示全部楼层
谢谢分享学习一下
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|联系我们|极客工坊

GMT+8, 2026-6-17 17:25 , Processed in 0.107683 second(s), 19 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表