实现思路

将官方给的例程移值到这个小开发板上即可。

使用SPI通信协议(使用GPIO模拟SPI),注意移植的时候看一下源代码,需要注意改一下底层的IO操作代码即可。

实现过程

复习一下SPI通信协议

SPI工作有四种模式,这里以最常见的CPOL(时钟极性) = 0,CPHA (时钟相位)= 0,进行讨论。

SPI Block Guide V4 (nxp.com)

spi

注意看红色框出的地方,是我们考虑的情况:当出现上升沿的时候进行采样。因此,传输的方式应该是,先改变数据,再出现时钟上升沿。然后,延时再改变时钟为下降沿,进入限一个周期。同时注意,片选信号要保持为低电平

看源代码

原代码就是用的模拟SPI(软件实现的)。

再源代码基础上改变了IO操作的宏定义,暂时没有移植成功。

已经尝试过排查的问题:

  1. IO软件功能正常,通过软件改写IO,并读取IO值,比对成功。没有万用表,引脚电平可能存在问题。
  2. SPI频率排查,在上升沿后加入过1us延迟,初始化过程明显变慢,但是依旧没有反应。

可能有问题的地方:

  1. 估计代码没有问题,出现问题大概率在模块上面,供电还未检查。也可能是模块自身的问题
  2. SPI频率没有彻查,可能频率会超过要求值。