瑞萨RA0单片机连载之SPI驱动WB2812B
1 前言
WS2812B是一种数字可编程LED灯条,也被称为NeoPixel。它由RGB(红、绿、蓝)三种颜色的LED组成,并集成了控制电路和信号处理功能。每个WS2812B LED 都有一个唯一的地址,并可以通过单个数据线进行串联连接。
WS2812B具有以下特点:
高度可编程性:每个LED可以独立地设置颜色和亮度,因此可以实现各种动态效果和彩色变化。
简单的控制接口:WS2812B使用单个数据线进行通信,通过发送特定的序列来控制每个LED的颜色和亮度。
低功耗:WS2812B采用高效的LED驱动技术,具有较低的功耗,适合电池供电的应用。
灵活的应用:WS2812B可广泛应用于室内装饰、灯光艺术、电子产品原型设计等领域,具有丰富的创意空间和应用场景。
24bit数据结构
G7 G6 G5 G4 G3 G2 G1 G0 R7 R6 R5 R4 R3 R2 R1 R0 B7 B6 B5 B4 B3 B2 B1 B0
注:高位先发,按照GRB 的顺序发送数据。
2 引脚图
引脚功能
序号 | 符号 | 管脚名 | 功能描述 |
1 | VDD | 电源 | 供电管脚 |
2 | DOUT | 数据输出 | 控制数据信号输出 |
3 | VSS | 地 | 信号接地和电源接地 |
4 | DIN | 数据输入 | 控制数据信号输入 |
当然,在使用的过程中,我们往往会使用不止一个LED灯,会将多个灯级联成灯带或者灯板,我们这次使用的就是灯板。
具体级联方式如下:
典型应用数据:外围电路不需要加滤波电容
其中DIN作为数据的输入端,每个LED需要24位数据控制,多出的数据会通过DOUT 引脚传递给下一个LED,以此类推,当WS2812 接收到280us 以上的低电平时,数据被写入LED,灯的颜色改变。
以下是数据的表示方法:
数据传输时间
T0H | 0码,高电平时间 | 220ns~380ns |
T1H | 1码,高电平时间 | 580ns~1μs |
T0L | 0码,低电平时间 | 580ns~1μs |
T1L | 1码,低电平时间 | 580ns~1μs |
RES | 帧单位,低电平时间 | 280μs以上 |
时序波形图
输入码型:
连接方法:
此次我采用SPI 的方式来驱动。SPI的时钟调整为8MHz,发送一字节正好是1.25us,给ws2812 发送0即通过SPI 总线发送11000000b,发送1 即通过SPI 总线发送11111100b,非常巧妙的一种方式。
根据以上原理,我先配置SPI的stack如下:
经查看原理图,配置SPI 的MOSI 为P101。
生成工程后,编写代码ws2812b.c 如下:
ws18b20c.h:
在主函数中添加测测试代码如下:
代码的主要思路是,将写入buff先清零,然后向数据中写信指定个数的RGB 数据,最后刷新到SPI 总线之中。
(本文来源于《EEPW》202507)

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW
或用微信扫描左侧二维码