STM32之ws2812b驱动

1.手册阅读

1.数据传输频率800KHZ,对应时间为1.25us(后续定时器配置的依据)

2.所有的数据都是通过一根线DIN传输,每个灯拿到自己的数据(24bit,也就是3字节,GRB方式排列(看手册,也有RGB排列的)),然后剩余的数据依次往后面传递。

3.当DIN端口接收到 RESET 信号时,芯片将立即执行以下操作:

(1)将接收到的颜色数据送显示;

(2)待 RESET 信号结束后,芯片恢复数据接收状态,继续处理后续数据流。

(3)注意:在没有接收到 RESET 码前,显示颜色不会改变

RGB是最基本的颜色,其他颜色都是这几个的组合。可用借助在线颜色对照表去查找,通常颜色表是RGB排列,要注意顺序

两个颜色切换之前要复位,数据手册看到是280us以上

4.时序

可以看出0码和1码都有高低电平,就算持续时间不一样。总的时间是一样的

以STM32F103定时器不分频,时间为1/72ns

0码的周期: T0H+T0L=(970-1380)ns

1码的周期: T1H+T1L=(970-1380)ns

周期为1250ns=1.25us=800KHZ(这里手册有写1.25us,直接选他就行)

注意:不同的2812手册的时间不太一致,要注意看手册

还有1种时间不一样(数据手册没有1.25us这个数字),0:800-1380

1:1160-2000

其实无所谓,这里也选1250这个数,刚好满足90*1/72。周期计数90,T1H和T1L分别给45个,也就是1码的比较值为45

T0H和T0L这里最终选择(25:65),0码的比较值为25

然后分别带回去计算时间看满不满足要求,这里是满足的

假如我想输出green,则green分量全为1,R和B分量全为0.

由于是GRB顺序,所以要给的数据为 1字节的1,2字节的0

那么对应PWM比较值为,1对应45,0对应25

从数据手册可以看出0和1的时间,通过PWM控制方式调整比较值就能让MCU输出0或者1

选PWM1模式(小于比较值输出有效电平),有效电平设置为1,初始化比较值为0,则一直输出低电平,因为PWM1模式小于比较值才会输出有效电平,这样就可以避免电平有翻转的情况.

如果想输出绿色,此时数组怎么给值呢?

绿色对应就是ff0000,那么1对应的就给45,0给25

数组长度怎么定义呢?

uint16_t tx_buff24\*num+1;要传递复位(或者给300),这里定义16位是因为DMA传输半字

初始化不要打开DMA,设置颜色的时候在打开,DMA要用普通模式

这里一定要注意,1个字节的reset时间够不够,明显是不够的,由于作者两次之间增加了延时所以时间就够了。

颜色值如果是1就给45,0就给25.

WS2812B_Data(0x00FF00,0xFF0000);

CCR改变一次输出1个bit

DMA完成中断关闭.数据传输完毕了要关闭DMA,防止PWM输出

c 复制代码
void HAL_TIM_PWM_PulseFinshedCallback(TIM_HandleTypeDef *htim)
{
	if(htim->Instance == TIM1)
	{
		HAL_TIM_PWM_Stop_DMA();
	}
}

参考

添加链接描述

添加链接描述

添加链接描述

添加链接描述

添加链接描述

SPI方式

相关推荐
恒锐丰小瑞3 小时前
率能SS8841T 40V/2.5A/双通道H桥驱动芯片,PWM控制接口与低导通电阻(350mΩ),用于POS打印机/安防相机/机器人
单片机·嵌入式硬件·机器人
zcmodeltech4 小时前
钢铁冶金沙盘模型控制系统设计与实现:高炉-连铸-热轧多工序联动方案
分布式·stm32·单片机·嵌入式硬件·交互
徽京人5 小时前
VS Code 接入Esp 32步骤
vscode·单片机·嵌入式硬件
QH139292318806 小时前
Keysight N5183B N5183B 微波模拟信号发生器
网络·单片机·嵌入式硬件·集成测试·信息与通信
笨笨饿7 小时前
#110_SCH3000 平台图传系统配置指南:从 DVP 摄像头到 UVC/WiFi 双通道传输
c语言·stm32·单片机·嵌入式硬件·物联网·vim
捷瑞电子工坊7 小时前
FreeRTOS事件组:多任务同步的利器
stm32·嵌入式·freertos·实时操作系统·标准外设库·事件组·任务同步
笨笨饿9 小时前
#109_BK7258 蓝牙 A2DP 音频数据通路深度解析
python·stm32·单片机·mcu·物联网·编辑器·音视频
千秋岁rr9 小时前
5.0 TIM
单片机·嵌入式硬件
qq_401700419 小时前
ADC基准电压与参考电压详细解读:以STM32和28335为例
stm32·单片机·嵌入式硬件
小僧景贤10 小时前
STM32 startup.s 启动文件与 .map 映射文件深度技术解析(md/hd 版本差异化对比)
stm32·内存映射·startup.s·map 文件·单片机启动流程