找回密码
 立即注册
楼主: 梁工

SPI-DMA输出控制WS2812三基色彩灯程序@8H系列/32G系列,不加反相器, CPU休息

  [复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-01 10:33:38
已绑定手机

9

主题

70

回帖

2539

积分

荣誉版主

电子技术分享

积分
2539
发表于 2024-1-11 23:10:10 | 显示全部楼层
梁*** 发表于 2024-1-11 21:48
使用各种核心板,一定要注意看电路原理图和PCB,是否焊有零件影响测试。 ...

是的,所以在这里提个醒
电子类短视频UP,微信:17199910203 抖音、快手、B站:电子电工单片机  欢迎各位朋友添加好友,交流学习,一起进步
B站视频-点击可看
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:54
  • 最近打卡:2025-05-01 09:07:55

717

主题

1万

回帖

1万

积分

管理员

积分
15609
发表于 2024-1-12 07:54:10 | 显示全部楼层
感谢提醒大家 MCU 软件开发,也要看原理图
回复 支持 反对

使用道具 举报 送花

0

主题

11

回帖

98

积分

注册会员

积分
98
发表于 2024-1-14 12:04:00 | 显示全部楼层
本帖最后由 大补洞 于 2024-1-14 12:49 编辑

请教老师一个问题:
使用用8H4K64TL,当时运行DMA发送WS2812数据时,无论是否开启DMA中断(最低优先级),时间都会慢50%,而我关闭105行的代码后,时间又正常了。
时钟设置是1毫秒中断一次,最高优先级。T0Count变量是16位,t0变量是8位,运算并不会占用太多时间。


期待老师答疑,谢谢!


补充一点,当设置成间隔20毫秒或以上才运行DMA的话,时间就正常了,很疑惑,这为什么能影响时钟中断。
QQ截图20240114115827.png

点评

不知道你的SPI数据是多少字节。 WS2812的数据率为800Kbit/S,即100KB/S,也就是10us一个字节,你1ms启动一次SPI-DMA,则最多可以发送100个字节(时间要少于100字节,因为装载处理需要时间),一个灯需要12个字节,所  详情 回复 发表于 2024-1-14 14:41
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-1-14 14:41:42 | 显示全部楼层
大*** 发表于 2024-1-14 12:04
请教老师一个问题:
使用用8H4K64TL,当时运行DMA发送WS2812数据时,无论是否开启DMA中断(最低优先级), ...

不知道你的SPI数据是多少字节。
WS2812的数据率为800Kbit/S,即100KB/S,也就是10us一个字节,你1ms启动一次SPI-DMA,则最多可以发送100个字节(时间要少于100字节,因为装载处理需要时间),一个灯需要12个字节,所以你1ms启动一次DMA,做多可以8个灯,甚至更少才会正常。
这就是你为什么用20ms间隔就正常了的原因。
回复 支持 反对

使用道具 举报 送花

0

主题

11

回帖

98

积分

注册会员

积分
98
发表于 2024-1-14 16:47:50 来自手机 | 显示全部楼层
梁工 发表于 2024-1-14 14:41
不知道你的SPI数据是多少字节。
WS2812的数据率为800Kbit/S,即100KB/S,也就是10us一个字节,你1ms启动 ...

总共200个LED灯。我是这么想的,因为dma的优先级比时钟中断低,如果ws2812字节太多的话,不是应该LED显示不正常,而时钟保证准确吗?现在反倒是LED正常,时钟不正常了

点评

不知道你说的时钟是指的什么时钟? 200个灯2400个字节,分10次发送,一次240字节,耗时6ms,所以你要间隔8ms或以上才会正常。你1ms就启动一次DMA,才发了1/6数据有启动,并且你说能正常,这个我没法想象。  详情 回复 发表于 2024-1-14 17:19
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-1-14 17:19:35 | 显示全部楼层
大*** 发表于 2024-1-14 16:47
总共200个LED灯。我是这么想的,因为dma的优先级比时钟中断低,如果ws2812字节太多的话,不是应该LED显示 ...

不知道你说的时钟是指的什么时钟?
200个灯2400个字节,分10次发送,一次240字节,耗时6ms,所以你要间隔8ms或以上才会正常。你1ms就启动一次DMA,才发了1/6数据有启动,并且你说能正常,这个我没法想象。
回复 支持 反对

使用道具 举报 送花

0

主题

11

回帖

98

积分

注册会员

积分
98
发表于 2024-1-15 14:41:59 来自手机 | 显示全部楼层
梁工 发表于 2024-1-14 17:19
不知道你说的时钟是指的什么时钟?
200个灯2400个字节,分10次发送,一次240字节,耗时6ms,所以你要间隔 ...

是15ms启动一次dma,1ms启动一次定时器计时

点评

哦,没留意还有一个模15的条件。 按理,15ms启动一次,传输值需要6ms,不会有问题的。并且DMA中断耗时是us级别的,不会明显影响你别的定时。  详情 回复 发表于 2024-1-15 15:40
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:50
  • 最近打卡:2025-04-30 22:59:03

73

主题

5882

回帖

1万

积分

超级版主

积分
12073
发表于 2024-1-15 15:40:08 | 显示全部楼层
大*** 发表于 2024-1-15 14:41
是15ms启动一次dma,1ms启动一次定时器计时

哦,没留意还有一个模15的条件。
按理,15ms启动一次,传输值需要6ms,不会有问题的。并且DMA中断耗时是us级别的,不会明显影响你别的定时。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:520
  • 最近打卡:2025-05-01 08:06:21

109

主题

1897

回帖

5204

积分

论坛元老

积分
5204
发表于 2024-1-25 20:44:58 | 显示全部楼层
不错!有空试一下。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:467
  • 最近打卡:2025-05-01 10:33:38
已绑定手机

9

主题

70

回帖

2539

积分

荣誉版主

电子技术分享

积分
2539
发表于 2024-1-26 19:31:09 | 显示全部楼层
SPI DMA 输出控制WS2812三基色彩灯

转接板,直接插在开天斧上,4个位置全部引出,接线方便整洁,快速测试学习
分享电子知识助力电子爱好者
[url=【#单片机 #助力电子爱好者 #灯带套件用心设计,助力教学,让你学电子更加容易,赶紧动手来学吧!】 https://www.bilibili.com/video/B ... 663c6493e23ad5c8c0a]
视频演示效果《《点击[/url]


截图202401261927253028.jpg

电子类短视频UP,微信:17199910203 抖音、快手、B站:电子电工单片机  欢迎各位朋友添加好友,交流学习,一起进步
B站视频-点击可看
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-1 19:12 , Processed in 0.128317 second(s), 118 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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