STM32 cubemx驱动ws2812b灯条

本文详细介绍了如何使用STM32 CubeMX配置驱动ws2812b灯条,讲解了ws2812b的工作原理、传输时序,并提供了CubeMX的时钟配置和TIM8_CH2设置,以及代码实现细节。
摘要由CSDN通过智能技术生成
参考链接

ws2812 程序设计与应用(1)DMA 控制 PWM 占空比原理及实现(STM32)

ws2812b原理
  • WS2812 内部集成了处理芯片和3颗不同颜色的led灯(红,绿,蓝),通过单总线协议分别控制三个灯的亮度强弱,达到全彩的效果,每一个灯需要 8 bits(1 byte) 的数据,所以一颗 ws2812 共需要24 bits(3 bytes) 的数据。
  • ws2812 采用 PWM方式来编码,即每个PWM的周期固定为1.25us(800k),占空比为 1/3 时为 0 码,占空比为 2/3 为 1 码。另外,ws2812 复位信号为一个 不低于50us的低电平:
  • 时序
  • 在这里插入图片描述

在这里插入图片描述

ws2812传输原理

ws2812 的特点是可以多个灯珠串联起来,这样就可以通过一个总线控制多个灯珠:
在这里插入图片描述
ws2812 可以将第一个24字节的时序留下,余下的往下一位传递:
在这里插入图片描述
可以结合波逻辑分析仪捕获的波形来理解:
在这里插入图片描述

上图是4个led的驱动时序,首先是一个100us的低电平复位来ws2812,接着是第一个led灯的数据,它有24个周期,分为3个部分,每一个部分是8个周期分别对应不同颜色的灯,可以看到,第一个部分都是宽占空比,所以全是1,第二个部分都是窄占空比,所以全是0,第三个部分和第一个部分同。所以第一颗led灯,是绿色和蓝色一起亮,视觉效果为青色,其它同理。

时序的数据结构是,高位到低位:
在这里插入图片描述

基本信息
芯片型号 系统时钟 定时器 高速总线 引脚
STM32F427IIH 180Mhz TIM8_CH2 APB2 PI6
CubeMx配置
时钟

TIM8_CH2

在这里插入图片描述
周期计算:
ws2812b需要800kb的周期,系统时钟是180Mhz,TIM8是挂在APB2总线上的,它的时钟也是180Mhz,
因此,有:180 * 1000 / 800 = 225 (224+1),因此自动装载值设为 224 ;
#####
cubemx的配置到此结束。

代码部分

tim.c里添加

void HAL_TIM_PWM_PulseFinishedCallback(TIM_HandleTypeDef *htim)
{
   
    HAL_TIM_PWM_Stop_DMA(&htim8,TIM_CHANNEL_2);
}

ws2812.c里添加
参数说明:

ONE_PULSE ZERO_PULSE WS2812_DATA_LEN
149 74 334
149 =(224+1)* 2/3 74 = (224+1)* 2/3 80 + led_nums * 24
#include "ws2812b.h"
#include "tim.h"

#define ONE_PULSE        (149)                           //1 码
#define ZERO_PULSE       (74)                           //0 码
#define RESET_PULSE      (80)                           //80 ,复位信号
#define LED_NUMS         (11)                            //led 数量
#define LED_DATA_LEN     (24)                           //led 长度,单个需要24bits
#define WS2812_DATA_LEN  (LED_NUMS*LED_DATA_LEN)        //ws2812灯条需要的数组长度

uint16_t static RGB_buffur[RESET_PULSE + WS2812_DATA_LEN]
  • 27
    点赞
  • 106
    收藏
    觉得还不错? 一键收藏
  • 17
    评论
评论 17
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值