合宙昆仑镜LCD驱动测试

9 篇文章 0 订阅

 昆仑镜官方相关资料

 

 LCD 驱动芯片

 

 

LCD屏幕接口定义

 昆仑镜LCD原理图

 

 

测试代码实现在黑色屏幕上显示不断累加的整数

固件选用LuatOS-Air_V3206_RDA8910_RFTLLTSXY_0x90000.pac

刚开始从昆仑镜码云源码复制驱动代码时,少复制一句

pmd.ldoset(8, pmd.LDO_VBACKLIGHT_R)--必需有,否者屏幕无背光

导致屏幕背光不亮

 main.lua

PROJECT = 'KLJ_LCD_Driver_Test'
VERSION = '2.0.0'
require 'log'
LOG_LEVEL = log.LOGLEVEL_TRACE
require 'sys'
require "pins"

require "lcd" 
require "test"
lcd.init()

sys.init(0, 0)
sys.run()

lcd.lua

-- 硬件初始化
module(..., package.seeall)

width = 240
height = 240

-- lcd 初始化
function init()
    local para1 = {
        width = width, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
        height = height, -- 分辨率高度,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,命令/数据选择引脚
        -- 初始化命令
        -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
        -- 延时类型:后两个字节表示延时时间(单位毫秒)
        -- 命令类型:后两个字节命令的值
        -- 数据类型:后两个字节数据的值
        initcmd = {
            0xfe, 0xef, 0xb3, 0x0030003, -- 0x21,--反显
            0x36, 0x0030048, -- 0x0030088,--上下颠倒
            0x3a, 0x0030005, 0xb4, 0x0030021, 0xF0, 0x003002d, 0x0030054,
            0x0030024, 0x0030061, 0x00300ab, 0x003002e, 0x003002f, 0x0030000,
            0x0030020, 0x0030010, 0x0030010, 0x0030017, 0x0030013, 0x003000f,
            0xF1, 0x0030002, 0x0030022, 0x0030025, 0x0030035, 0x00300a8,
            0x0030008, 0x0030008, 0x0030000, 0x0030000, 0x0030009, 0x0030009,
            0x0030017, 0x0030018, 0x003000f, 0xfe, 0xff, 0x11, 0x010078, 0x29
        },
        -- 休眠命令
        sleepcmd = { 0x00020010 },
        -- 唤醒命令
        wakecmd = { 0x00020011 }
    }
    --驱动芯片:GC9A01   深圳秦唐盛世科技有限公司
    local para = {
        width    = 240, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
        height   = 240, -- 分辨率高度,128像素;用户根据屏的参数自行修改
        bpp      = 16, -- 位深度,彩屏仅支持16位
        bus      = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
        xoffset  = 0, -- X轴偏移
        yoffset  = 0, -- Y轴偏移
        freq     = 20000000, -- spi时钟频率
        pinrst   = pio.P0_6, -- reset,复位引脚
        pinrs    = pio.P0_1, -- rs,命令/ 数据选择引脚/ 268开发板为15
        -- 初始化命令
        -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
        -- 延时类型:后两个字节表示延时时间(单位毫秒)
        -- 命令类型:后两个字节命令的值
        -- 数据类型:后两个字节数据的值
        initcmd  = {
            0x00010000 + 100, 0xEF, 0xEB, 0x00030014, 0xFE, 0xEF, 0xEB,
            0x00030014, 0x84, 0x00030040, 0x85, 0x000300FF, 0x86, 0x000300FF,
            0x87, 0x000300FF, 0x88, 0x0003000A, 0x89, 0x00030021, 0x8A,
            0x00030000, 0x8B, 0x00030080, 0x8C, 0x00030001, 0x8D, 0x00030001,
            0x8E, 0x000300FF, 0x8F, 0x000300FF, 0xB6, 0x00030000, 0x00030020,
            0x36, 0x00030008, 0x3A, 0x00030005, 0x90, 0x00030008, 0x00030008,
            0x00030008, 0x00030008, 0xBD, 0x00030006, 0xBC, 0x00030000, 0xFF,
            0x00030060, 0x00030001, 0x00030004, 0xC3, 0x00030013, 0xC4,
            0x00030013, 0xC9, 0x00030022, 0xBE, 0x00030011, 0xE1, 0x00030010,
            0x0003000E, 0xDF, 0x00030021, 0x0003000c, 0x00030002, 0xF0,
            0x00030045, 0x00030009, 0x00030008, 0x00030008, 0x00030026,
            0x0003002A, 0xF1, 0x00030043, 0x00030070, 0x00030072, 0x00030036,
            0x00030037, 0x0003006F, 0xF2, 0x00030045, 0x00030009, 0x00030008,
            0x00030008, 0x00030026, 0x0003002A, 0xF3, 0x00030043, 0x00030070,
            0x00030072, 0x00030036, 0x00030037, 0x0003006F, 0xED, 0x0003001B,
            0x0003000B, 0xAE, 0x00030077, 0xCD, 0x00030063, 0x70, 0x00030007,
            0x00030007, 0x00030004, 0x0003000E, 0x0003000F, 0x00030009,
            0x00030007, 0x00030008, 0x00030003, 0xE8, 0x00030034, 0x62,
            0x00030018, 0x0003000D, 0x00030071, 0x000300ED, 0x00030070,
            0x00030070, 0x00030018, 0x0003000F, 0x00030071, 0x000300EF,
            0x00030070, 0x00030070, 0x63, 0x00030018, 0x00030011, 0x00030071,
            0x000300F1, 0x00030070, 0x00030070, 0x00030018, 0x00030013,
            0x00030071, 0x000300F3, 0x00030070, 0x00030070, 0x64, 0x00030028,
            0x00030029, 0x000300F1, 0x00030001, 0x000300F1, 0x00030000,
            0x00030007, 0x66, 0x0003003C, 0x00030000, 0x000300CD, 0x00030067,
            0x00030045, 0x00030045, 0x00030010, 0x00030000, 0x00030000,
            0x00030000, 0x67, 0x00030000, 0x0003003C, 0x00030000, 0x00030000,
            0x00030000, 0x00030001, 0x00030054, 0x00030010, 0x00030032,
            0x00030098, 0x74, 0x00030010, 0x00030085, 0x00030080, 0x00030000,
            0x00030000, 0x0003004E, 0x00030000, 0x98, 0x0003003e, 0x00030007,
            0x35, 0x21, 0x11, 0x00010000 + 120, 0x29, 0x00010000 + 20
        },
        -- 休眠命令
        sleepcmd = { 0x00020010 },
        -- 唤醒命令
        wakecmd  = { 0x00020011 }
    }
   
    pmd.ldoset(15, pmd.LDO_VLCD)  -- 屏幕
    pmd.ldoset(8, pmd.LDO_VBACKLIGHT_R)--必需有,否者屏幕无背光
    disp.init(para)
    disp.setbkcolor(0)--设置背景颜色
    disp.clear()
    disp.update()
    sys.publish("LCD_INIT")
    log.info("lcd","初始化完成!")
end

init()

 test.lua

module(..., package.seeall)
require "common"
CHAR_WIDTH = 24
function rgb(r, g, b)
    return (r - r % 8) / 8 * 2048 + (g - g % 4) / 4 * 32 + (b - b % 8) / 8
end

function text(s, x, y, r, g, b)
    if r and g and b then
        disp.setcolor(rgb(r, g, b))
    end
    disp.puttext(common.utf8ToGb2312(s), x, y)
end

--居中显示文字
function putStringCenter(s, x, y, r, g, b)
    local str = common.utf8ToGb2312(s)
    text(s, x - str:len() * ((CHAR_WIDTH - CHAR_WIDTH % 2) / 2), y, r, g, b)
end

sys.taskInit(function()
    local cnt=0
   
    sys.waitUntil("LCD_INIT")
    log.info("LCD", "已进入")
    disp.setfontheight(32)
    while true do

        putStringCenter(cnt, 70, 60, 220, 220, 220)
        disp.update()  
        cnt=cnt+1 
        sys.wait(100)
        disp.clear()
    end
    
end)

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

armcsdn

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值