关于stm32f407的nrf24l01的通信问题

2019-07-20 00:41发布

本帖最后由 Leven175 于 2019-7-1 17:24 编辑

最近项目原因所以就做了一个nrf24l01的无线通信实验,先简单介绍一下情况。
基本stm32f030与stm32f407作通信,然后两者互相通信,由于需要改变频道,所以需要相互通信实现
但是一旦使用IRQ脚作外部中断脚后能接收到数据,发送的STATUS值也正常,但是FIFO_STATUS值却为0x01,意思就是说TX_FIFO值非空;
我没有使能应答通道和自动应答功能。单纯调试发送端的功能。
因为我程序已经搞好了一个方向,stm32f030控制stm32f407方向,但是这个使用中断接收的,即stm32f407是通过IRQ的脚的外部中断接收数据。但是加了发送后就会出现以上情况,如果我不使用中断的话就可以双向通信,因为由于某些原因必须使用中断,所以来请教一下各位。
接收端一直接收不到数据,使得一直卡在这里。接收端的值其实是正常的,接收不到数据STATUS的值就为0x0e,FIFO_STATUS值却为0x11.
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
3条回答
Leven175
1楼-- · 2019-07-20 02:41
终于把这个尴尬到一匹的模块调试好了,毕竟这个模块的确很奇怪。
首先我要说明的是,一定要确保硬件没问题条件下去调试,不然到后面跟本无法做。
我的目的是双向调试的,但是需要更改频率,在程序中无论怎么样都别把接收端和发送端随意写进循环内部,即使加了判断。
第二,模块调试过程中,必须先调试一端然后才调试另外一端,假如只需要传输一次数据的话在接收包和发送包内部完成接收模式和发送模式的转换。我也不知道为什么如果在完成发送后再次转换成另外一种模式时死活不接收。
意思即我的一个nrf24l01模块从发送端-接收端-发送端,另一个是接收端-发送端-接收端,这样的话,如果把这三个模式写在同一个水平上好像就不会转变一样。当把第二次模式转换写进对应包内即可完成转化,我也不知道是芯片问题还是程序问题,如果写在同一个if判断内部就会执行不了,这个我也实在没搞懂。。。
总而言之,这次调试这个模块让我印象深刻,毕竟调试了已经有差不多一个月了
peng1554
2楼-- · 2019-07-20 03:17
 精彩回答 2  元偷偷看……
tsk12358
3楼-- · 2019-07-20 04:24
邦迪那个~~~

一周热门 更多>