SPI传输问题

我们最近使用CH32V305的SPI遇到一点问题,请教一下如何解决。

一、CH32V305作为Master

1. NSS设为硬件模式,主循环中查询发送,NSS无电平变化;

image.png

image.png

主循环查询收发

image.png

主机连续发送0xA5,从机发送0x5A,多次发送后数据出错

从机收到的数据:

image.png

主机收到的数据:

image.png

示波器抓信号,NSS无电平变化,一直是低电平:

image.png

2. NSS脚设为IO口,发送时拉低,收到数据后拉高:

image.png

image.png

现象和1一样,但是NSS有反应,但是没有持续拉低,见下图:

image.png

放中断里也是类似的现象

3. 主循环查询发送,中断接收,NSS波形正常,收发数据正常

image.png

image.png

image.png

CH32V305作为主机,虽然这个状态OK,但是实际上还是有点问题的,从机的CPHA0,主机要设置成1才能正常收到数据,但是主机无论CPHA0还是1收数据都是OK的,而且目前最高速度只能设置成32分频,再快传输就会出错。

image.png

从下图波形中可以看出,从机是在下降沿,即第一个边沿去拉MISO,但是主机这边按照第一个边沿去读就始终是错误的数据,没办法只能从第二个边沿去读数据才正常。

image.png

CH32V305作为主机有极性问题和传输速率问题,那如果设置成从机会不会有问题呢?

二、 CH32V305作为Slave

CLK3.3MHz,也是查询发送,中断接收,主机连续发送256个字节的数据,数据详见下图,从机一直发送0xA5

image.png

第一包数据主从机收到的前面几个字节是错误的。

image.png

image.png

第二包数据开始正常,但是连续发送多包数据之后数据又出错了

主机接收数据:

image.png

从机接收数据:

image.png

代码配置见下图:

image.png

image.png

image.png

image.png

传输时,隔一段就会出错一次

image.png

主机在传送连续数据是,NSS是一直拉低状态,比如一次性传输256个字节,这256个字节的传输期间,NSS都是低电平,CH32V305是否不支持这种连续数据传输?

三、问题求解

CH32V305作为从机更符合我们的使用场景,所以麻烦帮忙解答一下以下问题:

1.机在传送连续数据是,NSS是一直拉低状态,比如一次性传输256个字节,这256个字节的传输期间,NSS都是低电平,CH32V305是否不支持这种连续数据传输?

2.传输出错可能是什么原因导致的?我们的软件配置有没有问题?如何解决出错的问题?

3.目前高速率传输时,数据传输不稳定,高速率SPI传输下,需要注意哪些地方?



补充一个问题:

4.作为从机,开机第一次传输数据,前面几个字节总是错误的,这个是什么问题导致的?如何解决?


您好,关于你的问题:

1、关于硬件SPI使用硬件NSS片选引脚时,当选择设备拉低之后,无法自动拉高恢复高电平。即数据发送完成后,NSS引脚不会自动拉高,需要通过SPI_SSOutputCmd( SPI1, DISABLE )函数或SPI_Cmd( SPI1, DISABLE )函数关于SPI模块来恢复高电平,如下图,SPI工作过程中一直是低电平的,DISABLE之后拉高。

注意,关闭SPI模块后,NSS引脚也就失去了内部输出控制,此时输出处于悬空状态,引脚电平未知。建议可以加一个上拉电阻,NSS引脚在被释放后会拉高。

当你使用软件片选时,在轮询中拉高拉低,片选拉高拉低是根据程序执行时间来的,根据你截图时间这应该是差不多的。在中断中,这个需要缓冲区为空才进相应的中断,加上数据传输的时间,所以波形查看是在数据完成之后拉高。

关于那个模式问题,正常主从模式配置一致是没有问题的,你可以用附件例程测试一下,或你可主从都设置在模式0或模式2试一下

image.png 

2、根据你截图配置,我测试轮询收发是没有问题的,如下图,主从发的都是A5,具体可参考附件例程。注意保持主从设备之间接线的稳定;

image.png 

3、高速率传输时,主从之间的接线要保持稳定,CLK线之间可并两根地线,主从设备之间可多连几根地线试一下;

4、作为从机,时钟是由主机提供的,可以开机上电同时上电试一下,可能是上电主从不一致导致的,比如从机已开始,但主机还没给从机时钟信号,导致前几个字节传输出错。

附件是我针对上述问题的一个测试验证例程,你可以参考一下,后续问题沟通可通过邮箱(lzs@wch.cn)和我沟通。

icon_rar.gifCH32V305 SPI.zip



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