stm32和ws2812B相对较好的方案。SPI和UART

2019-12-09 19:12发布

最近看不少人玩ws2812b。我搜了一下找到个比较好的。
这个程序是spi+dma的,我修改了下在F030F4上面跑着挺好。大概的意思是E表示1。8表示0。一个字节处理两位。

我想了一下UART+DMA,没有时间做。如果用UART,设置到2.4M,每个位400nS(spec.: 250-550),  反转一下,每三位处理一个bit,高高低表示1(800+400),低低高表示0(800+400)。 这样start+76位,543,210,总共一个字节处理3个位,停止位因为反转了就是低电平,间隔时间不足50uS,应该没影响。
如此,每24/3=8个字节处理一个灯,比SPI的12个字节更少。个位有什么看法。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
36条回答
ljx289
1楼-- · 2019-12-11 19:05
stm32的io需要电平转换吗?ws2812是5V的,要3.5V才算高。我现在是把ws2812的vcc通过5V串1N4007后将为4.3V。你们是怎么做啊?
gmyu
2楼-- · 2019-12-11 19:14
3.5才算高? 我直接连的。正常。
ljx289
3楼-- · 2019-12-11 20:03
资料上写的是0.7倍的VCC才是高电平的啊吧?
LiLi-Long
4楼-- · 2019-12-11 20:50
 精彩回答 2  元偷偷看……
weatt123456789
5楼-- · 2019-12-11 22:22
Eiman 发表于 2018-8-15 15:38
uart还是比较复杂的吧,有校验位停止位什么的,还是PWM+DMA最直接明了。

我用stc的PWM好像有点搞不定,好像30M情况下,37个周器,进中断再处理就超过了
Eiman
6楼-- · 2019-12-12 03:43
weatt123456789 发表于 2018-10-30 03:53
我用stc的PWM好像有点搞不定,好像30M情况下,37个周器,进中断再处理就超过了 ...

所以用DMA处理就简单些

一周热门 更多>