BeHappy 发表于 2025-5-29 18:32:28

普通SPI外设能否点亮WS2812 | 可以

问题描述:


以8051U为平台,mcu频率设置为25.6MHz,使用SPI外设的普通模式(没有使用高速,没有使用DMA传送),能点亮一颗WS2812吗?
在本论坛看了许多帖子后,我是这样想的:
25.6MHz的mcu频率,SPI的输入时钟经4分频,成为6.4MHz。那么,1 / 6.4MHz = 0.15625 us。SPI传送0xfc和0xc0分别表示WS2812的一个bit位‘1’和‘0’.似乎也可以。
就这样做了,实验效果未达预期,实在是不解。

想请教下,单纯的提高mcu频率和使用普通SPI模式,点亮WS2812这条路能行不?
谢谢先 :-)

ercircle 发表于 2025-5-29 19:13:34

可以先使用Ai8051U实验箱例程“80-SPI-DMA发送-驱动WS2812彩灯”,点亮之后再按自己想法修改

神农鼎 发表于 2025-5-29 21:28:10



【新提醒】SPI-DMA 驱动 WS2812三基色彩灯@Ai8051U,最多同时驱动2730个,不占CPU时间 - WS2812,点灯,灯带,光立方,DMA-SPI点灯,DMA-PWM点灯,即将推出一线制 国芯技术交流网站 - AI32位8051交流社区

晓飛飛 发表于 2025-5-29 21:42:02

强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU的SPI和DMA的能力完全发挥出来,由于采用同步传输,刷屏过程也无需担心被其它中断任务打断,而WS2812完全靠数据超时来锁存刷新数据,单片机在为WS2812推出显示数据时啥也干不了。
APA102C成品的灯带和屏幕产品也非常成熟稳定,使用同步时钟,刷屏更流畅。目前有2020封装和5050等封装可选,一般的场合都比较适用,对成本不敏感的场合,用APA102C要稳定可靠不少。

BeHappy 发表于 2025-5-30 08:16:13

晓飛飛 发表于 2025-5-29 21:42
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU ...

好主意!
搜了下,似乎没有像WS2812一样,以8个灯珠为一套做成的电子积木

BeHappy 发表于 2025-5-30 08:18:54

ercircle 发表于 2025-5-29 19:13
可以先使用Ai8051U实验箱例程“80-SPI-DMA发送-驱动WS2812彩灯”,点亮之后再按自己想法修改 ...

感谢指点迷津!

不太想对DMA功能编程。最近上班上成神经病了,脑袋处理不了稍微复杂的编程问题
等我恢复了,再上DMA功能

21cnsound 发表于 2025-5-30 09:29:58

BeHappy 发表于 2025-5-30 08:18
感谢指点迷津!

不太想对DMA功能编程。最近上班上成神经病了,脑袋处理不了稍微复杂的编程问题


建议上逻辑分析仪看一下时序,2812只要时序满足很容易驱动。

_奶咖君_ 发表于 2025-5-30 14:05:00

晓飛飛 发表于 2025-5-29 21:42
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU ...

emmm 还是用SPI加DMA,,准备好数据之后,单片机还是该干啥干啥去啊。。为什么说 单片机在为WS2812推出显示数据时啥也干不了 ?

BeHappy 发表于 2025-5-30 15:43:37

_奶咖君_ 发表于 2025-5-30 14:05
emmm 还是用SPI加DMA,,准备好数据之后,单片机还是该干啥干啥去啊。。为什么说 单片机在为WS2812推出显 ...

我想应该是SPI-DMA在发送给数据时,等待SPI-DMA中断这个行为阻塞了程序。
SPI+DMA方式传送数据,相比于非SPI-DMA方式,时间的节省体现在:原本需要发生并处理n次SPI中断,而SPI+DMA方式仅需要处理一次SPI-DMA中断

_奶咖君_ 发表于 2025-5-30 15:52:48

BeHappy 发表于 2025-5-30 15:43
我想应该是SPI-DMA在发送给数据时,等待SPI-DMA中断这个行为阻塞了程序。
SPI+DMA方式传送数据,相比于非 ...

为什么要等待中断?{:yiwen:}顶多是发送数据之前查询一下发送完成标志。。

不过我又看了一眼问题,,楼主说的是不用DMA传送。那层主说的确实是有道理的。
页: [1] 2 3 4
查看完整版本: 普通SPI外设能否点亮WS2812 | 可以