有人吗?别沉了呀!
通过两天的调试终于找到原因了,不过很奇怪,暂时无法解决,只能重新换两个模块试试来验证一下了。
是这样的,只要在设置CONFIG时,接收端不开启CRC校验就能够正常通信,经过示波器的观察,两个模块之间的响应≥100us,也就是说发送端发出数据后,接收端会在100us以后置低IRQ引脚。只要控制100us以后就可以确定接收端已经收到数据了。由于接收端不使用CRC校验功能因此只要不使能CRC校验或不使用自动应答(自动应答是强制使用CRC功能的),那么不管发送端使用哪种CRC校验方式(8位和16位),接受端都能正常接收!但是发送端不能使用自动应答功能,因为内部硬件链路层的协议关系,在使用自动应答时必须要等到接收端响应才能表示通信成功,而接收不能使用CRC校验功能,且注明了只有在地址和校验正确的情况下,接收端才会响应,所以就出现了我一开始的问题,单发单收时没有问题,一旦使能自动应答通信失败!这个问题我就搞不懂怎么回事了?有知道的大神给个解释吧!
除了另外购买两个无线模块重新测试外,不过还有一个方法可以试试,那就是再买一个24l01的无线串口模块,监测发送端发送出来的数据,然后手动计算校验码,那就知道问题出在哪里了!或者手动发送数据到接收模块看看是否能够接收到。可惜的是,NRF24L01资料上并没有说明通信链路的协议方式,所以做起来就有点难办了!
有人吗?别沉了呀!
通过两天的调试终于找到原因了,不过很奇怪,暂时无法解决,只能重新换两个模块试试来验证一下了。
是这样的,只要在设置CONFIG时,接收端不开启CRC校验就能够正常通信,经过示波器的观察,两个模块之间的响应≥100us,也就是说发送端发出数据后,接收端会在100us以后置低IRQ引脚。只要控制100us以后就可以确定接收端已经收到数据了。由于接收端不使用CRC校验功能因此只要不使能CRC校验或不使用自动应答(自动应答是强制使用CRC功能的),那么不管发送端使用哪种CRC校验方式(8位和16位),接受端都能正常接收!但是发送端不能使用自动应答功能,因为内部硬件链路层的协议关系,在使用自动应答时必须要等到接收端响应才能表示通信成功,而接收不能使用CRC校验功能,且注明了只有在地址和校验正确的情况下,接收端才会响应,所以就出现了我一开始的问题,单发单收时没有问题,一旦使能自动应答通信失败!这个问题我就搞不懂怎么回事了?有知道的大神给个解释吧!
除了另外购买两个无线模块重新测试外,不过还有一个方法可以试试,那就是再买一个24l01的无线串口模块,监测发送端发送出来的数据,然后手动计算校验码,那就知道问题出在哪里了!或者手动发送数据到接收模块看看是否能够接收到。可惜的是,NRF24L01资料上并没有说明通信链路的协议方式,所以做起来就有点难办了!
举报