|
【Linux】
4 lane mipi点屏成功,顺便问一下8lane的该怎么改?
发表于 2018-7-2 10:20:24
浏览:17987
|
回复:5
打印
只看该作者
[复制链接]
楼主
本帖最后由 tndcool86 于 2018-7-2 10:42 编辑
买了一个rk3399的开发板,官方的接口和要调试的屏幕线序对不上,又做了块转接板,前后忙了一个月。比较幸运的是现在已经点亮了。mipi的信号基本是通用的,Reset信号没有变,我的屏幕不用其它的信号了。所以只需要改改dts就可以了
直接改rk3399-firefly-mipi.dts这个文件。
- &dsi {
- status = "okay";
- dsi_panel: panel {
- compatible ="simple-panel-dsi";
- reg = <0>;
- //ddc-i2c-bu
- //power-supply = <&vcc_lcd>;
- //pinctrl-0 = <&lcd_panel_reset &lcd_panel_enable>;
- backlight = <&backlight>;
- /*
- enable-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
- reset-gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
- */
- dsi,flags = <(MIPI_DSI_MODE_VIDEO | MIPI_DSI_MODE_VIDEO_BURST /*| MIPI_DSI_MODE_VIDEO_SYNC_PULSE*/)>;
- dsi,format = <MIPI_DSI_FMT_RGB888>;
- bus-format = <MEDIA_BUS_FMT_RGB666_1X18>;
- dsi,lanes = <4>;
- dsi,channel = <0>;
- enable-delay-ms = <35>;
- prepare-delay-ms = <6>;
- /*
- delay,power = <10>;
- delay,reset = <250>;
- delay,unreset = <0>;
- delay,unpower = <0>;
- */
- unprepare-delay-ms = <0>;
- disable-delay-ms = <20>;
-
- size,width = <120>;
- size,height = <170>;
- status = "okay";
-
- panel-init-sequence = [
- 05 20 01 29
- 05 96 01 11
- ];
- panel-exit-sequence = [
- 05 05 01 28
- 05 78 01 10
- ];
复制代码 enable-gpios = <&gpio1 1 GPIO_ACTIVE_HIGH>;
reset-gpios = <&gpio4 29 GPIO_ACTIVE_HIGH>;
如果需要改引脚,就修改这段代码。
dsi,lanes = <4>;
设置mipi为4 lane。
- timing0: timing0 {
- clock-frequency = <80000000>;
- hactive = <768>;
- vactive = <1024>;
- hsync-len = <20>; //20, 50
- hback-porch = <130>; //50, 56
- hfront-porch = <150>;//50, 30
- vsync-len = <40>;
- vback-porch = <130>;
- vfront-porch = <136>;
- hsync-active = <0>;
- vsync-active = <0>;
- de-active = <0>;
- pixelclk-active = <0>;
- };
复制代码 这段是设置屏幕参数的,就按照屏幕的datasheet 填就好了,建议先把这个参数填好,开始的时候我没有设置那些参数,用的是原来的lcd的参数,
屏幕说什么也点不亮,后来设完就正常了。
接下来说一下初始化,我是参考,《Rockchip DRM Panel Porting Guide》这篇文档。
05 20 01 29
05 96 01 11
前3 个字节(16 进制),分别代表Data Type,Delay,Payload Length
也就是
05 20 01 29
Data Type,Delay,Payload Length
29开始是实际发送的内容,也就是说29之前的内容都是和平台相关的,这些数据并不会发送给lcd,
05 是数据类型,20是延时,单位ms,01 是要发送的数据个数之和
如果你的lcd 要求发送 address 0xfe data 07,那么就应该写05 20 02 fe 07
对于数据类型,我的lcd datasheet中明确写出来是0x39,所以05要改成0x39.
至于sleep out和display on指令,我的datasheet并没有要求指令,试了一下05 也好用。
我也是第一次调试mipi 的lcd,设备树也是现学的,感觉还是应该多研究一下dts中每个变量的具体含义。
现在打算点 8 lane的屏幕了,还不知道该怎么改,不知道怎么使用TX1的接口,有没有大神指点一下,万分感谢!
|
|