显示技术之MIPI接口LCD的DSI指令配置

显示技术之MIPI接口LCD的DSI指令配置,第1张

上篇文章介绍了 MIPI DSI 协议数据包,正耐陵本篇介绍 MIPI 接口 LCD 的 DSI 指令配置方法。

文中选择集创北方的 WVGA 整合型面板驱动芯片 ICNL9700 。该芯片支持 MIPI DSI 接口, MIPI DSI 上的两个数据通道支举戚持高达550 Mbps 。

1、初始化参数

FAE 会提供 MIPI DSI 的初始化参数,截取部分参数如下:

每行第一个{}中的数据表示命令,后面{}中的数据表示参数。命令和参数的具体含义可参考 ICN9700 Datasheet ,下图展示部分说明:

2、MIPI DSI数据包

MIPI DSI 协议包括短数据包和长数据包。

对于短数据包,格式为: DI + DATA0~1 + ECC 。

对于长数据包,格式为: PH ( DI + Word Count + ECC ) + Packet Data + PF 。

DI 中 Data Type 部分值的含义如下:

0x5:没有参数,即只有1个 CMD ,对应上面初始化参数中的命令0x11。

0x15:1个参数,即1个 CMD + 1个 Parameter ,对应上面初始化参数中的命令0x36。

0x39:长包写,接1个 CMD +2个及以上的 Parameter ,对应上面初始化参数中的命令0xF0、0xF1。亩搏

上面初始化参数,按照 MIPI DSI 协议组包后的数据为:

完成数据包的组装后,调用对应 CPU 平台提供的 MIPI 数据传输接口即可完成 MIPI DSI 接口 LCD 的初始化。

注:

在 LCD 初始化前,需要打开 LCD 的背光和完成 LCD 的复位。

驱动侍迹仿搞定了就在主板加一个屏幕接口,插一块新的屏幕就好了

刚转过来做安卓下的驱动开发,公司使用的是高通的平台,代码拉下来之后发州坦现,这次的驱动结构改变还是比较大的,现在遇到的问题是不知道从什么地方下手增加一块芯片新屏的驱动(驱动IC:0TM9605A)?

驱动文老纤件部分代码如下:

Objective C code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

&mdss_mdp {

dsi_truly_wvga_vid: qcom,mdss_dsi_truly_wvga_video {

qcom,mdss-dsi-panel-name = "Truly WVGA video mode dsi panel"

qcom,mdss-dsi-panel-controller = <&mdss_dsi0>

qcom,mdss-dsi-panel-type = "dsi_video_mode"

qcom,mdss-dsi-panel-destination = "display_1"

qcom,mdss-dsi-panel-mode-gpio-state = "high"

qcom,mdss-dsi-panel-framerate = <60>

qcom,mdss-dsi-virtual-channel-id = <0>

qcom,mdss-dsi-stream = <0>

qcom,mdss-dsi-panel-width = <540>

qcom,mdss-dsi-panel-height = <960>

qcom,mdss-dsi-h-front-porch = <32>

qcom,mdss-dsi-h-back-porch = <32>

qcom,mdss-dsi-h-pulse-width = <8>

qcom,mdss-dsi-h-sync-skew = <4>

qcom,mdss-dsi-v-back-porch = <16>

qcom,mdss-dsi-v-front-porch = <15>

qcom,mdss-dsi-v-pulse-width = <1>

qcom,mdss-dsi-h-left-border = <0>

qcom,mdss-dsi-h-right-border = <0>

qcom,mdss-dsi-v-top-border = <0>

qcom,mdss-dsi-v-bottom-border = <0>

qcom,mdss-dsi-bpp = <24>

qcom,mdss-dsi-underflow-color = <0xff>

qcom,mdss-dsi-border-color = <0>

qcom,mdss-dsi-on-command = [

05 01 00 00 01 00 02

00 00

39 01 00 00 01 00 04

ff 96 05 01

05 01 00 00 01 00 02

00 80

05 01 00 00 01 00 03

ff 96 05

05 01 00 00 01 00 02

00 92

05 01 00 00 01 00 03

ff 10 02

05 01 00 00 00 00 02

00 B4

05 01 00 00 00 00 02

C0 50

....]

qcom,mdss-dsi-off-command = [05 01 00 00 32 00 02 28 00

05 01 00 00 78 00 02 10 00]

qcom,mdss-dsi-on-command-state = "dsi_lp_mode"

qcom,mdss-dsi-off-command-state = "dsi_lp_mode"

qcom,mdss-dsi-h-sync-pulse = <0>

qcom,mdss-dsi-traffic-mode = "non_burst_sync_event"

qcom,mdss-dsi-bllp-eof-power-mode

qcom,mdss-dsi-bllp-power-mode

qcom,mdss-dsi-lane-1-state

qcom,mdss-dsi-lane-2-state

qcom,mdss-dsi-panel-timings = [87 1E 14 00 44 4B 19 21 22 03 04 00]

qcom,mdss-dsi-t-clk-post = <0x04>

qcom,mdss-dsi-t-clk-pre = <0x1b>

qcom,mdss-dsi-bl-min-level = <1>

qcom,mdss-dsi-bl-max-level = <255>

qcom,mdss-dsi-dma-trigger = "trigger_sw"

qcom,mdss-dsi-mdp-trigger = "none"

qcom,mdss-dsi-bl-pmic-control-type = "bl_ctrl_wled"

qcom,mdss-dsi-reset-sequence = <1 20>, <0 2>, <1 20>

}

}

从kernel启动的log中可以看出,默认加载的就是这个驱动文件(dsi-panel-truly-wvga-video.dtsi)

Plain Text code?

1

2

3

4

5

6

<6>[0.000000] Machine: Qualcomm MSM 8610 (Flattened Device Tree), model: Qualcomm MSM 8610v2 MTP

<4>[0.000000] Built 1 zonelists in Zone order, mobility grouping on. Total pages: 170578

<5>[0.000000] Kernel command line: console=ttyHSL0,115200,n8 androidboot.console=ttyHSL0 androidboot.hardware=qcom user_debug=31 msm_rtb.filter=0x37 androidboot.emmc=true androidboot.serialno=cefa0ae1 androidboot.baseband=msm mdss_mdp.panel=1:dsi:0:qcom,mdss_dsi_truly_wvga_video

<6>[0.000000] PID hash table entries: 4096 (order: 2, 16384 bytes)

Plain Text code?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

<6>[0.553959] mdss_dsi_panel_init: Panel Name = Truly WVGA video mode dsi panel

<3>[0.554170] mdss_dsi_parse_dcs_cmds: dtsi cmd=0 error, len=10497

<6>[0.554190] mdss_dsi_panel_init:945 Continuous splash flag not found.

<6>[0.554201] mdss_dsi_panel_init:961 Partial update disabled.

<3>[0.554242] dsi_parse_gpio:156, Disp_en gpio not specified

<6>[0.554784] mdss_register_panel: adding framebuffer device fdd00000.qcom,mdss_dsi

<3>[0.555023] mdp3_panel_register_done: lk continuous splash, but kerenl not

<6>[0.584899] mdss_fb_register: FrameBuffer[0] 540x960 size=0 registered successfully!

<7>[0.585136] Registered led device: lcd-backlight

<6>[0.626029] msm_serial_hsl_probe: detected port #0 (ttyHSL0)

<3>[0.626049] AXI: get_pdata(): Error: Client name not found

http://bbs.csdn.net/topics/390709815

4.3.8.1 迭代求解算法

DSI方程一般采族改用迭代算法求解。除去模糊控制点约束的DSI迭代方程只与结点间的拓扑关系有关,只要拓扑关系不变,这些约束系数就不会改变,因此可以一次计算完毕,不需随着迭代重复计算。迭代算法如下:

三维地质建模方法及程序实现

4.3.8.2 迭代求解程序实现

这里提供一个插值地质界面的DSI程序,φ函数为曲面结点的三维坐标。*rgn内存储了三角网格结点与网格单元,原始数据rgn->iNds包括若干由三维坐标定义的控制点。程序中的数据结构参谈轮见含穗信第2章。在运行该程序之前,应已将每个网格结点的邻域点找到,并存储在rgn->pNds.GetAt(i)->sNeiOnMesh内。另外,应先设置固定约束,如果某个结点是固定点,则rgn->pNds.GetAt(i)->CF==1,其他点的CF均为0。

三维地质建模方法及程序实现

三维地质建模方法及程序实现

三维地质建模方法及程序实现

三维地质建模方法及程序实现

三维地质建模方法及程序实现


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12245378.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-22
下一篇 2023-05-22

发表评论

登录后才能评论

评论列表(0条)

保存