1.实验原理* Z( K) @! B- N0 i, c$ L& M FS-MP1A使用的是GT911触摸芯片,通过I2C2总线与SoC进行数据交互。+ l% s; V# S. N; M 查看原理图确认I2C2管脚对应关系: 0 c) K) L1 w. L, j& v 4 l. }0 i* Y) h; A/ B2 I% {; i# c- v3 O 查看原理图确认中断管脚TP_IRQ和复位管脚TP_RST管脚对应关系: * u: D" V$ I$ d8 w9 c. G( V+ z 1.I2C2设备树节点 I2C节点添加与HDMI中对应I2C的内容一致,本节不再重复。 & d' H `# i& F8 l C 2.触摸屏设备树节点8 b2 ^- J+ V3 r' E 参考goodix.txt及ST提供的I2C相关设备树文档,触摸屏节点内容如下: 3 K& q# {8 x6 G9 z n touchscreen@5d {% k( b- {8 r& Q! d6 u( B * z7 t# ]+ Y( E" x! Q compatible = "goodix,gt911";* r! v& ^' p# G7 }. x6 B$ ] 7 p5 T& h2 |! ` reg = <0x5d>; " _. P) n9 e: Q: U; ? f6 I* l9 O irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>;9 `) E9 o6 j0 I l / o# @) I& r5 [" a) {2 n1 M( {& h reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>; interrupt-parent = <&gpiog>;( O* G# e5 t" I, R$ E! t! C F1 ` * K; E2 `. r F9 f g interrupts = <7 IRQ_TYPE_EDGE_FALLING>; status = "okay"; # j$ H1 D" C$ d+ J6 u3 s // touchscreen-inverted-x;1 \5 g0 T: i9 A, p touchscreen-inverted-y;) I+ f6 S" @( ^8 ]* M! W( t! n# }! m // touchscreen-swapped-x-y; };# E1 j7 u: |* \6 v* M+ F 2.实验目的 熟悉基于Linux操作系统下的MIPI 触摸屏设备驱动移植配置过程。3 a6 ?* v- f& p. J/ t$ u, u 3.实验平台" v5 h+ r" X7 s7 I# z& S 华清远见开发环境,FS-MP1A平台; 7 i; q$ Y0 F! M5 c 4.实验步骤 1.导入交叉编译工具链- B q0 G( P, p& k7 I D% T/ j linux@ubuntu source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi) {7 S- u5 s$ p / k* G3 |& w! I8 y 2.修改设备树 修改arch/arm/boot/dts/stm32mp157a-fsmp1a-mipi050.dts文件,在文件末尾增加如下内容:% y3 v( ]4 T; q' J% D4 f 4 h3 D, V0 M% f1 K8 u$ A2 x &i2c2 { , C! z' T% e- s9 g w pinctrl-names = "default", "sleep"; . s4 \- U3 v$ u9 e+ z( Q& L7 s' D pinctrl-0 = <&i2c2_pins_a>; pinctrl-1 = <&i2c2_pins_sleep_a>; i2c-scl-rising-time-ns = <100>;: f4 R1 a" k0 |& W i2c-scl-falling-time-ns = <7>; ) G$ d2 |1 J" d- m2 f) e6 A status = "okay"; /delete-property/dmas;/ A0 C C1 K* Y % S2 @ `1 H- I0 q D4 j /delete-property/dma-names;8 ~" J5 S( B$ F. s, z6 H& H 7 N0 m1 U. e+ l( {# M* w9 Q2 q touchscreen@5d { : \, W. p$ k3 E2 i3 I" W' ^9 \ compatible = "goodix,gt911";7 S8 `0 u- }4 y. Z/ R + w; r) f0 H0 p- y" {( Z reg = <0x5d>;$ f; l' `: ~1 M9 ? 7 F8 M, h/ v0 b1 L5 z0 i irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; 0 B& e; @! a. r5 O reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>; 1 y1 B$ B( W- `) F% g interrupt-parent = <&gpiog>; interrupts = <7 IRQ_TYPE_EDGE_FALLING>;; w1 [$ D8 X" O- m3 O- D6 i- X ; m8 L, x6 l$ n3 l& F5 {$ \( E status = "okay"; // touchscreen-inverted-x;, G* ]! T* ?, [& U- m 1 X8 }, ]% N) P" w' K! z" x# U touchscreen-inverted-y;" Z4 l# V) Z) \5 S2 H8 u // touchscreen-swapped-x-y; }; - g0 x4 W- q: Y0 m# v# s1 p }; 3.配置内核 由于内核源码默认配置以及支持sii902x,本节列出主要选项,如下: linux@ubuntu make menuconfig, e$ Q# m r3 k# h* l$ B Device Drivers --->- z$ h ]% g: {# Z( v3 w Graphics support --->. S1 y7 d4 C: V* Z$ G) ?: @% N4 t" h 1 ]0 D- i5 C, s2 v; b8 {4 M <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) ---> <*> DRM Support for STMicroelectronics SoC Series Display Interface Bridges --->% P5 M$ l3 } Q) Z* v4 ^# X& m <*> Silicon Image sii902x RGB/HDMI bridge, K* h! |, o$ w6 n7 }, Q+ q 4.编译内核级设备树:* k( z0 \3 H) @$ h linux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040 / g. g6 \5 f" m* u2 Y, k2 d1 r1 H 5.重启测试# L& f' _5 B8 \( q 将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,设备连接MIPI屏幕,重启设备后查看/dev会多出event0的信息,这是点击屏幕会的到反馈。 root@fsmp1a:# ls /dev/input 2 ?: }1 {* j) K. h ———————————————— 版权声明:清远见IT开放实验室! S: z9 Z; h- C% T |
最新消息:意法半导体最具性价比、速度最快的单核MPU STM32MP13现已支持运行RTOS!意法半导体兑现了之前的承诺!
STM32MP135F-DK开发板评测-开箱亮屏
意法半导体扩展STM32Cube开发环境,简化单核STM32MP1裸机软件开发
1月18日有奖直播 | 如何在STM32MP13x上实现FOTA升级?
【STM32MP13x直播回顾】 直播答疑汇总
STM32MP135 开发平台介绍
使用STM32MP13: 如MCU般在Cortex-A核上裸 跑应用程序
米尔核心板加速基于STM32MP1的产品开发
STM32MP1充电桩全数字交互实现
STM32MP13 产品线 应用于工业和安全的高性价比MPU