Advanced 18 min read March 12, 2026

WS2812B 协议详解:可寻址 LED 的技术原理

深入解析 WS2812B LED 的数据帧结构、时序要求、级联原理与 PWM 驱动原理。

#WS2812B #协议 #数据帧 #级联 #PWM #技术

WS2812B 简介

WS2812B 是世界上最广泛使用的可寻址 RGB LED 芯片,将 RGB LED 和控制 IC 集成在一个 5mm×5mm 的封装内。

封装结构

WS2812B 封装(俯视)

  GND   DOUT
   │     │
   └──┬──┘
      │ LED 芯片
   ┌──┴──┐
   │     │
  VDD   DIN
  • VDD:电源正极(5V)
  • GND:地线
  • DIN:数据输入
  • DOUT:数据输出(传给下一颗 LED)

数据帧结构

每颗 WS2812B 接收 24 位数据(3 字节),对应 GRB 三色各 8 位:

24 位数据格式(MSB 在前):

┌─────────────────────────────────────────────────┐
│  G7 G6 G5 G4 G3 G2 G1 G0 │ R7 R6...R0 │ B7...B0 │
│       Green(绿)         │  Red(红)  │  Blue   │
└─────────────────────────────────────────────────┘

注意:WS2812B 数据顺序是 GRB,不是 RGB!

为什么是 GRB 不是 RGB?

这是早期设计的历史遗留问题。控制软件(包括 Skydimo 和 OpenRGB)会自动处理 GRB 到 RGB 的转换,用户无需关心。


时序规范

WS2812B 使用单线 NZR(归零码)时序协议:

逻辑”1”的时序

HIGH: 0.8μs ± 0.15μs
LOW:  0.45μs ± 0.15μs

    ┌───┐
    │   │   
────┘   └───  总周期约 1.25μs(800kHz)
  T1H=0.8μs
      T1L=0.45μs

逻辑”0”的时序

HIGH: 0.4μs ± 0.15μs
LOW:  0.85μs ± 0.15μs

  ┌──┐
  │  │       
──┘  └──────  总周期约 1.25μs
T0H=0.4μs
    T0L=0.85μs

复位信号

LOW 持续 > 50μs → 触发数据锁存(复位)
所有 LED 接受新数据后锁存当前颜色

级联原理

WS2812B 最强大的特性是数据级联,允许将任意数量的 LED 串联在一条信号线上:

主控 → DIN[LED1]DOUT → DIN[LED2]DOUT → DIN[LED3]DOUT → ...

                 数据流向 →
传输数据:[G1R1B1][G2R2B2][G3R3B3]...

LED1:读取 [G1R1B1],剩余数据 [G2R2B2][G3R3B3]... 从 DOUT 输出
LED2:读取 [G2R2B2],剩余数据 [G3R3B3]... 从 DOUT 输出
LED3:读取 [G3R3B3]...

每颗 LED 读取前 24 位数据,然后将剩余数据透传给下一颗。

级联上限

理论上没有上限,实践中受限于:

  • 信号衰减:长距离后信号质量下降(> 5米建议加信号放大)
  • 电源压降:大量 LED 需要多点供电
  • 刷新率:LED 数量越多,更新一帧所需时间越长
LED 数量传输时间(24位×N)最大刷新率
60 颗1.8ms~500Hz
300 颗9ms~100Hz
600 颗18ms~55Hz

PWM 原理

RGB LED 的亮度控制使用脉宽调制(PWM):

亮度 100%:▀▀▀▀▀▀▀▀▀▀▀▀  LED 持续亮
亮度 50%: ▀▀▀▀▀▀      ▀▀▀▀▀▀  50% 占空比
亮度 25%: ▀▀▀          ▀▀▀   25% 占空比

WS2812B 内部 PWM 频率约为 400Hz,远超人眼感知阈值(~60Hz),因此不会感到闪烁。

Gamma 校正

人眼对亮度的感知是对数的,而 8 位值(0-255)是线性的。为了使视觉效果均匀,控制软件通常应用 Gamma 校正:

# Gamma 2.2 校正
corrected = (linear / 255) ** (1/2.2) * 255

# 或使用查找表(LUT)更高效
GAMMA_LUT = [int((i/255)**2.2 * 255) for i in range(256)]

Skydimo 和 OpenRGB 都内置了 Gamma 校正选项(可开关)。


兼容芯片

市场上有多种 WS2812B 兼容芯片,协议基本相同但有细微差异:

芯片兼容性特点
WS2812B— 原版最广泛支持
SK6812✅ 高度兼容有 RGBW 变种(含白色 LED)
APA102❌ 不同协议SPI 接口,更高刷新率
WS2815✅ 兼容12V 版本,信号容错更好

⚠️ 注意:APA102/SK9822 使用 SPI 协议,与 WS2812B 不兼容,在 Skydimo 中需要选择不同的控制器驱动。


实际应用注意事项

电源计算

每颗 WS2812B 最大电流(白色全亮):60mA
60 颗 LED:60 × 60mA = 3.6A(5V)
建议电源余量:×1.2 → 4.3A
建议选择:5V/5A 电源

信号线要求

  • 使用 屏蔽线 减少干扰
  • 信号线末端加 300-500Ω 串联电阻 防过冲
  • 主控输出与第一颗 LED 之间加104 电容对地防干扰

温度限制

WS2812B 工作温度:-40°C 至 +85°C,但长时间高亮度使用会产热,机箱内建议保持通风。