完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用RK3399核心板CORE-3399-JD4,接口板是自制的,采用MIPI接口转LVDS,现在在3399的板子上装ubuntu18.04系统,在该系统上点亮LVDS屏幕。
1、首先安装Linux系统 我安装的是ubuntu16.04的系统,具体安装步骤不再过多描述。 2、按照firefly的维基教程安装开发环境和ubuntu18.04的系统源码 3、根文件系统 使用firefly官方提供的根文件系统,编译完成后总是有问题,于是下载了ubuntu18.04,2020年份的系统镜像,使用Android_Tool工具进行解包,将解包后其中的rootfs.img文件系统放到源码中进行编译,可以正常启动。 4、切换编译系统类型 我使用的是RK3399,aio-3399-jd4-lvds-ubuntu.mk,根据自己的型号选择相应的版本,在源码根目录输入 ./build.sh aio-3399-jd4-lvds-ubuntu.mk 打开这个文件,可以看到里面的内容,kernel dts为 rk3399-firefly-aiojd4-lvds.dts 5、配置设备树 在内核设备树目录下打开该dts,/kernel/arch/arm64/boot/dts/rockchip 下图中红框标出的三个,为配置外设经常用到的3个配置文件 修改背光 &backlight { status = "okay"; pwms = <&pwm1 0 25000 1>; //enable-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>; default-brightness-level = <199>; polarity = <1>; brightness-levels = < 199 198 197 196 195 194 193 192 191 190 189 188 187 186 185 184 183 182 181 180 179 178 177 176 175 174 173 172 171 170 169 168 167 166 165 164 163 162 161 160 159 158 157 156 155 154 153 152 151 150 149 148 147 146 145 144 143 142 141 140 139 138 137 136 135 134 133 132 131 130 129 128 127 126 125 124 123 122 121 120 119 118 117 116 115 114 113 112 111 110 109 108 107 106 105 104 103 102 101 100 99 98 97 96 95 94 93 92 91 90 89 88 87 86 85 84 83 82 81 80 79 78 77 76 75 74 73 72 71 70 69 68 67 66 65 64 63 62 61 60 59 58 57 56 55 54 53 52 51 50 49 48 47 46 45 44 43 42 41 40 39 38 37 36 35 34 33 32 31 30 29 28 27 26 25 24 23 22 21 20 19 18 17 16 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 >; }; 查询一下电路上背光是接到那个PWM上的,pwm0或者pwm1,配置为相应pwm。 设置default-level,即默认亮度。 设置brightness-level,即亮暗变化方向。 修改dsi配置,因为我在安卓上移植过液晶屏,所以屏参已经配置好了,这里我直接复制过来就行了。我使用的是天马的TM101JDHG30,具体屏的初始化序列,有一个文件可以配置,文件名称为:TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm 3399.xls,具体配置大家自行百度吧,时间长了我也记不太清楚了。 &dsi { status = "okay"; rockchip,lane-rate = <800>; dsi_panel: panel { ; reg = <0>; //ddc-i2c-bu //power-supply = <&vcc_lcd>; pinctrl-0 = <&lcd_panel_reset>; backlight = <&backlight>; //enable-gpios = <&gpio1 1 GPIO_ACTIVE_LOW>; reset-gpios = <&gpio1 13 GPIO_ACTIVE_LOW>; dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST | MIPI_DSI_MODE_LPM | MIPI_DSI_MODE_EOT_PACKET)>; dsi,format = //dsi,format = //bus-format = //bus-format = dsi,lvds-force-clk = <800>; // 800/2/3 ~= 65Mhz dsi,lanes = <4>; dsi,channel = <0>; enable-delay-ms = <35>; prepare-delay-ms = <6>; unprepare-delay-ms = <0>; disable-delay-ms = <20>; size,width = <120>; size,height = <170>; status = "okay"; panel-init-sequence = [ 29 00 06 3C 01 09 00 07 00 29 00 06 14 01 06 00 00 00 29 00 06 64 01 09 00 00 00 29 00 06 68 01 09 00 00 00 29 00 06 6C 01 09 00 00 00 29 00 06 70 01 09 00 00 00 29 00 06 34 01 1F 00 00 00 29 00 06 10 02 1F 00 00 00 29 00 06 04 01 01 00 00 00 29 00 06 04 02 01 00 00 00 29 00 06 50 04 21 01 E0 15 29 00 06 54 04 04 00 04 00 29 00 06 58 04 00 05 28 00 29 00 06 5C 04 01 00 02 00 29 00 06 60 04 20 03 28 00 29 00 06 64 04 01 00 00 00 29 10 06 A0 04 06 80 44 00 29 00 06 A0 04 06 80 04 00 29 00 06 04 05 04 00 00 00 29 00 06 80 04 00 01 02 03 29 00 06 84 04 04 07 05 08 29 00 06 88 04 09 0A 0E 0F 29 00 06 8C 04 0B 0C 0D 10 29 00 06 90 04 16 17 11 12 29 00 06 94 04 13 14 15 1B 29 00 06 98 04 18 19 1A 06 29 00 06 9C 04 31 04 00 00 ]; panel-exit-sequence = [ 05 05 01 28 05 78 01 10 ]; power_ctr: power_ctr { rockchip,debug = <0>; lcd_rst: lcd-rst { gpios = <&gpio1 13 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&lcd_panel_reset>; rockchip,delay = <120>; }; }; disp_timings: display-timings { native-mode = <&timing0>; timing0: timing0 { clock-frequency = <66866760>; hactive = <1280>; vactive = <800>; hsync-len = <10>; hback-porch = <2>; hfront-porch = <30>; vsync-len = <1>; vback-porch = <2>; vfront-porch = <40>; hsync-active = <0>; vsync-active = <0>; de-active = <0>; pixelclk-active = <0>; }; }; }; }; 下边为dsi配置的具体分析: 其中reset-gpios按照电路图引脚配置,要搜索一下是否有其他地方占用了这个IO资源,占用的屏蔽掉。 dsi,format输出格式,我的为RGB888。 dsi,lvds-force-clk,屏的频率,800MHz。 dsi,lanes,看电路图,用了几路线,填对应的数。 dsi,channel,看电路用了那个通道。 初始化序列,通过上边说的TC358764_5_774_5XBG_DSI-LVDS_Tv11p_nm 3399.xls生成对应的初始化序列。也可以跟厂家咨询初始化序列。 下边为屏的退出序列和时序配置。 clock-frequency为时钟频率,通过计算得出。 hactive为屏幕长,vactive为屏幕宽,和屏幕尺寸对应,剩下的为留边的长度宽度,如果屏幕有黑边或者少显示,则调整下边的这些参数即可。 修改vopl,vopb,如下图所示 hdmi使用的是vopl,那么dsi使用vopb,如图所示,hdmi_in_vopb为disabled,hdmi_in_vopl为okay,dsi_in_vopl为disabled,dsi_in_vopb为okay。各用一路。 配置好后,重新编译,烧录即可。 如果屏幕没有亮,则应检查以下几项: 1、reset引脚是否对,默认高低电平是否对,是否有其他地方配置该引脚。 2、屏幕初始化序列是否正确。 3、时序配置是否正确,根据屏幕参数进行配置。 4、vopl,vopb的配置是否正确,hdmi使用一路,dsi使用一路。 RK3399的linux系统,配置LVDS屏幕是可以使用的,如果不成功,则检查上述几项,基本就完事了。 遇到的问题: 1、升级后屏幕不亮,但是有背光,通过修改背光的默认值,背光有变化,说明dts的配置是没问题的,只是有某个地方没有配置对。 2、修改vopl,vopb配置后,HDMI无输出,说明配置的dts是正确的。 3、修改reset引脚后,屏幕出现白色,带有竖条纹,说明驱动有,可以使用,只是配置有问题。 4、搜索reset引脚,将其他dtsi中有用到该引脚的地方去掉后,液晶屏点亮。 |
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
基于米尔瑞芯微RK3576核心板/开发板的人脸疲劳检测应用方案
458 浏览 0 评论
716 浏览 1 评论
620 浏览 1 评论
1850 浏览 1 评论
3099 浏览 1 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 00:32 , Processed in 0.858732 second(s), Total 72, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号