CH32V305FBP6做SPI从机时发送数据最后1bit数据异常

f949b37bf17c8bf8c5967c9ad91c81d.png

SPI模式为mode0,8bit传输,最后一位数据总在clock上升沿就发生跳变了,不是应该在最后一个clock的下降沿才跳变吗?请问这个问题该怎么解决

因为是mode0,即SPI是在clock上升沿传输数据的,但是在传输最后一个字节的时候上升沿刚来MISO就已经发生跳变了,导致master那边采集到的最后1bit数据是跳变后的数据。
还有一个问题就是slave发送数据应该是在MISO引脚上,但是MOSI上也有数据,还望版主解答啊,快被这个SPI逼疯了。


你好,关于第一个问题时钟沿跳变的问题,这是因为SPI作为从机时,为了更快速的将最后一个bit发送完,只保持了半个APB总线的周期的时间。

第二个原因是,主机不发送(MOSI不发送)数据,SCLK就没有时钟,那么从机也就发不出去数据了,SPI全双工通信就是这样规定的。具体还有问题可以邮箱联系我zdg@wch.cn


只有登录才能回复,可以选择微信账号登录