any_014 发表于 2016-3-19 09:45:24

STM32和一个器件进行SPI通讯时,最后一位出错。

主设备是STM32F103,从设备是AD7193模数转换芯片,读取时不对,以下为读的波形的最后几位时对应的SCLK和MOSI波形。
按说芯片应该是SCLK下降沿时MISO改变数据,SCLK上升沿时MISO采样。前边的波形都是这样的,就最后一位,SCLK上升沿时,MISO来了个正跳变。

怀疑是CS片选最后被拉高时,MISO也被拉高了,于是修改了下SPI读写函数,CS被拉低后,延时一段时间,再惊醒SPI读写,SPI读写结束后,延时一段时间CS再拉高。
结果,波形依旧。


power568 发表于 2016-3-21 12:42:50

把CS信号抓出来看看确认片选时序是正确的,另外确认SPI使用的模式是否正确...

any_014 发表于 2016-3-21 16:56:47

power568 发表于 2016-3-21 12:42
把CS信号抓出来看看确认片选时序是正确的,另外确认SPI使用的模式是否正确... ...

CS波形:


MISO波形:


MOSI波形:

power568 发表于 2016-3-22 13:08:23

SPI是标准接口还是模拟时序的?确认使用的SPI是那个模式?

any_014 发表于 2016-3-22 13:55:15

软件模拟SPI的。
页: [1]
查看完整版本: STM32和一个器件进行SPI通讯时,最后一位出错。