概述
LEDC(LED 控制器)是一种高效的嵌入式解决方案,既支持智能 LED 灯具(如 WS2812B)的控制,也能兼容 DSHOT 协议以驱动无刷电机。
功能特性
可配置的数据传输脉冲时间和非数据周期
可配置的 RGB888 显示模式和 LED 刷新时间
最大支持 8192 笔数据序列
最大支持 1024 个 LED
支持 DMA 传输
工作原理
逻辑 0/1 编码及配置指南
逻辑“0”和“1”编码
逻辑“0”(简称“码 0”)和逻辑“1”(简称“码 1”)由高低电平组成,如图所示。
输入码型时序
逻辑电平时序
各设备中,码 0 和码 1 的高低电平持续时间有所不同。
以 WS2812B-2020 智能 LED 为例:
code0_code1_timing 码
描述
时间范围
单位
T0H
码0,高电平时间
220 ~ 380
ns
T0L
码0,低电平时间
580 ~ 1000
ns
T1H
码1,高电平时间
580 ~ 1000
ns
T1L
码1,低电平时间
220 ~ 420
ns
RESET
帧复位,低电平时间
> 280
μs
则编码总时间:
码 0:800ns ~ 1380ns
码 1:800ns ~ 1420ns
编码时间配置
通过调节寄存器中的
TxH_CNT
和TxL_CNT
参数,可以灵活设置码 0,码 1 的高低电平持续的时钟周期数目。x: 指 0 或 1
计数时钟:XTAL40MHz
数据传输时序
LED 通信模式
以 WS2812B LED 为例,其使用单路非归零(NRZ)通信协议,采用级联方式进行数据传输:
上电复位:LED 上电后,通过 DI 端口从控制器接收数据。首颗 LED 将采集前 24 位数据并锁存。
数据传递:剩余的数据通过内部整形电路从 DO 端口传输到下一颗 LED。
信号递减:每经过一颗 LED,信号中会减少 24 位数据。
LEDC 传输时序
LEDC 发送给首个 LED 的数据时序如下:
LED 数量
支持的 LED 数量计算公式为:
以表 code0_code1_timing 中码 0 和码 1 的时序为例,计算出支持的 LED 数量:
当 LED 的刷新率为 30 帧/秒时,支持的 LED 数量为 681 ~ 1023 个。
当 LED 的刷新率为 60 帧/秒时,支持的 LED 数量为 337 ~ 853 个。
应用示例
raw_ledc_ws2812 展示了如何使用 LEDC 模块来配置和控制多个 LED 灯珠。
备注
要了解示例支持的芯片,请查看示例路径下的 README.md
文件。
API 参考
要详细了解和使用相关 API,请参阅 {SDK}\component\soc\amebaxxxx\fwlib\include\ameba_ledc.h
。