STM32F1 DMA+PWM 控制WS2812B LED灯

 

1.  对于写驱动来说WS2812B芯片手册主要就是看通讯。

 

STM32F1 DMA+PWM 控制WS2812B LED灯

 

 

简单来说就是给WS2812B发送数据,数据就是RGB对应的值,先发高位,按照GRB的顺序发送数据。通常我们用高电平表示数字信号“1”,低电平表示数字信号“0”,但是WS2812B由他自己特定的1码和0码。从手册中的“数据传送时间”表中可知,1码高电平和低电平持续时间都为580ns-1us,0码高电平时间为220ns-380ns低电平时间为580ns-1us。若低电平时间持续大于280us,则说明一个周期的数据发送完毕,再发送数据则重新更新WS2812B中寄存器的值。

根据特性采用PWM波模拟通讯数据,然后根据数据修改PWM的占空比。

 

2.    查看STM32手册我们使用TIM3通道4产生PWM。1码时占空比为50%,0码占空比为25%,PWM周期为800KHZ,即1.25us,1码高电平和低电平均为625ns,0码高电平为313ns,低电平为937ns.

STM32F1 DMA+PWM 控制WS2812B LED灯

STM32F1 DMA+PWM 控制WS2812B LED灯

3. 准备工作做完,编写程序。