什么是WS2812B?WS2812B灯带是怎么连接的呢?

什么是ws2812b?ws2812b是一款全彩led控制ic,单总线控制,何为单总线我的理解就是数据线在一根线上传输的控制方式就是单总线。其实要把灯点亮仅有一根线是不行的,还需要电源线和地线给其供电。
ws2812b灯带是怎么连接的呢?
就是一颗灯珠串联另外一个灯珠,信号通过一根数据线相连起来控制等的亮灭就是在这根信号线上发送数据。
ws2812b灯带的数据是什么样的呢?
在说数据格式之前先来补充一下关于色彩的知识点,就是三原色,红绿蓝,也就是我们常说的rgb,r就是red,g就是green,b就是blue,一个彩色可以用这三种颜色的比例来混合出来。
为什么是红绿蓝?
三原色的原理不是出于物理原因,而是由于生理原因造成的。人的眼睛内有几种辨别颜色的锥形感光细胞,到的刺激略大于辨别绿色的细胞,人的感觉是黄色;如果辨别黄绿色的细胞受到的刺激大大高于辨别绿色的细胞,人的感觉是红色。虽然三种细胞并不是分别对红色、绿色和蓝色最敏感,但这三种光可以分别对三种锥形细胞产生刺激。
既然“三原色的原理不是出于物理原因,而是由于生理原因造成的”,那么前段所说的“用三种原色的光以不同的比例加合到一起,形成各种颜色的光”显然就不大合适。使用三原色并不足以重现所有的色彩,准确的说法应该是“将三原色光以不同的比例复合后,对人的眼睛可以形成与各种频率的可见光等效的色觉。”只有那些在三原色的色度所定义的颜色三角内的颜色,才可以利用三原色的光以非负量相加混合得到。
例如,红光与绿光按某种比例复合,对三种锥状细胞刺激后产生的色觉可与眼睛对单纯的黄光的色觉等效。但绝不能认为红光与绿光按某种比例复合后生成黄光,或黄光是由红光和绿光复合而成的。
24bit数据如何构造?
既然是24bit数据代表三种颜色,我们就要首先知道一个bit的意义是什么,我们传统意义上来说1个bit代表一个数据位,但是对于数据位bit的理解好像就是“1”或者“0”在数电里我们很容易把高低电平跟逻辑1和逻辑0对应起来,但是表示灯珠的逻辑电平不是简单的高低电平。
在数值上0xffffff就是24bit的1,0x000000就是24bit的0.这里有8个bit代表颜色g分量,g7g6g5g4g3g2g1g0,有8个bit代表r分量r7r6r5r4r3r2r1r0,有8个bit代表b分量b7b6b5b4b3b2b1b0,当不同分量组合时候就会有不同的数据产生,这个数据背后其实是逻辑电平,这里要说明的是彩灯的逻辑“1”并不是简简单单的高电平,彩灯的逻辑“0”也不是简简单单的低电平。
ws2812b的逻辑“1”和逻辑“0”
由上图可知“0”码和“1”码都是既有高电平又有低电平不过高电平和低电平的比例不同,这点很好理解,重点是分析一下它的特点,首先直观的特点就是编码“0”的电平高电平时间短一些低电平时间长一些,这也恰好符合我们的逻辑毕竟它还是低电平多一些的,编码“1”的电平高电平时间就长一些,而低电平就短一些。
但是不管是高电平还是低电平他们占用整个时间长度是一样的,这里还有一个很长的低电平这个代表复位信号。
ws2812b控制波形的精准描述如何?这里涉及到严格的数学描述了,长一点是多长?短一点是多短?这个肯定是有标准或者是约束的
理论上来说,高电平时长和低电平时长加起来应该是0.4us+0.85us或者0.85us+0.4us也就是说总共要占用1.25us的时间才可以编码出来一个“0”或者“1”出来。复位是要求50us以上,显然是要比编码的0或者1占用的时间要多的。
当然既然是电路的高低电平时长就会引入误差这个在误差允许的范围内我们可以接受,这个范围就是上下不超过150ns这里是ns比us还要小的时间,这个其实时间要求还是很严格的。
如何编程实现?
这里我选用我手上一个正点原子开发板,网上基于这种方式有很多驱动方案,有直接驱动也有pwm驱动也有spi驱动,还有pwm+dma驱动,还有用一些开源库进行驱动的,我感觉各种驱动方式各有优缺点,我先来尝试我认为最容易想到的方式(不一定是最好的或者最合适的)玩一下,后面会根据这些方式的特点进行一个总结,在相对应的需求下选用合适的方案是我们应该重点考虑的。
实现us级别延时
硬件延时nop实现
滴答定时器中断实现
普通定时器实现
先用nop实现个us延时我手上的板子是精英板主控芯片是stm32f103zet6系统频率是72m,一个nop的周期就是1/72m单位是s = 1/72=单位是us,换句话说也就是72个nop浪费的时间是1us,0.4us就是0.4*72=28.8个nop取整数29,0.2个nop的误差,因为一个nop是1/72 1000 个约等于是13.88个ns 所以0.2个nop引起的误差在150ns以内可以接受。
0.8572=61.2nop同样取整数61个nop,这样组合一下编码0的波形和编码1的波形就有了,实现一个 us函数 50us的低电平也可以产生复位信号,理论分析完毕咱直接上代码测试。
void rgb_init(void){ gpio_inittypedef gpio_initstructure; rcc_apb2periphclockcmd(rcc_apb2periph_gpiob, enable); //使能pa,pd端口时钟 gpio_initstructure.gpio_pin = gpio_pin_12; //led0-- >pa.8 端口配置 gpio_initstructure.gpio_mode = gpio_mode_out_pp; //推挽输出 gpio_initstructure.gpio_speed = gpio_speed_50mhz; //io口速度为50mhz gpio_init(gpiob, &gpio_initstructure); //根据设定参数初始化gpioa.8 gpio_resetbits(gpiob,gpio_pin_12); //pd.2 输出高} void bit_0(void){ gpio_setbits(gpiob,gpio_pin_12); //pb12 输出高 delay_l(); gpio_resetbits(gpiob,gpio_pin_12); //pb12 输出高 delay_h();}void bit_1(void){ gpio_resetbits(gpiob,gpio_pin_12); //pb12 输出高 delay_h(); gpio_setbits(gpiob,gpio_pin_12); //pb12 输出高 delay_l();}void rgb_set(void){ for(uint8_t i = 0;i< 8;i++) { bit_1(); } for(uint8_t i = 0;i< 8;i++) { bit_0(); } for(uint8_t i = 0;i< 8;i++) { bit_1(); }// for(uint8_t i = 0;i< 24;i++)// {// delay_us(100);// }}void delay_l(void){ __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();}void delay_h(void){ __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop();__nop(); __nop();}

天猫精灵的总销量超过了300万台,国内排名第一,而世界排名则位居第三
汉通达携手VX Instruments针对高性能半导体的测试需求提供解决方案
Patriot上市新产品 容量从256GB到1TB
5G终端连接数超2亿 5G创新应用日益丰富
联芸成功实现基于4K LDPC纠错的第三代Agile ECC 3闪存信号处理技术的开发和验证 可极大延长NAND的使用寿命
什么是WS2812B?WS2812B灯带是怎么连接的呢?
一加 Concept One 概念手机发布:采用变色玻璃后壳,可随用户呼吸变色
亚马逊已在美国四个州内进行自动驾驶配送服务测试
高通6系首款5G Soc曝光,实现5G中高低端全覆盖
5G时代下VR技术会给VR带来翻天覆地的变化
如何在K8s上部署MySQL
大族激光如何建立自身的核心竞争力和护城河,应对市场的挑战和竞争?
全自动清洁机器人 使用时长是普通清洁机器人的三倍
怎么样才能减少网络安全对人工智能在数据中心的影响?
Java代码编写技巧
贪便宜4499买的国产炫龙X6毒刺游戏本,没想到还是i7处理器
两会报告提到5G目标 将2020年实现商用5G
报警器电路图大全
高通强行干预三星销售exynos芯片
单相逆变电路的工作原理