news 2026/7/14 13:26:47

STM32之ws2812b驱动

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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_buff[24*num+1];要传递复位(或者给300),这里定义16位是因为DMA传输半字
初始化不要打开DMA,设置颜色的时候在打开,DMA要用普通模式

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

颜色值如果是1就给45,0就给25.
WS2812B_Data(0x00FF00,0xFF0000);

CCR改变一次输出1个bit


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

voidHAL_TIM_PWM_PulseFinshedCallback(TIM_HandleTypeDef*htim){if(htim->Instance==TIM1){HAL_TIM_PWM_Stop_DMA();}}

参考
添加链接描述
添加链接描述
添加链接描述
添加链接描述
添加链接描述

SPI方式

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/14 13:25:35

5分钟搞定OBS直播字幕:免费插件让你的直播更专业

5分钟搞定OBS直播字幕:免费插件让你的直播更专业 【免费下载链接】OBS-captions-plugin Closed Captioning OBS plugin using Google Speech Recognition 项目地址: https://gitcode.com/gh_mirrors/ob/OBS-captions-plugin 你是否曾经遇到过这样的情况&…

作者头像 李华
网站建设 2026/7/14 13:23:41

Python 3.7与Pygame实战:从零复刻经典打飞机游戏

1. 项目概述:从零到一,用Python复刻经典“打飞机”最近在整理旧项目时,翻出了一个几年前用Python写的“打飞机”小游戏。这个项目虽然不大,但麻雀虽小五脏俱全,涵盖了游戏开发中从图形渲染、事件处理到碰撞检测、状态管…

作者头像 李华
网站建设 2026/7/14 13:23:01

基于FPGA与ADC协同架构的高密度数据采集模块设计原理与应用场景分析

在航空航天、遥感遥测及工业控制等特种电子系统中,数据采集模块承担着将物理世界的模拟信号转换为数字信号的核心任务。随着被测系统通道规模的持续扩大,传统基于单一MCU的采集方案在时序精度、并行处理能力和系统灵活性方面已难以满足高密度、多通道同步…

作者头像 李华
网站建设 2026/7/14 13:20:38

FigmaCN:打破语言壁垒,让Figma成为中文设计师的得力助手

FigmaCN:打破语言壁垒,让Figma成为中文设计师的得力助手 【免费下载链接】figmaCN 中文 Figma 插件,设计师人工翻译校验 项目地址: https://gitcode.com/gh_mirrors/fi/figmaCN 你是否曾因Figma的英文界面而感到困扰?面对密…

作者头像 李华
网站建设 2026/7/14 13:19:07

OpCore Simplify完整教程:零基础快速搭建完美黑苹果系统

OpCore Simplify完整教程:零基础快速搭建完美黑苹果系统 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify OpCore Simplify是一款专门为简化…

作者头像 李华