STMCU小助手
发布时间:2022-9-30 18:06
|
1.实验原理 FS-MP1A使用的是GT911触摸芯片,通过I2C2总线与SoC进行数据交互。 . P, |+ {' W/ l: ^& u
8 G% C% X+ S/ `8 h 查看原理图确认I2C2管脚对应关系:& U# k5 w( v8 e3 w3 G! k
' o) ^: A' Q: U9 i 查看原理图确认中断管脚TP_IRQ和复位管脚TP_RST管脚对应关系: / A' H4 A2 w: g) G
1.I2C2设备树节点5 S* I8 \2 `3 l) S I2C节点添加与HDMI中对应I2C的内容一致,本节不再重复。/ R5 B5 c( }9 e! h7 e 2.触摸屏设备树节点3 y: _9 P V' w* ^5 U 参考goodix.txt及ST提供的I2C相关设备树文档,触摸屏节点内容如下: 3 k1 j/ u7 Q# D. | touchscreen@5d { compatible = "goodix,gt911";' A! {. P+ D' S8 b reg = <0x5d>; * }. h- l8 m J2 }2 U4 L7 E& W5 [ irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>; ' A! S& ]. _, E interrupt-parent = <&gpiog>; interrupts = <7 IRQ_TYPE_EDGE_FALLING>;" r: s2 ` Y1 M status = "okay"; // touchscreen-inverted-x;7 z* L$ ` h' r* k0 f3 F touchscreen-inverted-y;# S- I7 }$ T0 N3 S. E // touchscreen-swapped-x-y;# K5 ], H Z8 k" ~4 z" ]) Y # w; A$ M6 m' }1 ?6 i2 z };+ Z1 M# r' T9 T8 L& b% \' x- l( K ) u& o( e8 f$ M; ?- o! T* h3 D 2.实验目的2 |: a: D3 m2 x* q& B: ?( ^! R& M 熟悉基于Linux操作系统下的MIPI 触摸屏设备驱动移植配置过程。 H1 o O; d6 s7 |3 F$ y' u x 3.实验平台* w, [' d% W9 H. g1 S 华清远见开发环境,FS-MP1A平台; 4.实验步骤$ r5 ` T6 s0 t( b" k- i% J$ F 1.导入交叉编译工具链 linux@ubuntu source /opt/st/stm32mp1/3.1-openstlinux-5.4-dunfell-mp1-20-06-24/environment-setup-cortexa7t2hf-neon-vfpv4-ostl-linux-gnueabi5 V6 j! n$ a( H. ~& {/ E3 a' e0 i1 J9 V# X 2.修改设备树 修改arch/arm/boot/dts/stm32mp157a-fsmp1a-mipi050.dts文件,在文件末尾增加如下内容:; D: U+ t9 i7 y7 N0 ?& I' e4 y &i2c2 { 6 [3 x! v/ ^: h* v' V* G0 d pinctrl-names = "default", "sleep"; pinctrl-0 = <&i2c2_pins_a>;& L# o% d3 r3 z& C a pinctrl-1 = <&i2c2_pins_sleep_a>;4 }& |/ b( O- d% D % ?7 g) m( u5 o. C# g! M1 T0 v1 K i2c-scl-rising-time-ns = <100>; i2c-scl-falling-time-ns = <7>;$ H' g9 _ C) Z. s, j6 t status = "okay";: s1 p# `' Y5 J6 v / b0 z) ~& a. g2 I3 Z, H; @ /delete-property/dmas;2 f& D8 M* J0 E! Z# B z- L 2 e, ?& X% g6 p* W /delete-property/dma-names; $ T# R+ p. D. ]3 ]) y9 k touchscreen@5d {& p. b) n( U% n compatible = "goodix,gt911";5 m% E- {2 n8 F8 c reg = <0x5d>; irq-gpios = <&gpiog 7 (GPIO_ACTIVE_HIGH | GPIO_PULL_UP)>; 9 b) V9 |) k1 L% q# D& e5 e reset-gpios = <&gpiog 8 GPIO_ACTIVE_HIGH>; 4 G6 w) Q6 c7 _& m7 s interrupt-parent = <&gpiog>;" V+ I, \. {& I" }6 Q- g" x 0 [* i2 J! h/ K( j4 @, b1 k% R# N interrupts = <7 IRQ_TYPE_EDGE_FALLING>;" A; N" U$ l7 ]& ^3 i status = "okay";' C7 s. H8 R7 @3 u+ T 7 t# G2 r! w& k9 w) Y' d2 G! J1 G& d // touchscreen-inverted-x; touchscreen-inverted-y; // touchscreen-swapped-x-y; ) U, y. b; X T1 _. M };: k/ d3 N0 z8 |/ o! [( q6 y }; 3.配置内核& M, @# q. m! z. N+ n' } 由于内核源码默认配置以及支持sii902x,本节列出主要选项,如下: linux@ubuntu make menuconfig- x6 B' E3 D6 {2 j9 eDevice Drivers ---> 7 D( g0 w$ \, y4 j+ Y( V Graphics support ---> " j* Y4 `/ A0 M! {& y: l( ] <*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->3 f) }1 ~9 Y( u* I <*> DRM Support for STMicroelectronics SoC Series : ]6 _3 M$ h& ~# m* A Display Interface Bridges --->+ Y3 ~$ J7 e# J4 C ; Y: b2 W7 p( _: ^( v8 y6 k <*> Silicon Image sii902x RGB/HDMI bridge 4 _9 g- Y }9 t# ]! x* R 4.编译内核级设备树: linux@ubuntu make -j4 uImage dtbs LOADADDR=0xC2000040, L7 ~3 x: L% B( c: |9 z& F, U 5.重启测试 将编译好的设备树和内核镜像拷贝到/tftpboot目录下,通过tftp引导内核,设备连接MIPI屏幕,重启设备后查看/dev会多出event0的信息,这是点击屏幕会的到反馈。& y; A3 f0 Y* S, Q# U' J root@fsmp1a:# ls /dev/input s- x% f" Y; e& |8 b3 p
7 Q8 n0 o! n+ s! o( { ————————————————$ v9 y/ e) f' ~( E& O 版权声明:清远见IT开放实验室2 l, P2 f( V3 c4 p |
扩展STM32微处理器,实现高性价比、低功耗和灵活性能
STM32MP1 自举程序编程:USB DFU/USART 协议全解析
兔哥心中的ST中文论坛
我心中的ST中文论坛
STM32 开发者指南:ST.com 全新 MCU 产品阵容视觉布局深度解析
深度拆解 STM32MP1 Boot 链路
STM32串口自动识别波特率的原理
STM32MP135 MP157 MP257 CoreMark移植&&跑分对比&&多核心负载不均衡问题排查与解决
STM32--STM32 微控制器详解
为什么学了几天STM32一脸茫然?
微信公众号
手机版