找回密码
 立即注册
楼主: eanry

8H8K64U的DMA_SPI比纯硬件SPI没任何速度提升 | 解放 CPU去做其他的事,不会提升SPI

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:587
  • 最近打卡:2025-12-18 12:29:34

9

主题

562

回帖

3807

积分

论坛元老

积分
3807
发表于 2025-10-3 11:04:46 | 显示全部楼层
性能和成本是基本对应的
干什么活就用什么芯片.不同类型芯片不同使用场合没有可比性,DMA要是真没用,费劲开发他干吗.
64位处理器再厉害,我拿它算个8位单字节运算,同样时钟频率下,跟8位处理器比没有任何优势
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-12-17 09:14:11
已绑定手机

5

主题

21

回帖

165

积分

注册会员

积分
165
发表于 2025-10-3 11:58:34 来自手机 | 显示全部楼层
网老四 发表于 2025-10-3 11:04
性能和成本是基本对应的
干什么活就用什么芯片.不同类型芯片不同使用场合没有可比性,DMA要是真没用,费劲开 ...

对,也认同。所以我前面也说了,选型很重要。
但不可否认这款芯片的DMA,如果其他功能的DMA一次最多只能256字节,相对来说就显得很鸡肋。
请仔细阅读我的每个文字,由此至终我并没有说dma没用,别曲解我的意思。
我的意思是说引入双缓冲后相关代码的指令消耗时间已经与dma的快速所抵消了,代码也复杂了,所以鸡肋。
另外我感觉32位芯片在处理8位任务,应该只会游刃有余而不会不胜任或吃力,只是性价比低而矣。
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:587
  • 最近打卡:2025-12-18 12:29:34

9

主题

562

回帖

3807

积分

论坛元老

积分
3807
发表于 2025-10-4 22:22:42 | 显示全部楼层
任何功能都有适用范围,DMA本身好处,并非简单的认为用了它就会有好处.
如果不是需要让cpu干别的事,那么DMA跟CPU直接访问外设没有任何速度上的区别,
DMA仅仅是在CPU能够充分准备好数据以后,不用傻傻等待数据传输完.
如果CPU忙得连数据准备的工作都完不成,任何处理器都不会从DMA上获得好处.

当然如果 是 DMA-P2P, 外设直接送外设,就不用 CPU准备数据
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-12-18 08:51:37

814

主题

1万

回帖

2万

积分

管理员

积分
21314
发表于 2025-10-5 02:08:17 | 显示全部楼层
参照下面管脚兼容的 STC32G12K128的
软件 双缓冲 乒乓 技术,
256字节的 DMA缓冲区,比无限深度的 DMA缓冲区,
只是牺牲 0.26% 的 CPU时间而已。
当然 STC32G12K128的 DMA缓冲区是 8K xdata 深度。
AI8051U的 DMA 缓冲区是 32K xdata 深度,
===还支持 DMA-P2P, 外设直接送外设

截图202510050206175142.jpg

截图202510050205286666.jpg

https://www.stcaimcu.com/data/download/Datasheet/STC32G.pdf


截图202510050212478383.jpg
https://www.stcaimcu.com/data/download/Datasheet/AI8051U.pdf
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-12-18 08:51:37

814

主题

1万

回帖

2万

积分

管理员

积分
21314
发表于 2025-10-5 02:27:31 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:268
  • 最近打卡:2025-12-18 08:51:37

814

主题

1万

回帖

2万

积分

管理员

积分
21314
发表于 2025-10-5 02:50:22 | 显示全部楼层
STC32G144K246-视频级动画效果演示 - 老梁亲测 AI33-ARM 内部平台系列讲座 国芯人工智能技术交流网站 - AI32位8051交流社区

STC32G144K246-LQFP100/64,  刷彩屏的能力
120MHz-CPU, 极限 140MHz
53MHz  以上的 I/O 输出速度,比 AI8051U的 I/O输出快4倍以上
DAC + OP 已验证

AI8051U, 40MHz,  13.5MHz-I/O 速度,@3.3V
320*240, AI8051U 刷彩屏
==》 320*240*2 = 153,600;    28帧/S

480*320, AI8051U 刷彩屏
==》 480*320*2 = 307,200;    14帧/S

800*480, AI8051U 刷彩屏
==》 800*480*2 = 768,000;    5.6帧/S

STC32G144K246-LQFP100/64, 刷彩屏AI8051U的4倍以上的速度
120MHz-CPU, 极限 140MHz
53MHz-I/O 速度,
===>刷彩屏是 AI8051U 4倍的速度

STC32G144K246-LQFP100/64, QSPI-4线读FLASH, DMA-i8080并口-TFT接口 刷彩屏
===4倍AI8051U的 I/O 输出速度
320*240*2 = 153,600;    i8080-8位或16位并口刷彩屏,28帧/S * 4 = 112 /S;   
===改成 SPI-
刷彩屏 要除4 = 28 /S;
480*320*2 = 307,200;    i8080-8位或16位并口刷彩屏,14帧/S * 4 = 56 帧/S;     
===改成
SPI-刷彩屏要除4 = 14 /S;
800*480*2 = 768,000;    i8080-8位或16位并口刷彩屏,5.6帧/S * 4 = 22.4 帧/S;
===改成
SPI-刷彩屏要除4 = 5.6 /S;

1024*600*2 = 1,228,800;    i8080-8位或16位并口刷彩屏
===320*240*2 = 153,600的,28帧/S / 8 / 4 = 3.5 帧/S * 4 = 14 帧/S;

1024*768*2 = 1,572,864;   
i8080-8位或16位并口刷彩屏
===320*240*2 = 153,600的,28帧/S / 10.24 / 4 = 2.73 帧/S * 4 = 11 帧/S;


现在的 STC32G144K246的I/O输出速度实际应在 53MHz ~ 64MHz附近
===正在设计 120MHz 输出速度的 I/O, 将刷屏速度再 * 2
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-11-27 12:33:57

10

主题

73

回帖

1381

积分

金牌会员

积分
1381
发表于 2025-10-24 13:00:13 | 显示全部楼层
我是基于STC32测试的,应该差不多

测试条件:连续发送10个数据


硬件SPI  

8.6us

硬件SPI + DMA

11.56us

硬件SPI + DMA + FIFO

9.42us


光看速度的话直接硬件SPI较快,虽然硬件SPI + DMA + FIFO的方式,SPI每个字节之间间隔时间更短,但要将数据填入xdata中,包间隔缩短的时间,又被操作xdata的时间补回来了
DMA的好处是SPI发送的时候CPU可以去干别的,只看速度比不过硬件之间发


SPI及DMA配置
截图202510241253471342.jpg

截图202510241254312309.jpg


硬件SPI
截图202510241255244140.jpg
截图202510241255491942.jpg


硬件SPI + DMA





截图202510241256184628.jpg
截图202510241257332605.jpg

硬件SPI + DMA + FIFO
截图202510241258063224.jpg













回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-12-17 09:14:11
已绑定手机

5

主题

21

回帖

165

积分

注册会员

积分
165
发表于 2025-10-31 15:01:48 | 显示全部楼层
御坂美*** 发表于 2025-10-24 13:00
我是基于STC32测试的,应该差不多

测试条件:连续发送10个数据

这样实际测试,有数据有对比的最有说服力。
回复

使用道具 举报 送花

  • 打卡等级:常住居民I
  • 打卡总天数:64
  • 最近打卡:2025-12-18 09:32:14
已绑定手机

2

主题

10

回帖

31

积分

新手上路

积分
31
发表于 2025-11-25 09:59:47 | 显示全部楼层
御坂美*** 发表于 2025-10-24 13:00
我是基于STC32测试的,应该差不多

测试条件:连续发送10个数据

在实际使用过程中,你SPI发送数据不可能都发常量,都是写进数组里发送的,你在使用DMA时把数组赋值的时间也算进去,不合理啊。同样的波特率,数据发送速度是相同的,就只有字节之间的间隔时间不同,加DMA+FIFO最快,DMA次之,纯硬件是最慢的
回复

使用道具 举报 送花

  • 打卡等级:偶尔看看II
  • 打卡总天数:20
  • 最近打卡:2025-11-27 12:33:57

10

主题

73

回帖

1381

积分

金牌会员

积分
1381
发表于 2025-11-26 01:36:54 | 显示全部楼层
totryto*** 发表于 2025-11-25 09:59
在实际使用过程中,你SPI发送数据不可能都发常量,都是写进数组里发送的,你在使用DMA时把数组赋值的时间 ...
主要是DAM必须用xdata,操作上更费时间,你单纯以快为目的话,确实快不过硬件SPI直接塞直接发
回复

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-12-18 14:04 , Processed in 0.119087 second(s), 91 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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