F1C100S(Lichee Nano)触摸屏 (GT9147)

news/2024/12/4 19:44:09/

1、前提

  • Ubuntu 环境版本 (18.04)
Linux ubuntu 5.4.0-131-generic #147~18.04.1-Ubuntu SMP Sat Oct 15 13:10:18 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux
  • ARM GCC版本
gcc version 7.2.1 20171011 (Linaro GCC 7.2-2017.11)
  • F1C100S Linux版本 (linux-nano-5.2-tf) 链接
Linux buildroot 5.2.0-licheepi-nano #5 Sun Oct 23 18:25:54 PDT 2022 armv5tejl GNU/Linux
  • I2C 引脚注意上拉电阻

2、Linux配置

2.1 打开 Gooidx (make menuconfig)

在这里插入图片描述
或者手工在 .config中改为y
在这里插入图片描述

2.2 在子文件路径中添加驱动文件

在这里插入图片描述
gt9147.c 源码链接:

2.3 修改Makefile

文件路径 drivers/input/touchscreen/Makefile

在这里插入图片描述

2.4 修改设备树

子文件路径 arch/arm/boot/dts/suniv-f1c100s.dtsi

  • 在pio 中接入 i2c0_pins:
    在这里插入图片描述
 i2c0_pins: i2c0 {pins = "PE11", "PE12";function = "i2c0";};
  • 在后面插入i2c0节点,比如在uart2后面:
    在这里插入图片描述
                i2c0: i2c@1C27000{compatible = "allwinner,sun6i-a31-i2c";reg = <0x01c27000 0x400>;interrupts = <7>;clocks = <&ccu CLK_BUS_I2C0>;resets = <&ccu RST_BUS_I2C0>;pinctrl-names = "default";pinctrl-0 = <&i2c0_pins>;status = "disabled";#address-cells = <1>;#size-cells = <0>;};

子文件路径 arch/arm/boot/dts/suniv-f1c100s-licheepi-nano.dts

  • 引入头文件
#include <dt-bindings/input/input.h>
#include <dt-bindings/interrupt-controller/irq.h>
  • 插入&i2c0 节点。注意: gt9147地址有时候是0x14有时候是0x5d, 需要使用 I2cdetect 指令检查地址。启动信息也会提示
    在这里插入图片描述
&i2c0 {pinctrl-0 = <&i2c0_pins>;pinctrl-names = "default";status = "okay";gt9147:gt9147@14{compatible = "goodix,gt9147","goodix,gt9xx";reg = <0x14>;interrupt-parent = <&pio>;interrupts = <4 10 IRQ_TYPE_EDGE_FALLING>;/*(PE10)*/pinctrl-names = "default";irq-gpio = <&pio 4 10 GPIO_ACTIVE_HIGH>;/*(PE10>*/rst-gpio = <&pio 4 9 GPIO_ACTIVE_HIGH>; /*RST (PE9)*/status =  "okay";};
};
2.5 编译并自行复制到TF卡中

编译

make ARCH=arm CROSS_COMPILE=arm-linux-gnueabi- -j16

zImage (路径:arch/arm/boot)
在这里插入图片描述
dtb (路径:arch/arm/boot/dts)
在这里插入图片描述

3、Linux启动

3.1 检查启动信息

正常如下所示。如果报错(-6 -110 等),要检查I2C引脚电气连接、设备树地址配置等等。
在这里插入图片描述

3.2 i2cdetect 测试

正常的话对应地址应该是UU(驱动已占用)。48是荔枝派自带的,不用电阻屏就不用管他。

  • 如果3.1启动信息报错,这里又检查出个5d地址,就得回到设备树改地址为5d(见下方示例)
  • 如果提示 lock , 一般是缺上拉电阻,改硬件试试?
    在这里插入图片描述
        gt9147:gt9147@5d{compatible = "goodix,gt9147","goodix,gt9xx";reg = <0x5d>;
3.3 tslib 测试

运行 ts_test ,正常触摸屏蔽后就会输出如下坐标信息
在这里插入图片描述


http://www.ppmy.cn/news/242836.html

相关文章

PLC培训班一般多少钱?

PLC编程是一种数字运算操作的电子系统&#xff0c;专为在工业环境下应用而设计。它采用可编程逻辑控制器&#xff0c;用来在其内部存储执行逻辑运算、顺序控制、定时、计数和算术运算等操作的指令&#xff0c;并通过数字式、模拟式的输入和输出&#xff0c;控制各种类型的机械或…

C语言 变量与常量

1. 修饰符 a&#xff09;extern&#xff1a;声明一个已定义的变量&#xff0c;不能重新赋值&#xff1b; 注意&#xff1a;不建议在头文件中定义变量&#xff0c;而在源文件中定义&#xff0c;然后在头文件中使用extern声明。 因为若头文件中定义了变量&#xff0c;然后多个…

Python的命令行参数解析

命令行参数解析在编程语言中基本都会碰到&#xff0c;Python中内置了一个用于命令项选项与参数解析的模块argparse。下面主要介绍两种解析Python命令行参数的方式。 1. sys.argv 解析Python中命令行参数的最传统的方法是通过sys.argv。Demo如下&#xff1a; #!/usr/env/pyth…

有什么可靠稳定的微信管理系统?

微信管理系统是什么 微信管理系统从字面上来说可以理解为微信的管理和营销系统。通俗一点来说就是利用微信与管理营销相结合的一种新型办公方式。 不用下载任何软件&#xff0c;不用多部手机&#xff0c;对手机没有任何型号要求&#xff0c;不需要刷机、越狱&#xff0c;不需…

C++内存序、屏障和原子操作

文章目录 一、原子类型二、原子操作函数三、内存序1&#xff09;happens-before和synchronizes-with语义2&#xff09;内存序模式 四、标准库函数五、栅栏&#xff08;Barrier&#xff09; 一、原子类型 标准原子类型的备选名和与其相关的 std::atomic<> 特化类&#xf…

新来个技术总监,把限流实现的那叫一个优雅,佩服!

在电商高并发场景下&#xff0c;我们经常会使用一些常用方法&#xff0c;去应对流量高峰&#xff0c;比如限流、熔断、降级&#xff0c;今天我们聊聊限流。 什么是限流呢&#xff1f;限流是限制到达系统的并发请求数量&#xff0c;保证系统能够正常响应部分用户请求&#xff0…

小米12回收能值多少钱

想买二手手机或者回收二手手机的缺不懂价格及其容易被坑&#xff0c;花冤枉钱这边给大家整理了二手小米12的市场价格&#xff08;数据来源&#xff1a;换换二手交易平台&#xff09;

小米10s参数配置 小米10s多少钱

外放音质是小米10S这次的主打卖点。据小米集团副总裁常程介绍&#xff0c;小米10S除了用上对称分布的双1216线性扬声器&#xff0c;还由哈曼卡顿「金耳朵」声学团队联合调试&#xff0c;以求最大程度还原声音。常程称&#xff0c;这是“小米有史以来音质最好的手机”。 小米10s…