找回密码
 立即注册
查看: 81|回复: 8

散碎的读写(IIC和SPI)等待好像没法解放CPU,请RTOS来也没救?!

[复制链接]
  • 打卡等级:偶尔看看II
  • 打卡总天数:23
  • 最近打卡:2025-06-12 11:39:43
已绑定手机

38

主题

295

回帖

884

积分

高级会员

积分
884
发表于 5 天前 来自手机 | 显示全部楼层 |阅读模式
老觉得通信时候的死等浪费CPU,就专门捣鼓了一阵把RTX51玩会了,想用它在死等的时候oswait也下释放CPU时间。
就以硬件IIC写12864来说,每次写一个字节等待这个时间加起来其实很可观的,我大概跑了一下,STC8H8K64U@40M刷一屏12864OLED(IIC速度拉满,再快就花屏了)等待的时间,足够让一个int累加10000多次!
但每次等待的时间又太短了,太散碎了,RTOS每次去发信号响应信号之类的估计就给它磨过去了,反而起不到优化作用。
我用RTX51尝试利用SPI写完每个字节的等待时间,具体的,硬件SPI写FLASH,中断模式,写完一个字节oswait一个来自spi中断的一个信号量,结果发现这么搞比原来更慢了。。。
估计是时间太散了太碎了利用不起来
但如果256个字节凑一起DMA,把等待的时间合起来,让os去等DMA中断的信号量,就能其明显优化作用(写FLASH其实真没那么占CPU,只不过以前都死等了,一写盘CPU可不得百分百榨干了)
那问题来了,我的是stc8h,iic好像没有DMA吧,那。。。至少IIC时候的CPU时间是不是就解放不了
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2389

回帖

6012

积分

版主

积分
6012
发表于 4 天前 | 显示全部楼层
_NC*** 发表于 2025-6-11 22:40
这个现象对吗?我感觉怪怪的,让我感觉RTX51响应仿佛也没那么迅速,,,

可以使用基于状态机的协程,这个时候两个任务之间的切换基本只需要一个if的时间。
相比使用rtx51来说,切换线程消耗的资源就会更少。
具体可以看:
https://www.stcaimcu.com/thread-16598-1-1.html
截图202506120854398479.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:499
  • 最近打卡:2025-06-16 10:06:31
已绑定手机
已实名认证

112

主题

2389

回帖

6012

积分

版主

积分
6012
发表于 4 天前 | 显示全部楼层
或者你可以写一套基于iic或者spi中断的操作缓冲池,
将需要的操作提前存在一个数组中,
每次产生中断就清除中断标志并进行下一步的状态,
这样也可以避免死等spi或i2c的wait,
相比之下更高效,且不会太多的占用cpu时间
回复 支持 反对

使用道具 举报 送花

3

主题

727

回帖

165

积分

等待验证会员

积分
165
发表于 5 天前 | 显示全部楼层
在计算机处理器的性能优化中,DMA(数据通道管理)是一种非常关键的技术,能够显著提高CPU的利用率。然而,DMA技术在某些处理器(如STC8H8K64U的IIC架构)中并未直接支持,这使得在无法实现DMA的情况下,如何在IIC中优化CPU时间成为了一个挑战。然而,通过重新设计IIC或采用其他技术手段,可以实现对CPU的进一步释放。

1. DMA的优势
DMA技术能够将多个数据块直接同步到内存,从而大幅提升了CPU的利用率。例如,通过DMA,CPU可以在多个数据块的同步完成时释放CPU时间,从而显著提升整体性能。即使在IIC架构中,DMA技术的引入能够显著提升CPU的效率。

2. IIC架构的优化
STC8H8K64U的IIC架构是基于STC8的,它采用了简单的数据通道(IIC)来实现数据传输。虽然IIC架构本身设计较为简单,但其数据通道的效率仍然可以达到相当高的水平。如果能够通过重新设计IIC,使其更高效地利用数据通道,那么在无法使用DMA的情况下,仍可以通过DMA技术进一步提升CPU的利用率。

3. 在IIC中实现DMA
尽管IIC架构本身没有DMA,但在某些情况下,可以尝试将IIC的部分功能与DMA技术结合使用。例如,通过将某些数据块的处理方式与DMA协同工作,可以实现更高的CPU利用率。这种方法需要对IIC架构有一定的理解,并进行相应的优化设计。

4. 如何在IIC中优化CPU时间
在IIC架构中,CPU的利用率主要取决于数据通道的效率和数据传输的速度。如果能够通过优化数据通道的性能,或者通过重新设计IIC以减少数据传输的时间,那么CPU的利用率也会相应提高。例如,可以通过减少数据传输的延迟,或者优化数据通道的接口,来提升整体性能。

5. 总结
虽然DMA技术在IIC架构中没有直接支持,但在某些情况下,通过重新设计IIC或采用其他技术手段,可以实现对CPU的进一步优化。通过优化IIC的结构和数据传输效率,可以显著提升CPU的利用率,从而释放CPU时间。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

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

38

主题

295

回帖

884

积分

高级会员

积分
884
发表于 5 天前 来自手机 | 显示全部楼层
以后我还是少用阻塞DELAY罢,确实让CPU白干活
回复 支持 反对

使用道具 举报 送花

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

38

主题

295

回帖

884

积分

高级会员

积分
884
发表于 5 天前 来自手机 | 显示全部楼层
这个现象对吗?我感觉怪怪的,让我感觉RTX51响应仿佛也没那么迅速,,,

点评

可以使用基于状态机的协程,这个时候两个任务之间的切换基本只需要一个if的时间。 相比使用rtx51来说,切换线程消耗的资源就会更少。 具体可以看:https://www.stcaimcu.com/thread-16598-1-1.html  详情 回复 发表于 4 天前
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:99
  • 最近打卡:2025-06-16 09:28:47

733

主题

1万

回帖

1万

积分

管理员

积分
16623
发表于 5 天前 | 显示全部楼层
管脚兼容的 STC32G12K128, DMA支持 I2C
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-06-16 07:06:57
已绑定手机

79

主题

5131

回帖

9138

积分

超级版主

DebugLab

积分
9138
发表于 4 天前 | 显示全部楼层
尽量不要使用软件延时
可以使用DMA,注意LCM DMA数据地址需要4字节对齐
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:533
  • 最近打卡:2025-06-16 00:19:39

1

主题

118

回帖

1905

积分

金牌会员

积分
1905
发表于 4 天前 | 显示全部楼层
楼主说的确实是个问题值得思考
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-6-16 10:30 , Processed in 0.160186 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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