找回密码
 立即注册
查看: 147|回复: 7

普通的硬件SPI传输大量数据时,慎重选用中断方式!

[复制链接]
  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-11-02 09:52:28
已绑定手机

3

主题

13

回帖

103

积分

注册会员

积分
103
发表于 2025-10-19 18:05:52 | 显示全部楼层 |阅读模式
如题,最近在使用Ai8H8K64U开发一块数控小板,在功能基本完成后,优化中无意发现:
把SPI的中断方式屏蔽掉,只用单纯的查询方式,效率竟然提高了20%左右。

其实计算一下大概也可以得出结果。中断方式每发送一个字节就中断一次,中断的CPU消耗就非常严重了。
按24M主频算,SPI的频率采用4分频,大概就是6MHz。发送一个字节8位加硬件准备大概最低也要9个时钟,就是9/6M=1.5us左右。
每次中断CPU都要把当前的相关寄存器入栈出栈,消耗相当厉害。模式改用后,纯硬件的SPI刷320X240的屏幕,肉眼可见的快了不少。



回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:228
  • 最近打卡:2025-11-04 00:10:42

792

主题

1万

回帖

2万

积分

管理员

积分
20163
发表于 2025-10-19 18:48:55 | 显示全部楼层
DMA-SPI


截图202510191848529161.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-11-02 09:52:28
已绑定手机

3

主题

13

回帖

103

积分

注册会员

积分
103
发表于 2025-10-19 21:06:16 | 显示全部楼层

前面已经发文评论过DMASPI了,对于需要CPU准备数据的DMASPI,在8位芯片中(DMASPI一次最多只能传输256字节)完全没有优势可言。粗略测试了采用查询式硬件SPI比DMASPI还快。
具体原因是8位机在采用双缓冲时带来的代码量增加所耗费的CPU时间已经完全覆盖了DMASPI的优势。具体的可以自己写段双缓冲代码并对照相应的汇编机器码就知道指令增加多少,消耗多少CPU时间了。我在上次发贴中的双缓冲代码自认已经是最简化的代码了,但测试得到的结果却不理想。结果是256个字节经SPIDMA发送完,CPU这边只准备了0x70个字节。当然这个可以通过不断提升主频来抹平CPU的数据准备时间和DMASPI间的差距,但随之带来的功耗和稳定性也不得不考虑。

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-11-02 09:52:28
已绑定手机

3

主题

13

回帖

103

积分

注册会员

积分
103
发表于 2025-10-19 21:18:53 | 显示全部楼层
个人认为:需要CPU来准备数据(检查缓冲区并把数据放XDATA中的缓冲区中)的DMASPI,在8位机中有点鸡肋。除非是无需CPU准备数据的情况另论。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:228
  • 最近打卡:2025-11-04 00:10:42

792

主题

1万

回帖

2万

积分

管理员

积分
20163
发表于 2025-10-19 21:53:47 | 显示全部楼层
截图202510192154367038.jpg

截图202510192152598005.jpg


截图202510192153423870.jpg
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-11-02 09:52:28
已绑定手机

3

主题

13

回帖

103

积分

注册会员

积分
103
发表于 2025-10-20 08:27:11 | 显示全部楼层

你这个统计表只是单纯统计DMA的中断服务程序的CPU占比,没有统计对比非DMA的,也没有统计引入双缓冲所带来的指令增长对应的CPU消耗。应该做个双方对比,并统计引入双缓冲的前后性能对比,这样更有说服力。
纯粹的自己与自己比,看不出问题,也说明不了问题。只有前后对比才有说服力。

回复

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:11
  • 最近打卡:2025-11-02 09:52:28
已绑定手机

3

主题

13

回帖

103

积分

注册会员

积分
103
发表于 2025-10-20 08:29:46 | 显示全部楼层
打个比方,就像公司的报表报告今年利润同比增长了100%,但却不提去年同期是亏损的。所以只要今年不亏就已经是增长了。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:228
  • 最近打卡:2025-11-04 00:10:42

792

主题

1万

回帖

2万

积分

管理员

积分
20163
发表于 2025-10-20 11:12:23 | 显示全部楼层
外设配置好后,只需要考虑,
DMA中断服务程序占用 CPU的时间比率
如 缓冲区是 256字节时, 0.262% :

截图202510201111266300.jpg

回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-11-4 13:15 , Processed in 0.116397 second(s), 83 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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