zhizhiapple2 2024-03-12 14:07 采纳率: 0%
浏览 195
已结题

esp32 micropython与3.5寸tft屏幕触摸引脚如何连接?

问题遇到的现象和发生背景

我在使用esp32-S3 micropython 开发板,还有3.5寸 tft SPI 480x320 v1.0屏幕,现在屏幕显示的引脚已经没有问题,可以正常显示,就是触控没有反应,希望能教教我如何让esp32连接这5个触摸T-IRQ,T-DO,T-DIN,T-CS ,T-CLK。

屏幕的驱动为ili9488,触摸驱动为xpt2046.
屏幕与esp32连接的引脚为:
屏幕引脚 esp32-s3引脚
SDO(MISO) 13
LED 16
SCL 12
SDI(MOSI) 11
DC 17
RESET 18
CS 10
GND GND
VCC 3.3v
触摸引脚
T-IRQ
T-DO
T-DIN
T-CS 6
T-CLK

用代码块功能插入代码,请勿粘贴截图。 不用代码块回答率下降 50%

import lvgl as lv
import time
from espidf import VSPI_HOST
from ili9XXX import ili9488
from xpt2046 import xpt2046
from machine import Pin, I2C

p16 = Pin(16, Pin.OUT)
p16.value(1)

disp = ili9488(miso=13, mosi=11, clk=12, cs=10, dc=17, rst=18,
               spihost=VSPI_HOST, mhz=20, power=-1, backlight=-1,
               factor=16, hybrid=True, width=320, height=480,
               invert=False, double_buffer=True, half_duplex=False)

touch = xpt2046(cs=6, spihost=VSPI_HOST, mosi=-1, miso=-1, clk=-1, cal_y0 = 423, cal_y1=3948)

scr = lv.obj()

class CounterBtn():
    def __init__(self, scr):
        self.cnt = 0
        btn = lv.btn(scr)  
        # btn.set_pos(20, 10)  # 相对于屏幕左上角 x为20,y为10
        btn.set_size(120, 50) 
        btn.align(lv.ALIGN.CENTER,0,0)  
        btn.add_event_cb(self.btn_event_cb, lv.EVENT.ALL, None)
        label = lv.label(btn) 
        label.set_text("Button") 
        label.center()  

    def btn_event_cb(self, evt):
        code = evt.get_code()  
        btn = evt.get_target()  
        if code == lv.EVENT.CLICKED:
            self.cnt += 1

        label = btn.get_child(0)
        label.set_text("Button: " + str(self.cnt))  


counterBtn = CounterBtn(scr)

lv.scr_load(scr)

try:
    from machine import WDT
    wdt = WDT(timeout=1000) 
    print("提示: 按下Ctrl+C结束程序")
    while True:
        wdt.feed()
        time.sleep(0.9)
except KeyboardInterrupt as ret:
    print("程序停止运行,ESP32已经重启...")

我想要达到的结果,如果你需要快速回答,请尝试 “付费悬赏”

希望可以将引脚连接对,实现触摸功能。

  • 写回答

23条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-03-12 14:08
    关注
    获得0.45元问题酬金

    引自免费微信小程序:皆我百晓生

    在您的ESP32-S3 Micropython项目中,您已经成功设置了ILI9488 TFT屏幕的显示部分。现在要实现XPT2046触摸屏功能,需要正确连接触摸屏的相关引脚,并在代码中初始化触摸屏对象。

    根据您提供的信息,以下是触摸屏XPT2046与ESP32-S3的连接方式:

    • T-CS (片选) 连接到 esp32-s3 的 GPIO 6 引脚
    • T-CLK (时钟) 需要连接到 esp32-s3 的一个可用SPI时钟引脚,但您没有指定具体哪个引脚。这里假设连接到GPIO 14(可以更改为您实际使用的引脚)。

    然后,在Micropython代码中,触摸屏XPT2046的初始化应当如下所示:

    import machine
    
    # 触摸屏相关引脚配置
    touch_clk = machine.Pin(14, machine.Pin.OUT)  # 假设T-CLK连接到GPIO14
    touch_cs = machine.Pin(6, machine.Pin.OUT)
    
    # 初始化触摸屏
    touch = xpt2046(cs=touch_cs, clk=touch_clk, spihost=VSPI_HOST, miso=-1, mosi=-1)
    
    # 其他触摸屏校准参数和事件处理代码保持不变...
    

    这样,您就将触摸屏的SPI时钟线和片选信号线与ESP32-S3正确连接并初始化了触摸屏对象。请注意,如果T-CLK连接到了其他引脚,请相应地修改上述代码中的数字。

    由于XPT2046使用的是SPI通信,MISO、MOSI以及SCK通常不需要单独定义(因为它们已经在初始化ili9488显示屏时设置好了),所以这里我们将其设置为-1。只需确保ESP32上的SPI总线配置一致即可。

    评论 编辑记录

报告相同问题?

问题事件

  • 系统已结题 3月20日
  • 赞助了问题酬金15元 3月12日
  • 创建了问题 3月12日