找回密码
 立即注册
查看: 367|回复: 3

32G12K128芯片USART设置成SPI模式问题

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-10-23 20:16:19

4

主题

4

回帖

40

积分

新手上路

积分
40
发表于 2024-10-23 21:19:48 | 显示全部楼层 |阅读模式
我用32G12K128芯片做同步通信。原来打算用该芯片的内部现有的SPI外设,因为速度要求原因,不能用中断方式进行多字节通信,而是用DMA_SPI,发现这种方式,字节间隔也有约600nS,一组数据发完后,发生DMA_SPI中断,中断响应时间也有快1us,这对于我的快速通信来说是承受不了的,快有20多个指令周期了,我只能放弃。于是我改用USART来设置成SPI模式,用这个模式后字节间隔约为400nS,一组数据发完后,发送中断的响应时间也只有约400nS。中断响应变快,我估计是发送中断的发生时间点,是在把数据放入到发送缓冲区后就触发,而SPI是在数据的比特流发完后触发,也就是说USART发送的触发时间点提前,是造成“中断响应变快”的原因所在。USART设置成SPI模式后,又带来新的问题,就是在设置速率时,有些速率一个字节都发不出去,有些速率能发送数据,但未能全部发送,而又有些速率,是可以发送,也能全部发送,但速率又不符合我的要求。如果改变输出脚的位置,情况又会发生变化,而且USART1与USART2的表现也不一样。我换了一片芯片情况依旧!所以我想来问问大家,你们有没有遇到过这个问题?怎么解决?是芯片的缺陷还是我买到的是beta版的问题?也请厂方验证指导,谢谢!我芯片的主频是35MHZ,把主频降下来后,情况并没有改善,也就是说跟主频无关。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2059

回帖

7070

积分

论坛元老

积分
7070
发表于 2024-10-24 09:35:08 | 显示全部楼层
硬件SPI+DMA发送数据,开启高速SPI的FIFO模式使能,并减少高速SPI的HOLD时间与SETUP时间,可减少间隔时间。
这些参数对普通SPI+DAM通信也是有效的。(可减小到200ns左右)
截图202410240932176126.jpg
使能FIFOEN情况下,HSSPI_CFG2[5]设置为1(HSSPIEN使能),SPI+DMA才能正常读取。

此外,不用接收的话关闭 ACT_RX 能减少几十ns的间隔时间。
截图202410240934107981.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:444
  • 最近打卡:2025-06-16 09:26:42
已绑定手机

39

主题

2059

回帖

7070

积分

论坛元老

积分
7070
发表于 2024-10-24 09:43:03 | 显示全部楼层
USART-SPI+DMA应用可参考32G实验箱例程包例子:“77-USART1复用SPI_使用DMA和寄存器方式访问Flash例程”
官网下载地址:https://www.stcai.com/syx
截图202410240942328954.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:1
  • 最近打卡:2024-10-23 20:16:19

4

主题

4

回帖

40

积分

新手上路

积分
40
发表于 2024-10-24 22:55:19 | 显示全部楼层
乘风老师好!首先感谢您的及时答复。今天根据您的指导我再一次进行了验证。第一,我把USART设置成SPI模式,就是在您后面一条回复的例程里做参考的,不然我还设置不好。第二,您说的,当SPI在高速应用时,要对三个高速寄存器进行设置,我对比了一下,字节间隔只小了50nS,没有大幅度减小。第三,今天再做了一下记录,USART的SPI模式,从哪个脚输出,好坏不受影响,我昨天不知道是怎么回事,应该当时都搞糊涂了,今天仔细的做了记录,才发现没有影响的。第四,对USART1来说,速率在0(1/4时钟)、3(1/2时钟)时SCLK时钟输出正常,1(1/8时钟)、2(1/16时钟)时一个字节都没有发出去。对USART2来说,速率在0(1/4时钟)、1(1/8时钟)、2(1/16时钟)时一个字节都没有发出去,在3(1/2时钟)时SCLK时钟输出正常。也就是说高速时钟时有输出,低速时时钟反而没有输出了。其它设置都没有变化,说明其它设置应该不会有问题。否则都没有输出或都正常了,而且二个口的情况还不一样。总的来说,一是这款芯片的中断延时过大,所以无论用中断模式还是DMA模式,都无法使字节间隔调得较小,这个在高速应用及精确控制时,矛盾尤为突出,二是USART的同步模式(SPI模式)应该是有缺陷,因为用的人少,所以不太被引起重视。如果我说的有错误,希望得到大家的指正。再次谢谢大家!特别是乘风老师。
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-16 16:26 , Processed in 0.372796 second(s), 68 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表