你再寻找 关于SPI 作为从机时 而且还没有NSS 信号 而出现数据接收错误的烦恼吧
最近给客户做一个项目 使用到了SPI 从机 在网上找答案 但是没有找到自己满意的 现在来说 都没有 将SPI 通信接收错误的根本原因说明白
网上有很多关于STM32 作为从机来使用 的 问题 主要还是 从机接收数据错误
1 关于主从机的 时钟悬空配置 可以肯定的说 主机与从机的时钟悬空一定要配成一样的
这点STM 的官方手册说的很明白
2 从机的波特率 只与 主机提供的 CLK 信号有关
3 通信失败 或者 数据接收错误 问题就出在从机对SPI 的起始信号的判断上面
当使用TI 模式 NSS 信号由硬件 从机对数据的捕获 就很容易
若没有NSS 信号呢 因为STM32 SPI普通模式 根本就没有对数据的捕获 做什么工作 真的有点糊弄我们
它 只是 当我们把SPI 打开 他就开始进行捕获 而不管SCK 此时是闲置的还是忙的 这就造成了 我们读取的SPI 数据错误
解决这个问题也很简单 只要在软件中 对 SPI 信号进行处理 得到SPI 线路是 忙的 还是空闲的
根本就是对 SPI 信号的 捕获时机
当我们要进行捕获前先对总线SPI 进行判断 若总线SPI 是空闲的 那么就开启SPI 进行数据捕获
若总线SPI 是忙的 就等待 总线空闲了 在进行捕获 经过验证这个方法通信成功率 几乎是没有问题的
QQ475503748