WS2812 LED芯片的使用笔记

描述

最接接触了WS2812 LED,相信有不少人都用过。大家对这款彩色LED肯定是又爱又恨,爱的是它使用简单,采用单总线通信方式,节约IO口,而且可以多级串联。而普通的彩色LED不是共阴就是共阳,每个颜色一个引脚,一般都是用PWM驱动,想要控制亮度、颜色就要分别控制每个引脚上的PWM占空比,想要驱动多个LED就更麻烦了。恨的是WSws2812对时序的要求比较高,对低速单片机不太友好。今天我就详细谈一谈WS2812的驱动,以及使用时遇到的一个问题。

拿到一款芯片,第一件事就是找Datasheet。找Datasheet很简单,直接上官网或者上专门的datasheet网站。

其实该LED的控制时序比较简单:

1、数据0、1和Ret码

该时序说名我们该如何传输1、0以及如何结束传输

PWM

2、LED数据

该款LED显示的是24位RGB数据,位顺序如下。传输时高位(G7)先发送,低位(B0)后后发送

PWM

3、连接模式

该款LED的连接模式比较简单,串行模式,上一个LED的输出接下一个LED的输入。

PWM

4、串行LED时序

整个连续的数据发送如下,即发送数据和Ret信号。当然,在这里会有一个疑问,到底是先发数据还是先发ret信号。

经过本人自己测试验证,应当先发ret信号再发数据信号。原因如下:

数据在传输的过程中,当LED接收到完整的24bit数据时,才会对该24Bit数据进行处理,是当前LED数据,还是需要转发至下一个LED的数据。而实际发送过程中(尤为上电时)我们有时很难判定他第一个LED是否已经接收数据。而Ret信号相当于将所有的传输状态复位,之后再进行新的数据传输。

PWM

5、演示示例

做了一个板子,焊了4个LED。做了一个红绿蓝黄的流水灯演示。拍摄的原因,盖了一张白纸。

PWM

PWM

6、使用存在问题

在实际使用的过程中发现,实际驱动时,第一个LED的灯显示异常。在网上也查找过一些资料,也存在遇到这个问题。解决方法如下:

1)、发送REST

2)、发送LED数据,先发的为第一个LED数据,后发的一次往后递增

3)、发送REST

4)、重复发送第一个LED的数据

以上是该款LED使用的一个简单总结。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分