![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
WS2812全彩LED
文章平均质量分 90
顶点元
你当像鸟飞往你的山!
展开
-
STM32 HAL+PWM+DMA方式驱动WS2812灯珠波形分析
通过示波器观察PWM+DMA的方式驱动WS2812灯珠的波形及分析对应的现象文章目录1. 在DMA传送完PWM波形后不关闭PWM的DMA输出2. 在DMA传送完PWM波形后,在PWM传输完成后回调函数中关闭PWM的DMA输出3. 在DMA传送完PWM波形后,在DMA中断函数中关闭PWM的DMA输出分析1. 在DMA传送完PWM波形后不关闭PWM的DMA输出灯珠显示效果:灯珠会错乱显示(没有按正常设定的颜色显示)示波器显示如下:2. 在DMA传送完PWM波形后,在PWM传输完成后回调函数中关闭P原创 2020-11-11 18:48:15 · 3174 阅读 · 2 评论 -
WS2812灯珠(六)---移植WS2812FX库
移植WS2812FX库该库实现了比Adafruit_NeoPixel库更丰富的显示效果,且该库的实现是建立在Adafruit_NeoPixel库的基础上实现的。这里的移植是基于STM32 Keil MDK实现的(其他平台未测试)。移植原则移植需要用到的变量,这里全部声明为static,外部函数需要使用其变量时必须通过函数的方式访问。为所有向外提供使用的函数统一添加Adafruit_NeoPixel_的前缀,既便于识别又不会和其他文件函数产生重名冲突。当函数存在重载情形时将重载函数的不一致参数组合原创 2020-09-21 13:43:34 · 6135 阅读 · 4 评论 -
WS2812灯珠(五)---移植Adafruit_NeoPixel库
将Adafruit_NeoPixel库移植为C版本Adafruit_NeoPixel库为实现WS2812类似系列的灯珠实现非常酷炫的效果提供了各种接口函数,应用层可以很方便的利用这些接口函数实现各种丰富的显示效果。Adafruit_NeoPixel库提供的example中包含了很多炫酷效果的例程,实现更加丰富效果的WS2812FX库便是利用Adafruit_NeoPixel库的基础上实现的。这里将其移植为C语言版本可以更广泛的应用到嵌入式平台上,也为后续移植WS2812FX库打下铺垫。移植原则:移原创 2020-09-21 13:20:16 · 8946 阅读 · 7 评论 -
STM32F407_HAL_TIM_DMA驱动WS2812
STM32F407_HAL_TIM_DMA驱动WS2812初始化函数可以通过CubeMX配置,这里直接通过原码记录:芯片外设层驱动tim.h#ifndef __TIM_H#define __TIM_H#include "stm32f4xx.h"extern TIM_HandleTypeDef htim3;void HAL_TIM_MspPostInit(TIM_Handl...原创 2020-03-10 18:20:14 · 3066 阅读 · 4 评论 -
WS2812灯珠(一)-- STM32 普通IO方式驱动
相信大家在看到这篇文章的时候一定对WS2812芯片的时序有了一定的了解,这里对于WS2812硬件通信方面就不做过多的介绍了。驱动WS2812需要的实现纳秒级别的电平翻转,像一般主频较低的MCU很难实现这种级别的电平翻转。我在这里使用的MCU是STM32F103系列主频为72M,恰好可以通过延时翻转高低电平模拟WS2812的通信时序进而实现对WS2812灯珠的驱动。STM32通过普通...原创 2018-10-28 11:55:28 · 19087 阅读 · 32 评论 -
WS2812灯珠(二)-- STM32 SPI+DMA方式驱动
通过硬件SPI的可以很巧妙的模拟出WS2812的通信时序,用spi的8位数据模拟ws281x的一位数据。要将系统时钟设置为56M,SPI分频数设置为8,则SPI的通信频率为7M,1s/7M≈143ns 即传输一位数据的时间约为143纳秒(ns) 3*143 = 429ns 5*143 = 715ns 符合WS281X芯片的通信时序。 11111000 high level ...原创 2018-10-28 12:50:50 · 6149 阅读 · 25 评论 -
WS2812灯珠(三)-- STM32 PWM+DMA方式驱动
WS2812灯珠(三)-- STM32 PWM+DMA方式驱动文章目录WS2812灯珠(三)-- STM32 PWM+DMA方式驱动一、理论二、代码实践一、理论PWM输出就是对外输出脉宽(即占空比)可调的方波信号,信号频率由自动重装载寄存器ARR的值决定,占空比由比较寄存器CCR的值决定。由WS2812规格书可知:WS2812灯珠的通信速度为800Kbit/s。数据传输时间(T...原创 2019-08-15 15:42:08 · 19662 阅读 · 30 评论 -
WS2812灯珠(四)---实现全彩呼吸灯效果
WS2812灯珠实现呼吸灯效果主要涉及到呼吸函数及颜色模型两部分的内容。清楚了这两点结合之前的灯珠驱动程序,便可以实现任意颜色的呼吸变换效果了。## 呼吸函数具体的呼吸函数细节这里就不介绍了,感兴趣的可以自行搜索。这里下面的呼吸灯曲线表是从呼吸函数中取得离散点,最大值为256(rgb的分别值最大为255),总共300个亮度等级,若每个亮度下亮10ms则整个过程持续3S,符合人实际呼吸的情况。...原创 2019-09-19 17:08:31 · 27731 阅读 · 14 评论