走过不少弯路,特此记录。 stm32l010rbt6
1. 两块stm32板子。
对应 spi接口为 PB3、4、5 对应pin连接。
2. 配置好。开始通信。
问题: 主发从收,从机收不到信息。
答: 程序设置为软件配置 spi片选,但是在代码里面又没有实际去拉低控制芯片。最简单的方法:对于单片从机,将从机的cs接地,拉低。即PA4 接GND.
3. 确定spi模式
接spi芯片 驱动编写方法,看 图,并且分清spi芯片的时钟 模式。以及驱动方法。
3. 经过验证:主机发,从机只收是可以的。
4. SPI的接收要放在spi中断里面去做接收。
spi无线芯片 sx1212调试记录:
1. 没有频谱仪如何简单测试 收发信号是否有问题?
答:a 用示波器测试板子天线端收发的 波形 是否一致。
b. 可以用好的模块去对比 信号是否一致。
2. 测试波形发现收发一致,与好的板子对比也相差不大。但是收发数据还是不一致?问题在哪?
答: 对比手册发现 spi data的sck 最大只能是 1M 问题解决。这里发现 spi config 的时钟远远大于 spi data
3. 调试需要注意的地方:
1. 仔细阅读芯片手册,分析 spi使用的是哪种 模式,sck时钟是多大。 刚开始时钟配置分频系数太大,导致时钟偏小。读写配置不出来。
2. 调试spi 第一点 ,阅读spi 寄存器,哪些能读写,然后 验证对spi器件读写。如果成功,说明spi操作基本ok.
然后注意 spi读取数据的时候 是否有其他特殊要求,比如读取数据的时候的时钟。
4. 一个坑: 同样的程序,一款类型的板子上一定距离收发正常,在另一款类型的板子上,相同距离发送的信号,收不到?
答:pcb 布局不同导致无线信号发射出去的强度不一样。发射信号很弱,必须要靠很近才行。