首页 » 通讯 » 误把WS2813当做RGB5050运用出现问题_电路_函数

误把WS2813当做RGB5050运用出现问题_电路_函数

admin 2024-12-24 16:45:23 0

扫一扫用手机浏览

文章目录 [+]

概述:WS2813是一个集成掌握器的LED光源,将掌握芯片集成在RGB5050光源中,与普通RGB5050光源外不雅观非常相似,某批制板时,误将本应利用普通RGB5050的电路板上焊接上了WS2813,导致程序无法运行,修正源代码中某一函数修复此问题。

一、背景

笔者曾利用过某块开拓板,该板载一个RGB指示灯,其电路事理图

误把WS2813当做RGB5050运用出现问题_电路_函数 通讯

图1

理论上只须要设定MCU的PB7、PB8、PB9的PWM的占空比就可以改变其颜色,但在实际利用时,创造无法驱动该RGB,后来联系厂家,得知因制作时,误将WS2813焊接在该板上。

比较WS2813和RGB5050的datasheet,创造其虽然外不雅观相似,但驱动事理完备不一样。
WS2813支持单输入口驱动,多颗灯珠级联,其级联方案:

图2

其输入数据类似

图3

由于本板只利用了单颗灯珠,在编程设计时只须要考虑L1即可,即只须要在DIN处设置24bit输入及足够大的间距RESET,就能达到RGB三个输入接口的效果。
个中24bit数据构造如下表:

表1

二、电路剖析和改造

实际电路中利用的是WS2813:

图4

查看Datasheet,创造WS2813的输入电压VDD范围在+3.5V~+5.3V,实测电路板上管脚电压3.42V,与3.5V相差不大,考试测验做修正:

表2

三、软件修正

由于WS2813基本可以看作是WS2811+RGB,因此直接移植arduino中的COctoWS2811Controller函数(详细代码略),按照

图5

表3

修正原代码里面的点灯函数RGB_LED_control(uint8_t R, uint8_t G, uint8_t B),将其更换为新编写的函数

void RGB_LED_control(uint8_t R, uint8_t G, uint8_t B){GPIO_ResetBits(GPIOB, GPIO_Pin_ 8);//将PB8拉至低位RESET400us(); //设置400微秒的低电平,担保颜色能正常输入WS2811_LED_control(R,G,B); //设置颜色}

更换后,创造各功能均可正常利用。

以上是一次利用软件修复硬件问题的具体例子,我的开拓板是软件硬件都做了微调,但听说在同批次硬件错用WS2813灯的开拓板中,有些网友并未做硬件修正,仅在软件上做了类似的调度,也同样可以利用。

标签:

相关文章