NRF24L01调试记 (STM32F4,STM32F1,STM8L)

其实网上NRF24L01的资料很多,例程也很多,本不应该有什么大问题,但是确出了各种奇怪的问题,花了不少时间。

  1. STM32F103+NRF24L01
    用最小系统板搭了个平台,加上网上的例程,问题是检查NRF24L01的时候,一直没法找到,读写地址寄存器失败,起初怀疑是引线的问题,自己检查连线以及针脚定义,都没有发现问题,既然针脚没有问题怀疑是SPI通讯的问题,接着检查SPI配置,都没有发现明显的错误,尽管分频到256还是不行,十分不解,检查时序代码,因为是网上现成的代码本来想不应该有问题,但是还真的发现问题了,发现网上时序先是将CSN拉高!发送结束后再拉低!这个明显不符,修改后运行正常,哎,网上人家给的例程未必人家就验证过,切记!
  2. STM32F407+NRF24L01
    用自己做的系统板子,加上网上的例程搭了下,起初的问题和在f1上的一样,心想只要更改了CSN的问题就也能解决,但是问题依旧!!!十分不解,反复检查引脚连接以及SPI设置,因为都是CUBE生成的配置文件,应该不会有问题啊,开启在线调试,意外发现读写能正常,意识到估计需要加延迟,后续的程序中CSN拉低后加了HAL_DELAY(1),程序就能正常运行了。
  3. STM8L051F3+NRF24L01
    自己刚刚接触STM8,这是我第一个做的东西,很多地方都不是很熟悉,stm32用cube就能方便的生成配置,STM8也有cube但是不能生成配置。。。那有啥用!要手动配置时钟,端口,复用等,感觉已经好不习惯了,哎。调通了GPIO,调通了USART,用了网上的例程,配置SPI,结果读写寄存器失败,也算正常吧,毕竟第一次,检查引脚连接,都正确,检查GPIO配置,对这块其实不是很确定,因为有的例程里面配置了SPI,就没有再配置GPIO,有的还会配置GPIO,都试了还是有问题,在线调试发现寄存器返回的是0X08,很奇怪,并不是0X00,用万用表量了一下发现CE口正常,但是CSN口翻转的时候高电平只能到1.36v左右,好奇怪,反复检查了电路原理图,以及手册,这个口也不是真开漏口,不应该这样啊,无意间量了一下附近的引脚,发现和附近的引脚短路了。。。然后用放大镜看有很小很短的一段接上了。。。去除后引脚翻转正常,通讯一切正常
    在这里插入图片描述
    至此所有调试结束,并成功发送接收信息,这个小东西没有想象的简单啊。

猜你喜欢

转载自blog.csdn.net/memoff/article/details/88048600