全志D1-H Tina Linux LEDC开发指南
介绍全志LEDC 驱动的使用方法,方便LEDC 驱动维护和应用开发。
1.2 适用范围
表1-1: 适用产品列表
产品名称:D1-H
内核版本: Linux-5.4
驱动文件:leds-sunxi.c
1.3 相关人员
LEDC 驱动和应用开发人员。
2 模块介绍
2.1 相关术语说明
表2-1: 术语说明表
术语说明
LED Light Emitting Diode
LEDC Light Emitting Diode Controller
2.2 源码结构说明
本模块借助于标准Linux LED 子系统。其代码路径为:
<div>tina/lichee/linux5.4/drivers/leds/
</div>
led-core.c:为led子系统的核心文件。
ledtrigger-xxx.c:为trigger相关的文件。
leds-sunxi.c:LEDC驱动实现代码。
leds-sunxi.h:定义全志LEDC驱动数据结构。
2.3 模块配置说明
2.3.1 内核配置
在tina 根目录下,执行makekernel_menuconfig,配置路径如下:
Device Drivers
└─>LED_Support
└─>LED support for Allwinner platforms
操作图示:
图2-1: ledc 配置界面
如果需要用到trigger 的话,需要选择相对应的配置项。配置路径如下:
Device Drivers
└─>LED_Support
└─>LED Trigger support
操作图示:
trigger 配置界面
2.3.2 DTS 配置
2.3.2.1 DTS 路径
通过cdts 命令可跳转到平台dts 路径:
tina/lichee/linux-5.4/arch/riscv/boot/dts/sunxi/sun20iw1p1.dtsi
tina/device/config/chips/d1-h/configs/nezha/linux/board.dts
ledc: ledc@2008000 {
#address-cells = <1>;
#size-cells = <0>;
compatible = "allwinner,sunxi-leds";
reg = <0x0 0x02008000 0x0 0x400>;
interrupts = <GIC_SPI 20 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "ledcirq";
clocks = <&ccu CLK_LEDC>, <&ccu CLK_BUS_LEDC>;
clock-names = "clk_ledc", "clk_cpuapb";
dmas = <&dma 42>, <&dma 42>;
dma-names = "rx", "tx";
resets = <&ccu RST_BUS_LEDC>;
reset-names = "ledc_reset";
status = "disabled";
};
板级dts:
&pio {
....................//省略
ledc_pins_a: ledc@0 {
pins = "PC0";
function = "ledc";
drive-strength = <10>;
};
ledc_pins_b: ledc@1 {
pins = "PC0";
function = "gpio_in";
};
...................//省略
};
&ledc {
pinctrl-names = "default", "sleep";
pinctrl-0 = <&ledc_pins_a>;
pinctrl-1 = <&ledc_pins_b>;
led_count = <1>;
output_mode = "GRB";
reset_ns = <84>;
t1h_ns = <800>;
t1l_ns = <320>;
t0h_ns = <300>;
t0l_ns = <800>;
wait_time0_ns = <84>;
wait_time1_ns = <84>;
wait_data_time_ns = <600000>;
status = "okay";
};
3 接口描述
3.1 内部接口
LEDC 驱动主要的内部接口如下表所示:
sunxi_ledc_set_length: 设置LED 的数量
sunxi_ledc_set_output_mode: 设置LEDC 的输出模式(R、G、B 的排布顺序)
sunxi_ledc_set_cpu_mode: 设置CPU 的传输模式
sunxi_ledc_set_dma_mode: 设置DMA 的传输模式
sunxi_ledc_enable: 使能LEDC
sunxi_ledc_trans_data: 设置LEDC 相关寄存器;将RGB 数据搬到LEDCFIFO中,启动LEDC
sunxi_ledc_set_time: 模块初始化时设置reset_ns、t1h_ns、t1l_ns 等的时间
sunxi_ledc_reset 将transmitted_data: 置为0;释放系统资源;对LEDC做soft reset 操作
sunxi_set_led_brightness: 设置LED 亮度,范围为0~255
sunxi_register_led_classdev: 模块初始化时注册led_classdev 设备
sunxi_unregister_led_classdev: 模块卸载时注销led_classdev 设备
3.2 外部接口
3.2.1 brightness 调节说明
每个RGB LED 在/sys/class/leds 目录下对应有3 个led_classdev 设备目录,分别如下:
/sys/class/leds/sunxi_led[n]r
/sys/class/leds/sunxi_led[n]g
/sys/class/leds/sunxi_led[n]b
其中n 表示LED 的编号,n 最小值为0。
完整全志D1-H Tina Linux LEDC开发指南请到一牛网论坛下载
https://bbs.16rd.com/thread-598793-1-1.html
相关文章
- 奥运期间北京奥森玩转Pokemon Go权威指南
- Linux 平台安装 MongoDB
- Windows 平台安装 MongoDB
- MongoDB 查询分析
- MongoDB 原子操作
- MongoDB 数据库引用
- MongoDB 正则表达式
- MongoDB 自动增长
- MongoDB 删除数据库
- Mac OSX 平台安装 MongoDB
- MongoDB 条件操作符
- Python Mongodb 修改文档
- MongoDB 高级索引
- Python Mongodb 删除数据
- MongoDB 覆盖索引查询
- Python Mongodb 插入文档
- MongoDB Map Reduce
- MongoDB Limit与Skip方法
- MongoDB 复制(副本集)
- MongoDB $type 操作符