最接接触了WS2812 LED,相信有不少人都用过。大家对这款彩色LED肯定是又爱又恨,爱的是它使用简单,采用单总线通信方式,节约IO口,而且可以多级串联。而普通的彩色LED不是共阴就是共阳,每个颜色一个引脚,一般都是用PWM驱动,想要控制亮度、颜色就要分别控制每个引脚上的PWM占空比,想要驱动多个LED就更麻烦了。恨的是WSws2812对时序的要求比较高,对低速单片机不太友好。今天我就详细谈一谈WS2812的驱动,以及使用时遇到的一个问题。
拿到一款芯片,第一件事就是找Datasheet。找Datasheet很简单,直接上官网或者上专门的datasheet网站。
其实该LED的控制时序比较简单:
1、数据0、1和Ret码
该时序说名我们该如何传输1、0以及如何结束传输
2、LED数据
该款LED显示的是24位RGB数据,位顺序如下。传输时高位(G7)先发送,低位(B0)后后发送
3、连接模式
该款LED的连接模式比较简单,串行模式,上一个LED的输出接下一个LED的输入。
4、串行LED时序
整个连续的数据发送如下,即发送数据和Ret信号。当然,在这里会有一个疑问,到底是先发数据还是先发ret信号。
经过本人自己测试验证,应当先发ret信号再发数据信号。原因如下:
数据在传输的过程中,当LED接收到完整的24bit数据时,才会对该24Bit数据进行处理,是当前LED数据,还是需要转发至下一个LED的数据。而实际发送过程中(尤为上电时)我们有时很难判定他第一个LED是否已经接收数据。而Ret信号相当于将所有的传输状态复位,之后再进行新的数据传输。
5、演示示例
做了一个板子,焊了4个LED。做了一个红绿蓝黄的流水灯演示。拍摄的原因,盖了一张白纸。
6、使用存在问题
在实际使用的过程中发现,实际驱动时,第一个LED的灯显示异常。在网上也查找过一些资料,也存在遇到这个问题。解决方法如下:
1)、发送REST
2)、发送LED数据,先发的为第一个LED数据,后发的一次往后递增
3)、发送REST
4)、重复发送第一个LED的数据
以上是该款LED使用的一个简单总结。
全部0条评论
快来发表一下你的评论吧 !