826|2

289

帖子

0

TA的资源

纯净的硅(中级)

楼主
 

全志D1h开发板MIPI屏适配 [复制链接]

 

MIPI屏适配

100ASK-D1-H_DualDisplay-DevKit V11

1. 显示适配

1.1 修改设备树

1.1.1 修改内核设备树

进入目录:

  1. cd /home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha/linux-5.4

修改board.dts:

  1. &lcd0 {
  2. lcd_used = <1>;
  3. lcd_driver_name = "tft08006";
  4. lcd_backlight = <100>;
  5. lcd_if = <4>;
  6. lcd_x = <480>;
  7. lcd_y = <800>;
  8. lcd_width = <52>;
  9. lcd_height = <52>;
  10. lcd_dclk_freq = <25>;
  11. lcd_pwm_used = <1>;
  12. lcd_pwm_ch = <0>;
  13. lcd_pwm_freq = <1000>;
  14. lcd_pwm_pol = <0>;
  15. lcd_pwm_max_limit = <255>;
  16. lcd_hbp = <10>;
  17. lcd_ht = <515>;
  18. lcd_hspw = <5>;
  19. lcd_vbp = <20>;
  20. lcd_vt = <830>;
  21. lcd_vspw = <5>;
  22. lcd_dsi_if = <0>;
  23. lcd_dsi_lane = <2>;
  24. lcd_lvds_if = <0>;
  25. lcd_lvds_colordepth = <0>;
  26. lcd_lvds_mode = <0>;
  27. lcd_frm = <0>;
  28. lcd_hv_clk_phase = <0>;
  29. lcd_hv_sync_polarity= <0>;
  30. lcd_gamma_en = <0>;
  31. lcd_bright_curve_en = <0>;
  32. lcd_cmap_en = <0>;
  33. lcd_fsync_en = <0>;
  34. lcd_fsync_act_time = <1000>;
  35. lcd_fsync_dis_time = <1000>;
  36. lcd_fsync_pol = <0>;
  37. deu_mode = <0>;
  38. lcdgamma4iep = <22>;
  39. smart_color = <90>;
  40. lcd_gpio_0 = <&pio PG 13 GPIO_ACTIVE_HIGH>;
  41. pinctrl-0 = <&dsi4lane_pins_a>;
  42. pinctrl-1 = <&dsi4lane_pins_b>;
  43. };

根据原理图:

image-1

可以查看到,mipi屏的pwm通道引脚是PB5,设备树中搜索PB5,发现有I2C设备树节点占用,需要把status位设置为disabled

lcd0设备树节点中的pwm通道是pwm0,即把pwm0设备树节点的引脚改为相应的PB5引脚:

image-3

1.1.2 修改uboot设备树

进入目录:

  1. /home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha

修改uboot-board.dts:

  1. &lcd0 {
  2. lcd_used = <1>;
  3. lcd_driver_name = "tft08006";
  4. lcd_backlight = <100>;
  5. lcd_if = <4>;
  6. lcd_x = <480>;
  7. lcd_y = <800>;
  8. lcd_width = <52>;
  9. lcd_height = <52>;
  10. lcd_dclk_freq = <25>;
  11. lcd_pwm_used = <1>;
  12. lcd_pwm_ch = <0>;
  13. lcd_pwm_freq = <1000>;
  14. lcd_pwm_pol = <0>;
  15. lcd_pwm_max_limit = <255>;
  16. lcd_hbp = <10>;
  17. lcd_ht = <515>;
  18. lcd_hspw = <5>;
  19. lcd_vbp = <20>;
  20. lcd_vt = <830>;
  21. lcd_vspw = <5>;
  22. lcd_dsi_if = <0>;
  23. lcd_dsi_lane = <2>;
  24. lcd_lvds_if = <0>;
  25. lcd_lvds_colordepth = <0>;
  26. lcd_lvds_mode = <0>;
  27. lcd_frm = <0>;
  28. lcd_hv_clk_phase = <0>;
  29. lcd_hv_sync_polarity= <0>;
  30. lcd_io_phase = <0x0000>;
  31. lcd_dsi_te = <0>;
  32. lcd_gamma_en = <0>;
  33. lcd_bright_curve_en = <0>;
  34. lcd_cmap_en = <0>;
  35. lcd_fsync_en = <0>;
  36. lcd_fsync_act_time = <1000>;
  37. lcd_fsync_dis_time = <1000>;
  38. lcd_fsync_pol = <0>;
  39. deu_mode = <0>;
  40. lcdgamma4iep = <22>;
  41. smart_color = <90>;
  42. lcd_gpio_0 = <&pio PG 13 GPIO_ACTIVE_HIGH>;
  43. pinctrl-0 = <&dsi4lane_pins_a>;
  44. pinctrl-1 = <&dsi4lane_pins_b>;
  45. };

1.2 内核配置

修改内核驱动:

进入目录:

  1. ~/tina-d1-h/lichee/linux-5.4/drivers/video/fbdev/sunxi/disp2/disp/lcd

在这里100ASK_T113-PRO开发板适配4寸MIPI屏-Tina SDK - Allwinner / T113s3-PRO - 嵌入式开发问答社区可以下载到相应的驱动,替换到TinaSDK里面的tft08006.ctft08006.h

并修改如下:

image-9

执行ckernel,进入内核配置界面:

  1. m kernel_menuconfig

选上屏幕显示驱动TFT08006

image-4

选上支持显示框架驱动:

image-5

"DISP Driver Support"关乎显示驱动框架的整体启用,而"LCD panels select"则专注于在这个框架下选择和配置具体的LCD面板硬件。前者是基础支持层,后者是具体应用层。

1.3 uboot配置

修改uboot下的驱动:

进入目录:

  1. ~/tina-d1-h/lichee/brandy-2.0/u-boot-2018/drivers/video/sunxi/disp2/disp/lcd

在这里100ASK_T113-PRO开发板适配4寸MIPI屏-Tina SDK - Allwinner / T113s3-PRO - 嵌入式开发问答社区可以下载到相应的驱动,替换到TinaSDK里面的tft08006.ctft08006.h

并修改如下:
image-10

执行cboot,进入uboot配置界面:

  1. make menuconfig

选上屏幕显示驱动:

image-6

选上支持显示框架驱动:

image-7

mipi屏幕显示需要先在uboot阶段初始化。

1.4 显示测试

为了方便测试屏幕显示,可以选上TinaSDK自带的lvgl例程。

执行croot,进入配置界面:

  1. make menuconfig

选上lvgl例程:

image-8

编译make,打包pack

烧录到板子后,执行lv_examples 1:

image-11

2. 触摸适配

2.1 修改内核设备树

根据原理图:

image-12

可以查看:

TP_INT→PB6;TP_RESET→PB4;DSI_SCL→PB0;DSI_SDA→PB1;

进入:

  1. vi /home/ubuntu/tina-d1-h/device/config/chips/d1-h/configs/nezha/linux-5.4/board.dts

image-13

看到PB0、PB1引脚对应的是twi2设备树节点。所以需要在twi2设备树节点中添加触摸屏设备树节点。

  1. &twi2 {
  2. clock-frequency = <400000>;
  3. pinctrl-0 = <&twi2_pins_a>;
  4. pinctrl-1 = <&twi2_pins_b>;
  5. pinctrl-names = "default", "sleep";
  6. dmas = <&dma 45>, <&dma 45>;
  7. dma-names = "tx", "rx";
  8. status = "okay";
  9. ctp@38 {
  10. compatible = "focaltech,fts";
  11. reg = <0x38>;
  12. status = "okay";
  13. interrupt-parent = <&pio>;
  14. interrupts = <PB 6 IRQ_TYPE_LEVEL_LOW>;
  15. focaltech,reset-gpio = <&pio PB 4 GPIO_ACTIVE_HIGH>;
  16. focaltech,irq-gpio = <&pio PB 6 IRQ_TYPE_LEVEL_LOW>;
  17. focaltech,max-touch-number = <5>;
  18. focaltech,display-coords = <0 0 480 800>;
  19. focaltech,reg_vdd = <0x0000001f>;
  20. focaltech,reg_avdd = <0x0000001f>;
  21. };
  22. };

如果原来有同样地址为0x38的I2C设备和触摸设备的节点时,可以注释或者删除。

2.2 添加触摸驱动

Tina_SDK自带相应的触摸驱动,只需修改内核配置,把驱动编译进系统。

执行ckernel进入内核目录。

执行m kernel_menuconfig,进入内核配置界面,选上Focaltech Touchscreen<span> </span>

image-14

执行croot,进入SDK根目录,执行make menuconfig进入配置界面,把触摸驱动模块添加进文件系统中:

image-15

2.3 修改触摸驱动

在测试过程中,发现触摸点(x,y)不对,需要修改驱动程序。

进入目录:

  1. tina-d1-h/lichee/linux-5.4/drivers/input/touchscreen/focaltech_touch

修改:

  1. vim focaltech_core.c

两处修改:

  • fts_input_dev_report_a函数中修改,找到相应的位置:
  1. #原来的
  2. input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->au16_x[i]);
  3. input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->au16_y[i]);
  4. #修改的
  5. input_report_abs(data->input_dev, ABS_MT_POSITION_X, -(event->au16_x[i] - 480));
  6. input_report_abs(data->input_dev, ABS_MT_POSITION_Y, -(event->au16_y[i] - 800));
  • fts_input_dev_report_b函数中修改,找到相应的位置:
  1. #原来的
  2. input_report_abs(data->input_dev, ABS_MT_POSITION_X, event->au16_x[i]);
  3. input_report_abs(data->input_dev, ABS_MT_POSITION_Y, event->au16_y[i]);
  4. #修改的
  5. input_report_abs(data->input_dev, ABS_MT_POSITION_X, -(event->au16_x[i] - 480));
  6. input_report_abs(data->input_dev, ABS_MT_POSITION_Y, -(event->au16_y[i] - 800));

2.4 修改lvgl驱动配置文件

如果在lvgl的例程上测试触摸功能,需要进入目录:

  1. cd /home/ubuntu/tina-d1-h/package/gui/littlevgl-8/lv_examples/src

修改:

  1. vim lv_drv_conf.h

image-16

如果之前配置过lvgl例程,需要进入目录:

  1. cd /home/ubuntu/tina-d1-h/out/d1-h-nezha/compile_dir/target

删除lv_examples,再进行编译打包烧录。

开发板上执行lv_examples 0,测试:
image-17

最新回复

韦老师的开发板,外设丰富,教程也非常之好!  详情 回复 发表于 2024-7-14 07:00
点赞 关注(1)
 
 

回复
举报

7042

帖子

0

TA的资源

五彩晶圆(高级)

沙发
 

MIPI屏适配步骤还挺多,最后还要修改lvgl驱动配置文件

 
 
 

回复

7215

帖子

11

TA的资源

版主

板凳
 
韦老师的开发板,外设丰富,教程也非常之好!
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
【干货上新】电源解决方案和技术第二趴 | DigiKey 应用探索站
当月好物、电源技术资源、特色活动、DigiKey在线实用工具,干货多多~

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

 
机器人开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网 9

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表