打印
[活动专区]

【AT-START-WB415测评】PWM+DMA驱动WS2812B

[复制链接]
2984|32
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
WS2812B是市面上非常常用的RGB幻彩LED,WS2812B特性如下:
       驱动WS2812B常用的方式有SPI、PWM、GPIO模拟PWM等方式。由于WS2812B对时序要求比较严格且时间精度较高(纳秒级),这3种方式各有各的缺点,SPI占用管脚多,PWM每个周期的控制比较困难,GPIO模拟PWM时序容易被干扰。因此,需要使用响应快,效率高的方式解决上述问题。然而,DMA就是解决上述问题的很好办法,DMA不需要CU干预即可执行指定的操作。所以,我在WB415上使用的是PWM+DMA实现了对WS2812B的精准控制,高效的实现了WS2812B各种显示效果。
       接下来我们看看具体的实现方法
因为tmr5的时钟为144M,所以800K对应的周期值为180,而WS2812B对应的0和1码对应占空比的值分别为如下
输出频率为800K时,对应0码的高电平为350ns,0码的低电平为900ns
接下来我们看一下灯珠初始化函数,理解一下WS2812B的数据格式
每个灯珠的数据由24bit组成,分为8bitG; 8bit R; 8bit B.所以函数内有2个循环,一个循环为灯珠数,一个循环为bit数。在初始化时为熄灭状态,所以,所有的bit均需要复值为0码。这样操作完,显示状态的数组就配置完了。接下来我们再来看一下PWM输出控制的函数
在中断模式下会涉及到DMA传输完中断和定时器溢出中断,相关说明如下:
至此,使用PWM+DMA控制WS2812B的基本操作就完成了,至于显示效果的函数,请到源码文件内查看,在此就不再多说了,我会附上源码,有需要的可以自己看一下。
源码.zip (5.48 KB)
@21ic大掌柜   @21ic小管家

使用特权

评论回复
沙发
earlmax| | 2022-8-20 14:04 | 只看该作者
spi可以直接操作。   

使用特权

评论回复
板凳
6552918|  楼主 | 2022-8-20 14:12 | 只看该作者
earlmax 发表于 2022-8-20 14:04
spi可以直接操作。

管脚占用的多

使用特权

评论回复
地板
juliestephen| | 2022-8-20 19:29 | 只看该作者
PWM+DMA怎么实现的?  

使用特权

评论回复
5
6552918|  楼主 | 2022-8-20 20:22 | 只看该作者
juliestephen 发表于 2022-8-20 19:29
PWM+DMA怎么实现的?

仔细看一下帖子,里面有源码

使用特权

评论回复
6
wangdezhi| | 2022-8-20 20:29 | 只看该作者
需要建立数组吗  

使用特权

评论回复
7
6552918|  楼主 | 2022-8-20 20:35 | 只看该作者

看怎么点灯,如果不要幻彩显示,可以不用建立数组,要幻彩效果就要建立数组了,不然没法出效果

使用特权

评论回复
8
quickman| | 2022-8-20 20:55 | 只看该作者
WS2812B的性能还可以吗  

使用特权

评论回复
9
6552918|  楼主 | 2022-8-20 21:01 | 只看该作者
quickman 发表于 2022-8-20 20:55
WS2812B的性能还可以吗

当然可以,效果非常好

使用特权

评论回复
10
cooldog123pp| | 2022-8-21 10:22 | 只看该作者
写的很详细,标准文档,下载途径都做好,大家用的时候去找即可,还是感谢楼主。

使用特权

评论回复
11
tpgf| | 2022-9-8 11:46 | 只看该作者
这种控制方式极为灵活

使用特权

评论回复
12
晓伍| | 2022-9-8 11:52 | 只看该作者
WS2812B的性能还是很不错的

使用特权

评论回复
13
八层楼| | 2022-9-8 12:01 | 只看该作者
就是使用的引脚多了点

使用特权

评论回复
14
观海| | 2022-9-8 12:15 | 只看该作者
到底是io控制还是通讯控制啊

使用特权

评论回复
15
guanjiaer| | 2022-9-8 12:52 | 只看该作者
能发一下硬件连接图吗

使用特权

评论回复
16
6552918|  楼主 | 2022-9-8 13:16 | 只看该作者
guanjiaer 发表于 2022-9-8 12:52
能发一下硬件连接图吗

WS2812B就一个VCC GND 和DIN,没啥复杂的

使用特权

评论回复
17
heimaojingzhang| | 2022-9-8 13:18 | 只看该作者
引脚数目和需要控制的led数目有关是吧

使用特权

评论回复
18
6552918|  楼主 | 2022-9-8 13:32 | 只看该作者
heimaojingzhang 发表于 2022-9-8 13:18
引脚数目和需要控制的led数目有关是吧

基本没关系,灯珠都是串行级联的,若果灯珠实在太多,再多用几个PWM就行了

使用特权

评论回复
19
joyall| | 2022-9-9 08:54 | 只看该作者
不错,灯珠数量不多时用起来挺好,灯珠数量多了就太占内存了。

使用特权

评论回复
20
6552918|  楼主 | 2022-9-9 09:15 | 只看该作者
joyall 发表于 2022-9-9 08:54
不错,灯珠数量不多时用起来挺好,灯珠数量多了就太占内存了。

是的,是一种空间换时间的方式

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:北京汇冠触摸技术有限公司/电子工程师
简介:电子工程师,嵌入式应用爱好者。

102

主题

1235

帖子

6

粉丝