WS2812内部包含信号整形电路,这是由于每个元件之间通过串行级联相接,每个像素点收到信号后经过波形整形再输出,可以保证线路波形畸变不会增加。另外WS2812内部还包含高精度内部振荡器和12V高压可编程定电流控制部分,可以保证LED亮度一致。
下面来讲讲WS2812的数据协议。WS2812采用的是一种叫做单线归零码的通讯方式。首先要注意的是,单线归零码通过识别电平转换来判别0和1信号,与一般的电平表示0和1相比,这种编码对于噪声的抵抗更强。观察波形图可以看到,高电平持续时间比低电平长的是1码,高电平持续时间比低电平短的是0码。
观察数据手册,可以看到不同型号的WS2812在数据传输时间的具体数值上有不同,下面第一个图是WS2812,第二个图是WS2812B,后者高电平持续的时间要比WS2812长一点。不过再仔细一点可以发现表格最后一列给出了电平时间的一个浮动范围,因此如果我们在写代码的时候把0码的高电平时长设为0.4(这里举个栗子),那么实际工作的时候两种元件其实都能兼容。
然后要注意的是数据传输的方式。一串数据从WS2812的DIN脚进入,最前面的24bit数据被存储到该像素点内部的数据锁存器中&#