普通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这条路能行不?
谢谢先 :-)
可以先使用Ai8051U实验箱例程“80-SPI-DMA发送-驱动WS2812彩灯”,点亮之后再按自己想法修改
【新提醒】SPI-DMA 驱动 WS2812三基色彩灯@Ai8051U,最多同时驱动2730个,不占CPU时间 - WS2812,点灯,灯带,光立方,DMA-SPI点灯,DMA-PWM点灯,即将推出一线制 国芯技术交流网站 - AI32位8051交流社区
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU的SPI和DMA的能力完全发挥出来,由于采用同步传输,刷屏过程也无需担心被其它中断任务打断,而WS2812完全靠数据超时来锁存刷新数据,单片机在为WS2812推出显示数据时啥也干不了。
APA102C成品的灯带和屏幕产品也非常成熟稳定,使用同步时钟,刷屏更流畅。目前有2020封装和5050等封装可选,一般的场合都比较适用,对成本不敏感的场合,用APA102C要稳定可靠不少。
晓飛飛 发表于 2025-5-29 21:42
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU ...
好主意!
搜了下,似乎没有像WS2812一样,以8个灯珠为一套做成的电子积木 ercircle 发表于 2025-5-29 19:13
可以先使用Ai8051U实验箱例程“80-SPI-DMA发送-驱动WS2812彩灯”,点亮之后再按自己想法修改 ...
感谢指点迷津!
不太想对DMA功能编程。最近上班上成神经病了,脑袋处理不了稍微复杂的编程问题
等我恢复了,再上DMA功能 BeHappy 发表于 2025-5-30 08:18
感谢指点迷津!
不太想对DMA功能编程。最近上班上成神经病了,脑袋处理不了稍微复杂的编程问题
建议上逻辑分析仪看一下时序,2812只要时序满足很容易驱动。 晓飛飛 发表于 2025-5-29 21:42
强烈建议考虑一下APA102C的方案,采用同步双信号驱动,直接兼容SPI总线,虽然成本比WS2812高,但可以把MCU ...
emmm 还是用SPI加DMA,,准备好数据之后,单片机还是该干啥干啥去啊。。为什么说 单片机在为WS2812推出显示数据时啥也干不了 ? _奶咖君_ 发表于 2025-5-30 14:05
emmm 还是用SPI加DMA,,准备好数据之后,单片机还是该干啥干啥去啊。。为什么说 单片机在为WS2812推出显 ...
我想应该是SPI-DMA在发送给数据时,等待SPI-DMA中断这个行为阻塞了程序。
SPI+DMA方式传送数据,相比于非SPI-DMA方式,时间的节省体现在:原本需要发生并处理n次SPI中断,而SPI+DMA方式仅需要处理一次SPI-DMA中断 BeHappy 发表于 2025-5-30 15:43
我想应该是SPI-DMA在发送给数据时,等待SPI-DMA中断这个行为阻塞了程序。
SPI+DMA方式传送数据,相比于非 ...
为什么要等待中断?{:yiwen:}顶多是发送数据之前查询一下发送完成标志。。
不过我又看了一眼问题,,楼主说的是不用DMA传送。那层主说的确实是有道理的。