2025/09/26
简介
ARGB(Addressable-RGB/可寻址RGB)是一种较为流行的LED灯具,广泛应用于照明、装饰和电子项目。“可寻址”部分是指通过嵌入或连接到每个LED的集成电路(IC)来单独控制每个LED的颜色和亮度的能力,从而实现点对点的编程,以产生更多样的组合光效。
ARGB LED通常以链式连接,每个LED模块内置一个控制芯片,内置IC通过数字信号透传颜色及亮度指令。常见型号包括:WS2812B、WS2813、SK6812、SK9822、APA102,其中可分为带断点续传和不带断点续传或有时钟通道和无时钟通道。带断点续传功能的可寻址RGB LED有一个数据通道和一个备用数据通道,当只有一个IC发生故障时,信号仍然可以传递给后续的IC。带时钟通道功能的可寻址RGB LED有一个数据通道和一个时钟通道,允许更高的数据传输速度和更可靠的信号。
下文提供使用Realtek Bluetooth SOC实现ARGB灯效控制实例,其中ARGB以WS2812B为例。
WS2812B链式连接示意图
ARGB通信方式
ARGB灯以WS2812B为例,使用单线归零码(Unipolar Return-to-Zero,RZ)的通信方式,输入码型包括“0”码,“1”码和“RESET”码,如下图所示。三种码型时间见下表。
输入码型
码型时间(TH+TL=1.25us±600ns)
WS2812B在上电复位以后,DIN端接收从Realtek Bluetooth SOC传输过来的数据,首先送过来的24bit数据被第一个WS2812B提取后,送到内部的数据锁存器,剩余的数据经过内部整形处理电路后通过DOUT端输出给下一个级联的WS2812B,每经过一个WS2812B的传输,数据减少24bit,如下图所示。
ARGB数据传输
其中DIN_1为Realtek Bluetooth SOC发送的数据,DIN_2、DIN_3和DIN_n为级联电路自动整形转发的数据。
24 Bit的数据结构如图所示,高位先发,按照GRB的顺序发送数据。
24 Bit的数据结构
WS2812B接收完24bit数据,送到内部的数据锁存器,并通过DOUT端转发剩余的数据。然后等待DIN端输入“RESET”码,当接收到“RESET”码后,所有级联的WS2812B同步根据接收的24bit数据,在OUTR、OUTG和OUTB端产生不同的占空比的信号。在接收到下一个“RESET”码之前,OUTR、OUTG、OUTB端保持原输出不变。当接收到下一个“RESET”码后,OUTR、OUTG、OUTB端输出会被刷新,如图所示。
ARGB通信方式示意图
使用Timer+DMA控制ARGB
将Realtek Bluetooth SOC的PWM端与ARGB的DIN端相连,配置Timer和DMA生成相应频率和占空比的PWM信号,使其输出符合时序的码型,来控制ARGB。
ARGB以WS2812B为例,Timer和DMA的配置如下:
1. Timer配置:
设置Timer以产生频率为800kHz的PWM信号,其中占空比为75%的PWM信号模拟“1码”,占空比为25%的PWM信号模拟“0码”。
PWM信号模拟ARGB输入码型
2. DMA设置:
配置DMA通道,从存储颜色数据的缓冲区传输数据到Timer的CCR寄存器。DMA操作可以减轻CPU负担,确保数据传输的精确性和时序准确性。
在数据传输过程中,确保连续地更新LED颜色数据,避免超过50us的空闲时间。如果发生复位,需要重新开始发送数据以保持连贯性和正确的显示效果。
使用SPI+DMA控制ARGB
SPI总线在传输过程中只传输数据,且传输速度高,适合模拟ARGB通信方式。将Realtek Bluetooth SOC的SPI MOSI端与ARGB的DIN端相连,配置SPI和DMA输出符合时序的码型,来控制ARGB。
ARGB以WS2812B为例,SPI和DMA的配置如下:
1. SPI配置:
Realtek Bluetooth SOC的SPI clock一般为40MHz,对SPI clock四分频,SPI时钟周期为0.1us,表示传输一位数据的时间为0.1us。SPI data frame size设为12。SPI发送data“0xFF8”模拟“1码”,发送data“0xE00”模拟“0码”。
SPI data模拟ARGB输入码型
2. DMA配置:
配置DMA通道,从存储颜色数据的缓冲区传输数据到SPI的TX FIFO寄存器。DMA操作可以减轻CPU负担,确保数据传输的精确性和时序准确性。
在数据传输过程中,确保连续地更新LED颜色数据,避免超过50us的空闲时间。如果发生复位,需要重新开始发送数据以保持连贯性和正确的显示效果。
软件实现
RTL87x3D和RTL87x3E均支持通过SPI单线模式实现ARGB灯效控制。为了适应不同的应用需求,SPI通信提供了多种驱动模式,包括轮询模式、中断模式以及DMA模式。详细的实现示例和代码请参考文档:
https://docs.realmcu.com/sdk/rtl87x3d/common/en/latest/text/Samples/IO/spi_master_rgb_write.html。
RTL87x2G支持通过ENHTIM+DMA和SPI单线模式实现ARGB灯效控制。RTL87x2G提供ENHTIM+DMA方案的示例。详细的实现示例和代码请参考文档: