LEDC - RGB LED
LEDC(Light Emitting Diode Controller),发光二极管控制器。支持驱动目前市场上已有成熟的智能外控 LED,例如 WS2812 系列,每个 LED 的三基色均可实现 256 级亮度显示,因此整个 LED 可完成 256ˆ3(即 16777216)种颜色的全真色彩显示。模块支持最大1024颗外控 LED级联。
模块介绍
LEDC 硬件方框图如上图所示,CPU 通过 APB 总线操作 LEDC 寄存器来控制 LEDC;当 CPU配置好 LEDC 的相关寄存器之后,通过 CPU 或 DMA 将 R、G、B 数据从 DRAM 搬到 LEDCFIFO 中,启动 LEDC 之后就可以通过 PIN 脚向外部的 LED 发送数据了。
LED 典型电路如图所示,其中 DI 表示控制数据输入脚,DO 表示控制数据输出脚。DI 端接收从控制器传过来的数据,每个 LED 内部的数据锁存器会存储 24bit 数据,剩余的数据经过内部整形处理电路整形放大后通过 DO 端口开始转发输出给下一个级联的 LED。因此,每经过一个LED,数据减少 24bit。
注意,如果在单次直接设置第 n 个 LED 的亮度和色彩的时候,前面 n-1 个 LED 的亮度数据会在第 n 个 LED 的数据前发送,不过这些数据将会是原来 n-1 个 LED 的亮度数据。
模块配置
配置路径如下:
Kernel Setup --->
Drivers Setup --->
SoC HAL Drivers --->
LEDC devices --->
[*] enable ledc driver
源码结构
LEDC 模块源码结构如下所示:
rtos-hal/
|--hal/source/ledc/hal_ledc.c // hal层接口代码
|--include/hal/sunxi_hal_ledc.h // 头文件
模块接口说明
头文件:
#include <sunxi_hal_ledc.h>
LEDC 初始化接口
LEDC 模块初始化,主要初始化时钟,GPIO 以及 DMAC 通道等
函数原型:
int hal_gpadc_init(void)
参数:
- 无
返回值:
- 1:成功
- 其他:失败
LEDC 数据传输接口
发送 RGB 数据
函数原型:
int hal_ledc_trans_data(struct ledc_config *ledc)
参数:
- ledc: 配置参数信息,包括待发送数据、数据长度、发送方式(CPU/DMA)及各时间参数设置
返回值:
- 1:成功
- 其他:失败
LEDC 清除中断接口
清除 LEDC 中断
函数原型:
void hal_ledc_clear_all_irq(void)
参数:
- 无
返回值:
- 无