CH32V203K的SPI 在DMA时 144MHz 采用 16分频 = 9MHz时 会出现读数据偶尔读数据通道 TC标志不置位情况

我们项目准备用CH32V203K替换目前的GD32E230K以得到更好的性能。

目前遇到一个尴尬问题:我们是采用查询方式判断DMA完成并在完成后开启下一次传输。目前发现偶尔会遇到读操作的Transfer Complete标志不置位的情况。我们设置的系统频率为144MHz,这种情况在使用16分频=9MHz或更快的时候出现,如果设置为32分频=4.5MHz时候则不会出现。感觉好像有点问题。为了Pin to Pin替换,我们采用的SPI1的Remap,用PB3,PB4,PB5作为SPI管脚。


我们的循环判断代码如下:

image.png

您好,读操作的传输完成标志不置位,仅是通道2会出现不置位的情况么还是通道2、3都会出现这种情况,如何判断的,可以使用DMA中断试一下,在中断函数中读该标志位进行判断操作或者while循环中分开判断操作试一下。此外清除标志位的时候仅清除TC标志位就好了。后续沟通可邮箱(lzs@wch.cn)具体沟通一下,或把工程发我具体看一下。


只有通道2有问题,通道3的发送完成TC一直可以正常置位,判断见上面代码片段的判断部分


您好,我的意思是代码部分的if判断语句是进行的与运算,两个有一个不成立都不会执行该语句。可以分开判断试一下,此外清除标志位的时候清除对应的TC标志位即可。或者你使用DMA中断,在中断函数中进行操作试一下。若方便可以把工程发过来具体看一下。


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