整整花了4天时间在调试这个小小的模块上面
这么个小东西,真的不能小瞧啊
虽然花了这么多时间,但是至今依然无法得到令自己满意的结果
不过基本的通信,问题是解决了
这里简单分享一下个人的调试心得。
1、寄存器的配置
一定要仔细核对,最好是用串口或者LCD显示出来,要不然根本不知道配置是否成功。
当然,收发双方的配置要对应一致才行。
2、延时
这次又栽倒在延时函数上,不是延时函数不精确,而是数据手册带来的误导
数据手册上CE端拉高,延迟130us后就可以完成发射/接收,发射模式和接收模式切换保证在1.5ms以上
其实亲测这个时间根本不行
整整2天被困扰在延时函数上,模块总是能够检测到对应频点通道射频信号,但是无法接收到数据
后来一咬牙,所有延时全部提升至ms级,神马问题立即烟消云散
baidu了一下,居然有几位哥们儿和我情况一样,这里给跪了......
得特西特呀,你叫我该怎么办?
3、调试
这里借鉴了互联网的一些高手的经验,个人觉得很有用,这里重复提一下。
以调试通道0的通信为例。
先调试发射端,禁用自动应答、禁用接收、禁用自动重发,然后在主函数里面重复发送数据
这个时候,STATUS应该返回0x2e,FIFO_STATUS应该返回0x11
发射端在上述条件下不断发送数据,同时进行接收端的调试
接收端禁用通道0自动应答、使能接收通道0
在这种情况下,接收端的STATUS应该返回0x40
调试到这里,基本上算是通了,但是这种没有 握手?应答? 的通信,是不可靠、不安全的通信
所以最终把上面调试时候禁用的功能再打开,基本上没有太大问题了的。
4、不要过分相信IDE的复位运行功能,要多尝试下载后,断电复位运行。
基本功能实现了,现在存在的问题是接收16个字节以上的数据就开始乱码,最新进展请关注:http://forum.eepw.com.cn/thread/249382/1
不日将更新
最近实在是不想调试这货了,似乎有点疲劳了,想先放一段时间。
是不是应该直接移植开源代码,还是自己慢慢模仿着写下去?
这个才是最大的问题。