• 合宙昆仑镜LCD驱动测试


     昆仑镜官方相关资料

     

     LCD 驱动芯片

     

     

    LCD屏幕接口定义

     昆仑镜LCD原理图

     

     

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

    固件选用LuatOS-Air_V3206_RDA8910_RFTLLTSXY_0x90000.pac

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

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

    导致屏幕背光不亮

     main.lua

    1. PROJECT = 'KLJ_LCD_Driver_Test'
    2. VERSION = '2.0.0'
    3. require 'log'
    4. LOG_LEVEL = log.LOGLEVEL_TRACE
    5. require 'sys'
    6. require "pins"
    7. require "lcd"
    8. require "test"
    9. lcd.init()
    10. sys.init(0, 0)
    11. sys.run()

    lcd.lua

    1. -- 硬件初始化
    2. module(..., package.seeall)
    3. width = 240
    4. height = 240
    5. -- lcd 初始化
    6. function init()
    7. local para1 = {
    8. width = width, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
    9. height = height, -- 分辨率高度,160像素;用户根据屏的参数自行修改
    10. bpp = 16, -- 位深度,彩屏仅支持16位
    11. bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
    12. xoffset = 0, -- X轴偏移
    13. yoffset = 0, -- Y轴偏移
    14. freq = 13000000, -- spi时钟频率,支持110K到13M(即110000到13000000)之间的整数(包含110000和13000000)
    15. pinrst = pio.P0_6, -- reset,复位引脚
    16. pinrs = pio.P0_1, -- rs,命令/数据选择引脚
    17. -- 初始化命令
    18. -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
    19. -- 延时类型:后两个字节表示延时时间(单位毫秒)
    20. -- 命令类型:后两个字节命令的值
    21. -- 数据类型:后两个字节数据的值
    22. initcmd = {
    23. 0xfe, 0xef, 0xb3, 0x0030003, -- 0x21,--反显
    24. 0x36, 0x0030048, -- 0x0030088,--上下颠倒
    25. 0x3a, 0x0030005, 0xb4, 0x0030021, 0xF0, 0x003002d, 0x0030054,
    26. 0x0030024, 0x0030061, 0x00300ab, 0x003002e, 0x003002f, 0x0030000,
    27. 0x0030020, 0x0030010, 0x0030010, 0x0030017, 0x0030013, 0x003000f,
    28. 0xF1, 0x0030002, 0x0030022, 0x0030025, 0x0030035, 0x00300a8,
    29. 0x0030008, 0x0030008, 0x0030000, 0x0030000, 0x0030009, 0x0030009,
    30. 0x0030017, 0x0030018, 0x003000f, 0xfe, 0xff, 0x11, 0x010078, 0x29
    31. },
    32. -- 休眠命令
    33. sleepcmd = { 0x00020010 },
    34. -- 唤醒命令
    35. wakecmd = { 0x00020011 }
    36. }
    37. --驱动芯片:GC9A01 深圳秦唐盛世科技有限公司
    38. local para = {
    39. width = 240, -- 分辨率宽度,128像素;用户根据屏的参数自行修改
    40. height = 240, -- 分辨率高度,128像素;用户根据屏的参数自行修改
    41. bpp = 16, -- 位深度,彩屏仅支持16位
    42. bus = disp.BUS_SPI4LINE, -- LCD专用SPI引脚接口,不可修改
    43. xoffset = 0, -- X轴偏移
    44. yoffset = 0, -- Y轴偏移
    45. freq = 20000000, -- spi时钟频率
    46. pinrst = pio.P0_6, -- reset,复位引脚
    47. pinrs = pio.P0_1, -- rs,命令/ 数据选择引脚/ 268开发板为15
    48. -- 初始化命令
    49. -- 前两个字节表示类型:0001表示延时,0000或者0002表示命令,0003表示数据
    50. -- 延时类型:后两个字节表示延时时间(单位毫秒)
    51. -- 命令类型:后两个字节命令的值
    52. -- 数据类型:后两个字节数据的值
    53. initcmd = {
    54. 0x00010000 + 100, 0xEF, 0xEB, 0x00030014, 0xFE, 0xEF, 0xEB,
    55. 0x00030014, 0x84, 0x00030040, 0x85, 0x000300FF, 0x86, 0x000300FF,
    56. 0x87, 0x000300FF, 0x88, 0x0003000A, 0x89, 0x00030021, 0x8A,
    57. 0x00030000, 0x8B, 0x00030080, 0x8C, 0x00030001, 0x8D, 0x00030001,
    58. 0x8E, 0x000300FF, 0x8F, 0x000300FF, 0xB6, 0x00030000, 0x00030020,
    59. 0x36, 0x00030008, 0x3A, 0x00030005, 0x90, 0x00030008, 0x00030008,
    60. 0x00030008, 0x00030008, 0xBD, 0x00030006, 0xBC, 0x00030000, 0xFF,
    61. 0x00030060, 0x00030001, 0x00030004, 0xC3, 0x00030013, 0xC4,
    62. 0x00030013, 0xC9, 0x00030022, 0xBE, 0x00030011, 0xE1, 0x00030010,
    63. 0x0003000E, 0xDF, 0x00030021, 0x0003000c, 0x00030002, 0xF0,
    64. 0x00030045, 0x00030009, 0x00030008, 0x00030008, 0x00030026,
    65. 0x0003002A, 0xF1, 0x00030043, 0x00030070, 0x00030072, 0x00030036,
    66. 0x00030037, 0x0003006F, 0xF2, 0x00030045, 0x00030009, 0x00030008,
    67. 0x00030008, 0x00030026, 0x0003002A, 0xF3, 0x00030043, 0x00030070,
    68. 0x00030072, 0x00030036, 0x00030037, 0x0003006F, 0xED, 0x0003001B,
    69. 0x0003000B, 0xAE, 0x00030077, 0xCD, 0x00030063, 0x70, 0x00030007,
    70. 0x00030007, 0x00030004, 0x0003000E, 0x0003000F, 0x00030009,
    71. 0x00030007, 0x00030008, 0x00030003, 0xE8, 0x00030034, 0x62,
    72. 0x00030018, 0x0003000D, 0x00030071, 0x000300ED, 0x00030070,
    73. 0x00030070, 0x00030018, 0x0003000F, 0x00030071, 0x000300EF,
    74. 0x00030070, 0x00030070, 0x63, 0x00030018, 0x00030011, 0x00030071,
    75. 0x000300F1, 0x00030070, 0x00030070, 0x00030018, 0x00030013,
    76. 0x00030071, 0x000300F3, 0x00030070, 0x00030070, 0x64, 0x00030028,
    77. 0x00030029, 0x000300F1, 0x00030001, 0x000300F1, 0x00030000,
    78. 0x00030007, 0x66, 0x0003003C, 0x00030000, 0x000300CD, 0x00030067,
    79. 0x00030045, 0x00030045, 0x00030010, 0x00030000, 0x00030000,
    80. 0x00030000, 0x67, 0x00030000, 0x0003003C, 0x00030000, 0x00030000,
    81. 0x00030000, 0x00030001, 0x00030054, 0x00030010, 0x00030032,
    82. 0x00030098, 0x74, 0x00030010, 0x00030085, 0x00030080, 0x00030000,
    83. 0x00030000, 0x0003004E, 0x00030000, 0x98, 0x0003003e, 0x00030007,
    84. 0x35, 0x21, 0x11, 0x00010000 + 120, 0x29, 0x00010000 + 20
    85. },
    86. -- 休眠命令
    87. sleepcmd = { 0x00020010 },
    88. -- 唤醒命令
    89. wakecmd = { 0x00020011 }
    90. }
    91. pmd.ldoset(15, pmd.LDO_VLCD) -- 屏幕
    92. pmd.ldoset(8, pmd.LDO_VBACKLIGHT_R)--必需有,否者屏幕无背光
    93. disp.init(para)
    94. disp.setbkcolor(0)--设置背景颜色
    95. disp.clear()
    96. disp.update()
    97. sys.publish("LCD_INIT")
    98. log.info("lcd","初始化完成!")
    99. end
    100. init()

     test.lua

    1. module(..., package.seeall)
    2. require "common"
    3. CHAR_WIDTH = 24
    4. function rgb(r, g, b)
    5. return (r - r % 8) / 8 * 2048 + (g - g % 4) / 4 * 32 + (b - b % 8) / 8
    6. end
    7. function text(s, x, y, r, g, b)
    8. if r and g and b then
    9. disp.setcolor(rgb(r, g, b))
    10. end
    11. disp.puttext(common.utf8ToGb2312(s), x, y)
    12. end
    13. --居中显示文字
    14. function putStringCenter(s, x, y, r, g, b)
    15. local str = common.utf8ToGb2312(s)
    16. text(s, x - str:len() * ((CHAR_WIDTH - CHAR_WIDTH % 2) / 2), y, r, g, b)
    17. end
    18. sys.taskInit(function()
    19. local cnt=0
    20. sys.waitUntil("LCD_INIT")
    21. log.info("LCD", "已进入")
    22. disp.setfontheight(32)
    23. while true do
    24. putStringCenter(cnt, 70, 60, 220, 220, 220)
    25. disp.update()
    26. cnt=cnt+1
    27. sys.wait(100)
    28. disp.clear()
    29. end
    30. end)

  • 相关阅读:
    计算圆的周长和面积——python
    【数据库专家揭秘】MySql数据库设计黄金法则,让你的数据更稳定、更高效!
    Matlab save colormap
    《GB/T 8566-2022/ISO/IEC/IEEE:系统与软件工程生存周期过程》国家标准解读,附下载地址
    非零基础自学Java (老师:韩顺平) 第3章 变量 3.17 基本数据类型和String类型的转换
    ssh服务详解
    【c++入门(2)】并查集
    最佳使用案例NO.1–干涉测量
    列式数据库管理系统——ClickHouse(version:22.7.1 环境部署)
    【历史上的今天】8 月 5 日:微信 5.0 发布;百度上市;LinkedIn 创始人诞生
  • 原文地址:https://blog.csdn.net/armcsdn/article/details/125445325