上篇文章介绍了 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。
三维地质建模方法及程序实现
三维地质建模方法及程序实现
三维地质建模方法及程序实现
三维地质建模方法及程序实现
三维地质建模方法及程序实现
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)