build | ||
components/hub75 | ||
main | ||
CMakeLists.txt | ||
README.md | ||
sdkconfig | ||
sdkconfig.defaults | ||
sdkconfig.old |
LED_MATRIX驱动使用说明
物理接口
led_matrix使用hub75接口驱动,驱动信号包括:
数据线:RGB0 3bit、RGB1 3bit、RGB2 3bit(预留)、RGB3 3bit(预留)
时钟线:1bit
控制线:行地址ABCD 4bit 、LAT锁存信号(高电平锁存)1bit、OE使能信号(低电平使能行输出) 1bit
软件接口实现
使用 esp32 SDK 库中的 lcd_i80 接口实现16位并行数据输出,实现时钟线驱动下16bit数据的并行输出,并且内部采用dma方式传输;
使用 ledc PWM 实现 LAT 和 OE 信号的定时控制:LAT信号在定时器周期快结束时拉高锁存;OE信号在定时器周期中先低有效后高无效行输出,PWM占空比决定显示亮度,注意占空比设置必须在OE锁存信号之前;在定时器溢出中断中发送下一次显示的数据;
在 ulp riscv 协处理器中轮询捕获OE高电平,并在一次高电平中修改一次行地址(使用flag和CPU同步实现)。
文件组成
main/
-
esp_lcd_common.h
-
esp_lcd_panel_io_i80_hub75.c
esp_lcd_panel_io_i80_hub75.h
-
led_matrix.c
led_matrix.h
-
ulp/main.c
文件说明
原 SDK 库中 esp_lcd_panel_io_i80.c、esp_lcd_panel_io_i80.c 实现的i80接口对某些引脚有检查,所以修改了某些检查,同时利用结构体中的format_buffer作为缓冲区,添加了一些结构体表项,并实现了映射以及发送数据的函数,作为文件 esp_lcd_panel_io_i80_hub75.c、esp_lcd_panel_io_i80_hub75.h,esp_lcd_common.h是其依赖头文件;
led_matrix.c、led_matrix.h 文件中对 led_matrix 整体进行初始化,并提供接口供用户调用。若后期板子大小做出调整,可以修改该文件的相关内容;
ulp/main.c 中是协处理器代码,注意需要编写main/CMakeLists.txt将协处理器代码嵌入进工程。