NRF20l41使用调试收发数据
最近入手了一对无线模块,NRF20L41,想做一个远程收发数据的可移动无线测试数据发送接收模块,之前买到的时候看到反正都有厂家的例程,到时候参考做就行了,应该很简单
但是真到了自己调的时候就发现自己想的太简单了。
整体写底层驱动的时候都还比较顺利,不过自己也能想到,写完了第一时间一般都是有问题功能实现不了的,关键的是还是找问题,能不能解决功能实现不了的关键问题才是能不能调试成功的最关键的地方
一,通信SPI问题
于是底层铺好之后我遇到了第一个问题,那就是运行的时候根本接收不到数据,发送端读取的STATUS寄存器数据读出来一直都是0,也就是说,SPI底层的通信出现了问题。
首先把它配置成不用自动应答进行调试,先看发送端
通过设置之前读取各个寄存器的初始值去判断是不是读取时序存在问题,读出来的数据和初始值对比发现,设置发送之前读的数据没有问题,发送端在设置发送之后寄存器的内容读取下来就都是0了
我还以为读取和CE有关系,于是改了CE的电平再读也一样,和发送状态没有关系,CE拉高之前就这样了
在写了第一个寄存器之后后面的所有寄存器读取都是0了
也就是说问题是出在配置寄存器的函数中
于是我就一个一个的按照顺序去读,发现在第一个写寄存器的函数的时候读取就出问题了
进一步对函数进行查看,发现是因为我一个地方CS片选拉低之后拉高语句写错了,写完之后本来应该是拉高,但是我写成了保持低。
本来SP