Air780EPM LCD 硬件电路说明
Air780EPM 支持 SPI 接口 LCD,如下表所示;
一、硬件支持
1. LCD 接口类型
Air780EPM 通过 SPI 接口连接 LCD 屏幕,支持多种驱动 IC;
目前已经调试支持的有:ST7735/ST7735S/ST7789/ST7796/ILI9341/ILI9486/GC9306/NV3037;
Air780EPM 开发板配件 LCD 当前使用的是 ST7796 ,大家可以灵活选择相应的 LCD 模组和供应商。
Air780EPM 的 LCD 具体接口引脚如下:
-
SPI 信号:
- CLK(时钟线):GPIO34(VDD_EXT 电压域)。
- SDA(数据):GPIO37(VDD_EXT 电压域)。
- 片选(CS):可通过任意 GPIO(如 GPIO35)控制。
- 数据/命令选择(RS):可通过任意 GPIO(如 GPIO38)控制。
-
复位控制(RST):
-
需通过 GPIO(如 GPIO36)控制,注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
-
背光控制(BL):
-
需通过 GPIO(如 GPIO30)控制,注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
2. 电源与信号设计
-
电压匹配:
- LCD 模块通常为 3.3V 电平,与 Air780EPM 直接兼容;
-
背光供电:
-
部分供应商提供的 LCD 模组的背光需独立供电,避免与 LCD 驱动 IC 共用电源导致电流冲击。
- Air780EPM 配套使用的 LCD 模组,背光不需要独立供电,可与 LCD 用同一电源。
- 参考设计:
LCD模块引脚 | Air780EPM GPIO
---------------------------
CLK → GPIO34
SDA → GPIO37
CS → GPIO35
RS → GPIO38
RST → GPIO36,注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
BL → GPIO30,注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
二、软件开发
1. LuatOS API 与驱动
- 有关 LCD 的代码太长,仅截取一段有关 API 和驱动的代码作为示例;
- 注意!Air780EPM 有专门的硬件 LCD 驱动接口且已封装好 API,无需再按照 SPI 接口 API 从头开始写驱动;
- 当然,Air780EPM 的硬件 LCD 接口本质上也是 SPI 接口的复用或者说专用,官方暂未公开此接口的具体资料;
- LCD 完整示例代码:demo/780EPM_1.3 版本开发板全功能测试/lcd7796.lua · 合宙 Luat/LuatOS-Air780EPM - Gitee.com
local blk = gpio.setup(30, 1)
-- LCD背光BL脚,高电平关闭背光,电平开启背光
local rtos_bsp = rtos.bsp()
-- local chip_type = hmeta.chip()
-- 根据不同的BSP返回不同的值
-- spi_id,pin_reset,pin_dc,pin_cs,bl
local function lcd_pin()
local rtos_bsp = rtos.bsp()
if string.find(rtos_bsp, "780EPM") then
return lcd.HWID_0, 36, 0xff, 0xff, 25
-- 注意:Air780EPM有专用的硬件LCD接口,无需再按照SPI接口API从头开始写驱动
else
log.info("main", "你用的不是Air780EPM,请更换demo测试", rtos_bsp)
return
end
end
local spi_id, pin_reset, pin_dc, pin_cs, bl = lcd_pin()
if spi_id ~= lcd.HWID_0 then
spi_lcd = spi.deviceSetup(spi_id, pin_cs, 0, 0, 8, 20 * 1000 * 1000, spi.MSB, 1, 0)
port = "device"
else
port = spi_id
end
lcd.init("st7796", {
port = port,
pin_dc = pin_dc,
pin_pwr = bl,
pin_rst = pin_reset,
direction = 0,
-- direction0 = 0x00,
w = 320,
h = 480,
xoffset = 0,
yoffset = 0,
sleepcmd = 0x10,
wakecmd = 0x11
})
-- Air780EPM开发板配套使用的LCD模组驱动IC为ST7796
- LCD 驱动库:
- LuatOS 提供 LCD 驱动库(如
lcd
模块),请参考官方文档或示例代码。 - 若无现成库,需根据 LCD 驱动 IC 的手册编写初始化命令和操作函数,看 demo/lcd_custom 。
- LuatOS 提供 LCD 驱动库(如
三、注意事项
1. 电源与低功耗
- 休眠模式影响:
- RST 型号:注意电路设计时需加上拉电阻,不然影响低功耗表现驱动能力。
- 背光控制:需在休眠前关闭,避免持续耗电。
2. 驱动 IC 适配
-
初始化命令:
- 根据 LCD 驱动 IC 的数据手册编写精确的初始化序列(如 ST7796、ILI9341 命令不同)。
-
分辨率与格式:
-
确保设置的分辨率(如 240x320)与 LCD 物理尺寸匹配,避免显示错位。
3. 示例代码参考
- 摄像头与 LCD 联动:
-- 通过摄像头捕获图像并显示到LCD(以下代码仅为简单逻辑示例)
require("camera")
require("lcd")
camera.init() -- 初始化摄像头
lcd.init() -- 初始化LCD
while true do
local img = camera.capture()
lcd.showImage() -- 显示图像
sys.wait(1000)
end
四、典型应用场景
1. 物联网显示终端:如温湿度监测屏、设备状态指示。
2. 摄像头预览:结合 Air780EPM 的摄像头模块,实时显示图像或二维码解析结果。
五、参考资料
1. LCD 驱动 IC 手册:如 ST7796、ILI9341 数据手册。
2. LuatOS 官方文档:https://docs.openluat.com/air780epm/luatos/api/
3. Air780EPM 开发板手册:获取 GPIO 复用表和硬件设计建议。