折磨人的USB串口无线模块

折磨人的USB串口无线模块

昨天调试完了USB串口无线模块与STM32间的无线通信。当中由于个人问题及模块的问题出了很多岔子,不过最终成功地进行了通信。
问题:
1.EXTI中断。这个是个人问题。一开始使用这个中断的时候,我直接用的EXTI0,但是管脚用的是A的Pin8来接nrf24l01的IRQ,结果中断不断循环。后面再认真看资料才发现,EXTI0对应的一定是PIN0的中断信号,EXTI8对应的才是PIN8,GPIO口可以随意。还有EXTI0对应的中断和处理是EXTI0_IRQn和EXTI0_IRQHandler。这个一直到EXTI4都没有问题。但是5-9口对应的是EXTI9_5_IRQn和EXTI9_5_IRQHandler。10-15的也是这样。这个资料上都没有写。我是在看了别人的中断例程才发现的这个形式。而且别人的例程也没有解释这个问题。
2.模块的传输速率。nrf24L01已经很多年了,很成熟的模块。之前stm和stm之间的通信,我直接用的2Mbps没有问题。但是这次,一开始的时候因为叠加了别的问题,所以也没有发现。后面排除了其它问题后,发现从PC端发出的信息,发了好几次STM才收到一次。由于USB串口这边的调试里面没有包含重发时间和次数的设置,我估计有问题。传输过程一旦出现干扰,信号就不对了。可能有两个:一、这个串口模块就没有重发功能,只发了一次,因此传输成功率低。二、传输信号干扰太多,超过了重发次数。两个可能都可以通过降低传输的速率来实现。这个问题在传输速率设为1Mbps后解决。(USB这端可以设置250Kbps,但是stm那边最低只有1Mbps的设置)。
3.传输格式问题,我在STM那边最早用的是2个字节的传输来控制。这个USB模块,传输的字节只有32一种,无论输入的信息是怎么样的,它都只传32字节的信号。一开始没发现这个问题,也是折磨人。
4.买了太多便宜的nrf24l01。在网上买的便宜的3块多点点的nrf24l01模块,结果有个接口短路了。等疫情过去后再回去学校重焊一下吧。还有这个便宜的模块,距离很有限,稍为有点距离就传输失败了。跟2有点类似。

你可能感兴趣的:(单片机,stm32)