SPI串口屏
一、简易 UI-SPI 串口屏概述
SPI 是串行外设接口(Serial Peripheral Interface)的缩写,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为 PCB 的布局上节省空间,提供方便,正是出于这种简单易用的特性,越来越多的芯片集成了这种通信协议。 Air724UG 模块中提供一个通用 SPI,用于驱动 SPI LCD 屏幕。
二、准备硬件环境
“古人云:‘工欲善其事,必先利其器。’在深入介绍本功能示例之前,我们首先需要确保以下硬件环境的准备工作已经完成。”
2.1 Air724UG 开发板
本 demo 使用的是 Air724UG_A14 开发板,如下图所示:
点击链接购买:EVB_Air724UG_A14 开发板淘宝购买链接 ;
此开发板的详细使用说明参考:Air724UG 产品手册中的开发板硬件资料中《EVB_Air724UG_A14 开发板使用说明.pdf》;开发板使用过程中遇到任何问题,可以直接参考这份使用说明 pdf 文档。
2.2 SIM 卡
请准备一张可正常上网的 SIM 卡,该卡可以是物联网卡或您的个人手机卡。
特别提醒:请确保 SIM 卡未欠费且网络功能正常,以便顺利进行后续操作。
2.3 PC 电脑
请准备一台配备 USB 接口且能够正常上网的电脑。
2.4 数据通信线
请准备一根用于连接 EVB_Air724UG_A14 开发板和 PC 电脑的数据线,该数据线将实现业务逻辑的控制与交互。
- USB 数据线:此数据线不仅用于为测试板供电,还用于查看数据日志。其一端为 Micro-B 接口(俗称老安卓口),用于连接 EVB_Air724UG_A14 开发板;另一端为标准 USB 接口,连接 PC 电脑。
2.5 准备一个 7735 的屏幕(7735 型号有带后缀的也可以的)
- 注:EVB_Air724UG_A14 的开发板显示屏接线口只有 7 个口
- 将屏幕的 GND 对齐 开发板的 GND 接上, 最后显示屏的 BLK,会悬空(如果不调节亮度,悬空默认最亮,其他亮度 这个口接 PWM)
- 在使用 EVB_Air724UG_A14 开发套件时如下图所示插入即可
2.6 组装硬件环境
2.6.1 请按 SIM 卡槽指示方向正确插入 SIM 卡,避免插反损坏
通常,插入 SIM 卡的步骤如下:
- 将 SIM 卡的金属卡槽下滑打开。
- 平稳地将 SIM 卡放入卡槽。
- 上滑关闭卡槽。
2.6.2 USB 数据线,连接电脑和 EVB_Air724UG_A14 开发板,如下图所示:
2.6.3 EVB_Air724UG_A14 开发板和显示屏连接,如下图所示:
三、准备软件环境
“凡事预则立,不预则废。”在详细阐述本功能示例之前,我们需先精心筹备好以下软件环境。
3.1 Luatools 工具
要想烧录 LuatOS 固件到 4G 模组中,需要用到合宙的强大的调试工具:Luatools;
下载地址:Luatools v3 下载调试工具。
Luatools 工具集具备以下几大核心功能:
- 一键获取最新固件:自动连接合宙服务器,轻松下载最新的合宙模组固件。
- 固件与脚本烧录:便捷地将固件及脚本文件烧录至目标模组中。
- 串口日志管理:实时查看模组通过串口输出的日志信息,并支持保存功能。
- 串口调试助手:提供简洁的串口调试界面,满足基本的串口通信测试需求。
Luatools 下载之后, 无需安装, 解压到你新建的文件中,点击 Luatools_v3.exe 运行,出现如下界面,就代表 Luatools 安装成功了:
3.2 烧录代码
首先要说明一点: 脚本代码, 要和固件的 LuatOS-Air_V4030_RDA8910_TTS_NOLVGL_FLOAT.pac(注:支持 LCD,字库,图片,TTS,WIFI Scan,SD 卡,VOLTE) 文件一起烧录。
整体压缩文件:内含有二个文件,如图所示。
3.2.1 压缩文件:完整文件包
3.2.2 找到烧录的固件文件
官网下载,底层 core 下载地址:LuatOS 底层 core 注:本 demo 使用如图所示固件
3.2.3 正确连接电脑和 4G 模组电路板
使用带有数据通信功能的数据线,不要使用仅有充电功能的数据线;
3.2.4 识别 4G 模组的 BOOT 引脚
在下载之前,要用模组的 BOOT 引脚触发下载, 也就是说,要把 4G 模组的 BOOT 引脚拉到 1.8v,或者直接把 BOOT 引脚和 VDD_EXT 引脚相连。我们要在按下下载模式按键时让模块开机,就可以进入下载模式了。
具体到 EVB_Air724UG_A14 开发板,
- 当我们模块没开机时,按着下载模式键然后长按开机键开机。
- 当我们模块开机时,按着下载模式键然后点按重启键即可。
3.2.5 识别电脑的正确端口
判断是否进入 BOOT 模式:
- 模块上电,如果是正常开机运行(没有进入boot下载模式),此时在电脑的设备管理器中,查看串口设备,如下图所示(会出现3个或者4个端口):
- 先按下载模式再按一下重启,会出现一个端口表示进入了 BOOT 下载模式,如下图所示:
- 一旦进入了boot下载模式,表示硬件连接上已经处于就绪状态,此时就可以使用Luatools工具进行烧录了!
3.2.6 新建项目
首先,确保你的 Luatools 的版本大于或者等于 3.0.6 版本.
在 Luatools 的左上角上有版本显示的,如图所示:
Luatools 版本没问题的话, 就点击 Luatools 右上角的“项目管理测试”按钮,如下图所示:
这时会弹出项目管理和烧录管理的对话框,如下图:
3.2.7 开始烧录
- 选择 Air724ug 开发板对应的底层 core 和刚改的 main.lua 脚本文件。下载到板子中。
- 一直按下载模式按键,再按一下重启,然后点击下载底层和脚本,如图所示:
- 出现如图所示,表示已进入 BOOT 模式,可以松开下载模式按键,等待下载完成。
- 下载完成,如图所示
四、简易 UI-SPI 串口屏基本用法
4.1 本教程实现的功能定义:
- 在 Air724UG-LuatOS 平台上,disp 库作为 SPI 串口屏与硬件之间的桥梁,发挥着至关重要的直接交互作用。它设计得既高效又灵活,为用户提供了极其友好的接口来控制 SPI 串口屏。本次介绍的宗旨是助力开发者快速掌握并熟练运用 disp 库的 API 接口,以便能够利用这些接口在 LED 屏幕上精准地展示文字、绘制图形以及呈现图片,从而在 Air724UG-LuatOS 平台上实现出色的屏幕显示与控制功能。
4.2 文章内容引用
- EVB_Air724UG_A14 开发板软硬件资料 : EVB_Air724UG_A14 产品手册
- 以下接口函数不做详细介绍,可通过此链接查看具体介绍:disp_API
4.3 API 接口详解
4.3.1 disp.init(para)
解说:
- 初始化显示屏。
参数:
para
:初始化参数,通常是一个包含多个配置项的表(table)包含:如下表所示
返回值:
- 无。
举例:
_--同时配置多个LCD,需要填写id_reg和id_value字段--同时配置多个LCD,disp.init具有返回值0:_
_--配置成功 -1:配置失败_
_--如果传入LCD参数只有一个时和配置一个LCD使用方式兼容,且没有返回值_
local function init()
local lcd_1 =
{
id_reg = 0x04,
id_value = 0x7c89f0,
..... _--和配置一个LCD参数一样需要填下width、height等参数,这里先省略_
}
local lcd_2 =
{
id_reg = 0x04,
id_value = 0x123456,
..... _--和配置一个LCD参数一样需要填下width、height等参数,这里先省略_
}
local lcd_3 =
{
id_reg = 0x05,
id_value = 0x654321,
..... _--和配置一个LCD参数一样需要填下width、height等参数,这里先省略_
}
_--同时配置3个LCD参数,底层可以通过读ID寄存器然后和id_value进行比较,找到正确的LCD配置_
_--找到了返回0 匹配失败返回-1_
_--如果只传输一个参数,可以不传入id_reg id_value字段,同时disp.init没有返回值,和之前兼容_
disp.init(lcd_1,lcd_2,lcd_3)
disp.clear()
disp.update()
log.info("disp.init succeed !!!")
elselog.info("disp.init fail !!!")
endend_--配置一个LCD_local function init()local para =
{
width = 128, _--分辨率宽度,128像素;用户根据屏的参数自行修改_
height = 160, _--分辨率高度,160像素;用户根据屏的参数自行修改_
bpp = 16, _--位深度,彩屏仅支持16位_
bus = disp.BUS_SPI4LINE, _--LCD专用SPI引脚接口,不可修改_
xoffset = 2, _--X轴偏移_
yoffset = 1, _--Y轴偏移_
freq = 20000000, _--spi时钟频率,最小800K,最大200M_
pinrst = pio.P0_6, _--reset,复位引脚_
pinrs = pio.P0_1,
_--rs,命令/数据选择引脚_
_--camera_preview_no_update_screen = 1,_
_ --0表示摄像头预览刷屏;1表示摄像头预览不刷屏--初始化命令_
_--前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据_
_--延时类型:后两个字节表示延时时间(单位毫秒)_
_--命令类型:后两个字节命令的值--数据类型:后两个字节数据的值_
initcmd =
{
0x00020011,
0x00010078,
0x000200B1,
0x00030002,
0x00030035,
0x00030036,
0x000200B2,
0x00030002,
0x00030035,
0x00030036,
0x000200B3,
0x00030002,
0x00030035,
0x00030036,
0x00030002,
0x00030035,
0x00030036,
0x000200B4,
0x00030007,
0x000200C0,
0x000300A2,
0x00030002,
0x00030084,
0x000200C1,
0x000300C5,
0x000200C2,
0x0003000A,
0x00030000,
0x000200C3,
0x0003008A,
0x0003002A,
0x000200C4,
0x0003008A,
0x000300EE,
0x000200C5,
0x0003000E,
0x00020036,
_-- set rotation-- 0x000300C0,_0x00030000,
0x000200E0,
0x00030012,
0x0003001C,
0x00030010,
0x00030018,
0x00030033,
0x0003002C,
0x00030025,
0x00030028,
0x00030028,
0x00030027,
0x0003002F,
0x0003003C,
0x00030000,
0x00030003,
0x00030003,
0x00030010,
0x000200E1,
0x00030012,
0x0003001C,
0x00030010,
0x00030018,
0x0003002D,
0x00030028,
0x00030023,
0x00030028,
0x00030028,
0x00030026,
0x0003002F,
0x0003003B,
0x00030000,
0x00030003,
0x00030003,
0x00030010,
0x0002003A,
0x00030005,
0x00020029,
},
_--休眠命令_
sleepcmd = {
0x00020010,
},
_--唤醒命令_
wakecmd = {
0x00020011,
}
}
disp.init(para)
disp.clear()
disp.update()
end_--配置一个MIPI lcd_local function init()local para =
{
width = 480, _--分辨率宽度,_
height = 854, _--分辨率高度_
bpp = 16, _--MIPI LCD直接写16,暂不支持其他配置_
bus = disp.BUS_MIPI, _--LCD专用SPI引脚接口,不可修改_
xoffset = 0, _--X轴偏移_
yoffset = 0, _--Y轴偏移_
freq = 200000000, _--mipi时钟最高为500000000_
pinrst = pio.P0_20, _--reset,复位引脚,MIPI屏幕必须填写_
pinrs = 0xffff, _--mipi不需要rs脚,直接写0xffff_
_---- porch_vs porch_vbp porch_vfp porch_hs porch_hbp porch_hfp 这6个参数可以不配置_
_---- 软件有默认的配置。一般mipi屏会兼容多套参数。也可以根据厂商提供的参数进行修改_
porch_vs = 2,
porch_vbp = 15,
porch_vfp = 8,
porch_hs = 10,
porch_hbp = 30,
porch_hfp = 30,
_-- continue_mode 可以不配置底层默认为0. 配置后一直处于高速continue 模式_
continue_mode = 1,
_--初始化命令--前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据--延时类型:后两个字节表示延时时间(单位毫秒)--命令类型:后两个字节命令的值--数据类型:后两个字节数据的值--现在MIPI LCD 只支持,lane 2线,RGB565格式_
initcmd =
{
...
_--寄存器配置和spi写法一样_
},
_--休眠命令_
sleepcmd =
{
...
_--寄存器配置和spi写法一样_
},
_--唤醒命令_
wakecmd =
{
...
_--寄存器配置和spi写法一样_
}
}
disp.init(para)
disp.clear()
disp.update()
end
4.3.2 disp.getlcdinfo()
解说:
- 获取显示屏信息。
参数:
- 无。
返回值:
- 通常是一个表(table)包含:如下表。
举例:
--只演示 分辨率 高度和宽度
local WIDTH,HEIGHT = disp.getlcdinfo()
4.3.3 disp.close()
解说:
- 关闭显示屏。
参数:
- 无。
返回值:
- 无。
举例:
--关闭显示屏。
disp.close()
4.3.4 disp.clear()
解说:
- 清空显示屏内容。
参数:
- 无。
返回值:
- 无。
举例:
--清空LCD显示缓冲区
disp.clear()
4.3.5 disp.update()
解说:
- 刷新显示屏内容。
参数:
- 无。
返回值:
- 无。
举例:
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
_--[[
注意:所有要显示的内容,需要调用该接口刷新,这样才能看到显示的内容
__]]_
4.3.6 disp.puttext(str,x,y,grade,thickness)
解说:
- 在显示屏上绘制文本。
参数:
返回值:
- 无。
举例:
--显示文字 "欢迎使用LuatOS"
--清空LCD显示缓冲区
disp.clear()
disp.puttext(common.utf8ToGb2312("欢迎使用LuatOS"),10,64,1,50)
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
4.3.7 disp.putimage(img,x,y)
解说:
- 在显示屏上显示图片。
参数:
返回值:
- 无。
举例:
--清空LCD显示缓冲区
disp.clear()
-- 图片演示
--显示logo图片
disp.putimage("/lua/logo.png",0,0)
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
4.3.8 disp.img.convert(org_file,org_format,dest_file,dest_format)
解说:
- 转换图像格式。
参数:
返回值:
举例
_--png转rgb565 dest_file=nil _
_--返回值ret为string类型的rgb数据,失败返回nil_
ret=disp.img.convert("/lua/logo.png",disp.IMG_FORMAT_PNG, nil, disp.IMG_FORMAT_RGB565)
print("ret ", type(ret), ret:toHex())
_--png转rgb565 dest_file=rgb 将转换的数据保存到/rgb文件中_
_--返回值ret为number类型,成功返回0 失败-1_
imgdata=disp.img.convert("/lua/logo.png",disp.IMG_FORMAT_PNG, "/rgb", disp.IMG_FORMAT_RGB565)
print("ret ", type(ret), ret)
4.3.9 disp.drawrect(left,top,right,bottom,color)
解说:
- 在显示屏上绘制图形。
参数:
返回值:
- 无。
举例
--显示图行-矩形框
--清空LCD显示缓冲区
disp.clear()
disp.drawrect(20,40,108,40,222)
disp.drawrect(20,120,108,120,222)
disp.drawrect(108,40,108,120,222)
disp.drawrect(20,40,20,120,222)
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
五、简易 UI-SPI 串口屏整体演示
5.1 简易 UI-SPI 串口屏成果演示与深度解析:视频 + 图文全面展示
5.1.1 成果运行精彩呈现
5.1.2 完整实例深度剖析
- main.lua
功能实现:主要实现使用 disp 库在显示屏上面如何显示文字、图形、图片功能。
--必须在这个位置定义PROJECT和VERSION变量
--PROJECT:ascii string类型,可以随便定义,只要不使用,就行
--VERSION:ascii string类型,如果使用Luat物联云平台固件升级的功能,必须按照"X.X.X"定义,X表示1位数字;否则可随便定义
PROJECT = "SPI_LCD_DEMO"
VERSION = "1.0.0"
--加载日志功能模块,并且设置日志输出等级
--如果关闭调用log模块接口输出的日志,等级设置为log.LOG_SILENT即可
require "log"
LOG_LEVEL = log.LOGLEVEL_TRACE
--[[
如果使用UART输出日志,打开这行注释的代码"--log.openTrace(true,1,115200)"即可,根据自己的需求修改此接口的参数
如果要彻底关闭脚本中的输出日志(包括调用log模块接口和Lua标准print接口输出的日志),执行log.openTrace(false,第二个参数跟调用openTrace接口打开日志的第二个参数相同),例如:
1、没有调用过sys.opntrace配置日志输出端口或者最后一次是调用log.openTrace(true,nil,921600)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false)即可
2、最后一次是调用log.openTrace(true,1,115200)配置日志输出端口,此时要关闭输出日志,直接调用log.openTrace(false,1)即可
]]
--log.openTrace(true,1,115200)
require "sys"
require "net"
--每1分钟查询一次GSM信号强度
--每1分钟查询一次基站信息
net.startQueryAll(60000, 60000)
--此处关闭RNDIS网卡功能
--否则,模块通过USB连接电脑后,会在电脑的网络适配器中枚举一个RNDIS网卡,电脑默认使用此网卡上网,导致模块使用的sim卡流量流失
--如果项目中需要打开此功能,把ril.request("AT+RNDISCALL=0,1")修改为ril.request("AT+RNDISCALL=1,1")即可
--注意:core固件:V0030以及之后的版本、V3028以及之后的版本,才以稳定地支持此功能
ril.request("AT+RNDISCALL=0,1")
--加载控制台调试功能模块(此处代码配置的是uart1,波特率115200)
--此功能模块不是必须的,根据项目需求决定是否加载
--使用时注意:控制台使用的uart不要和其他功能使用的uart冲突
--使用说明参考demo/console下的《console功能使用说明.docx》
--require "console"
--console.setup(1, 115200)
--加载硬件看门狗功能模块
--根据自己的硬件配置决定:1、是否加载此功能模块;2、配置Luat模块复位单片机引脚和互相喂狗引脚
--合宙官方出售的Air201开发板上有硬件看门狗,所以使用官方Air201开发板时,必须加载此功能模块
--[[
require "wdt"
wdt.setup(pio.P0_30, pio.P0_31)
]]
--加载网络指示灯和LTE指示灯功能模块
--根据自己的项目需求和硬件配置决定:1、是否加载此功能模块;2、配置指示灯引脚
--合宙官方出售的Air720U开发板上的网络指示灯引脚为pio.P0_1,LTE指示灯引脚为pio.P0_4
require "netLed"
pmd.ldoset(2,pmd.LDO_VLCD)
netLed.setup(true,pio.P0_1,pio.P0_4)
--网络指示灯功能模块中,默认配置了各种工作状态下指示灯的闪烁规律,参考netLed.lua中ledBlinkTime配置的默认值
--如果默认值满足不了需求,此处调用netLed.updateBlinkTime去配置闪烁时长
--加载错误日志管理功能模块【强烈建议打开此功能】
--如下2行代码,只是简单的演示如何使用errDump功能,详情参考errDump的api
require "errDump"
errDump.request("udp://dev_msg1.openluat.com:12425", nil, true)
--加载远程升级功能模块【强烈建议打开此功能】
--如下3行代码,只是简单的演示如何使用update功能,详情参考update的api以及demo/update
--PRODUCT_KEY = "v32xEAKsGTIEQxtqgwCldp5aPlcnPs3K"
--require "update"
--update.request()
require"color_lcd_spi_st7735"
require"common"
require"pm"
pm.wake("disp") --调用唤醒接口,防止模块进入休眠状态影响SPI通讯
local function Display_Text()
--显示文字 "欢迎使用LuatOS"
--清空LCD显示缓冲区
disp.clear()
disp.puttext(common.utf8ToGb2312("欢迎使用LuatOS"),10,64,1,50)
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
end
local function Display_Graphics()
--显示图行-矩形框
--清空LCD显示缓冲区
disp.clear()
disp.drawrect(20,40,108,40,222)
disp.drawrect(20,120,108,120,222)
disp.drawrect(108,40,108,120,222)
disp.drawrect(20,40,20,120,222)
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
end
local function Display_Picture()
--清空LCD显示缓冲区
disp.clear()
-- 图片演示
--显示logo图片
disp.putimage("/lua/logo.png",0,0)
--刷新LCD显示缓冲区到LCD屏幕上
disp.update()
end
sys.timerStart(Display_Text,2000)
sys.timerStart(Display_Graphics,3500)
sys.timerStart(Display_Picture,5000)
--启动系统框架
sys.init(0, 0)
sys.run()
- color_lcd_spi_st7735.lua
功能实现:ST 7735 驱动芯片 LCD 命令配置
--- 模块功能:ST 7735驱动芯片LCD命令配置
-- @author openLuat
-- @module ui.color_lcd_spi_st7735
-- @license MIT
-- @copyright openLuat
-- @release 2018.03.27
--[[
注意:disp库目前支持I2C接口和SPI接口的屏,此文件的配置,硬件上使用的是LCD专用的SPI引脚,不是标准的SPI引脚
硬件连线图如下:
Air模块 LCD
GND-------------地
LCD_CS----------片选
LCD_CLK---------时钟
LCD_DATA--------数据
LCD_DC----------数据/命令选择
VDDIO-----------电源
LCD_RST---------复位
]]
module(...,package.seeall)
--[[
函数名:init
功能 :初始化LCD参数
参数 :无
返回值:无
]]
local function init()
local para =
{
width = 128, --分辨率宽度,128像素;用户根据屏的参数自行修改
height = 160, --分辨率高度,160像素;用户根据屏的参数自行修改
bpp = 16, --位深度,彩屏仅支持16位
bus = disp.BUS_SPI4LINE, --LCD专用SPI引脚接口,不可修改
xoffset = 0, --X轴偏移
yoffset = 0, --Y轴偏移
freq = 13000000, --spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
pinrst = pio.P0_6, --reset,复位引脚
pinrs = pio.P0_1, --rs,命令/数据选择引脚
--camera_preview_no_update_screen = 1, --0表示摄像头预览刷屏;1表示摄像头预览不刷屏
--初始化命令
--前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
--延时类型:后两个字节表示延时时间(单位毫秒)
--命令类型:后两个字节命令的值
--数据类型:后两个字节数据的值
initcmd =
{
0x00020011,
0x00010078,
--0x00020021, -- 反显
0x000200B1,
0x00030002,
0x00030035,
0x00030036,
0x000200B2,
0x00030002,
0x00030035,
0x00030036,
0x000200B3,
0x00030002,
0x00030035,
0x00030036,
0x00030002,
0x00030035,
0x00030036,
0x000200B4,
0x00030007,
0x000200C0,
0x000300A2,
0x00030002,
0x00030084,
0x000200C1,
0x000300C5,
0x000200C2,
0x0003000A,
0x00030000,
0x000200C3,
0x0003008A,
0x0003002A,
0x000200C4,
0x0003008A,
0x000300EE,
0x000200C5,
0x0003000E,
0x00020036,
0x00030000, --0x000300C0 --mirror
0x000200E0,
0x00030012,
0x0003001C,
0x00030010,
0x00030018,
0x00030033,
0x0003002C,
0x00030025,
0x00030028,
0x00030028,
0x00030027,
0x0003002F,
0x0003003C,
0x00030000,
0x00030003,
0x00030003,
0x00030010,
0x000200E1,
0x00030012,
0x0003001C,
0x00030010,
0x00030018,
0x0003002D,
0x00030028,
0x00030023,
0x00030028,
0x00030028,
0x00030026,
0x0003002F,
0x0003003B,
0x00030000,
0x00030003,
0x00030003,
0x00030010,
0x0002003A,
0x00030005,
0x00020029,
},
--休眠命令
sleepcmd = {
0x00020010,
},
--唤醒命令
wakecmd = {
0x00020011,
}
}
disp.init(para)
disp.clear()
disp.update()
end
--控制SPI引脚的电压域
pmd.ldoset(15,pmd.LDO_VLCD)
init()
--打开背光
--实际使用时,用户根据自己的lcd背光控制方式,添加背光控制代码
六、总结
Air724UG-LuatOS 平台上的 SPI 串口屏的 display
库共同构成了屏幕显示与控制的核心功能,使开发者能够高效地管理屏幕的初始化、显示内容更新、界面切换、参数配置以及附加的显示处理功能。通过合理利用这些接口,开发者可以构建出具备出色用户体验的界面应用程序,满足用户在多种显示场景下的需求。同时,也需关注接口之间的协同配合,以确保屏幕显示功能的流畅性和可靠性。
七、常见问题
- 能使用其他屏幕么? 可以驱动其他屏幕,但需要自己编写相应的驱动程序。只要能够成功运行,即可实现兼容。
- 标准 spi 可以驱动的目标芯片电压是多少? 标准 SPI 接口所驱动的目标芯片电压通常为 1.8V,这个电压值是固定的,无法进行调整。如果目标芯片的工作电压不在此范围内,需要使用电平转换芯片来实现电压匹配。
- disp.update 绘制时闪屏 检出现闪屏现象时,请检查是否已正确接入背光引脚。
八、扩展
8.1.1 SPI_LCD 屏 硬件参考设计如下图所示。
注意:
- C1 要靠近 LCD 放置
- CLK 和 DATA 建议预留 RC 以降低对天线干扰的风险,RC 靠近模块放置。
- 背光控制务必用 PWM(GPIO5)控制,通过调整 PWM 占空比来调整背光亮度。
- R1 电阻根据屏幕背光的导通电流来做调整。
8.1.2 ui(disp 界面显示)
若您渴望获取更为详尽的介绍与阐释,敬请参考 demo-ui。
本篇文章由
永仔
开发;本篇文章描述的内容,如果有错误、细节缺失、细节不清晰或者其他任何问题,总之就是无法解决您遇到的问题;
请登录合宙技术交流论坛,文档找错赢奖金-Air724UG-LuatOS-软件指南-多媒体应用-SPI串口屏;
我们会迅速核实并且修改文档;
同时也会为您累计找错积分,您还可能赢取月度找错奖金!