学习笔记ESP32——触摸屏(XPT2046)和显示(ST7789)

一、配置menuconfig

根据自己的板子引脚和触摸屏类型选择对应的配置

二、配置lv_port_indev.c文件 

修改完成后,在lv_port_indev.c文件中,把触摸函数打开,为了防止后面定义的覆盖前面的,这里把Touchpad函数结构体重新命名

 同样的,把keypad的也重新命名

 拿到触摸屏的读取函数

 然后替换Touchpad回调,记得包含头文件 #include "lvgl_helpers.h"

 编译下载,成功移植。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
xpt2046触摸屏是一种常见的电容式触摸屏,可以通过SPI接口与单片机或嵌入式系统进行通信。在Linux系统中,可以通过编写驱动程序实现对xpt2046触摸屏的控制和数据读取。 以下是一个简单的xpt2046触摸屏Linux驱动的示例代码: ```c #include <linux/module.h> #include <linux/kernel.h> #include <linux/spi/spi.h> #define XPT2046_CMD_X 0xD0 #define XPT2046_CMD_Y 0x90 #define XPT2046_MAX_X 4095 #define XPT2046_MAX_Y 4095 static struct spi_device *xpt2046_spi_dev; static int xpt2046_read_adc(u8 cmd) { u8 tx_buf[3] = {cmd, 0, 0}; u8 rx_buf[3] = {0, 0, 0}; struct spi_transfer transfer = { .tx_buf = tx_buf, .rx_buf = rx_buf, .len = 3, }; spi_sync_transfer(xpt2046_spi_dev, &transfer, 1); return ((rx_buf[1] << 8) | rx_buf[2]) >> 3; } static int xpt2046_read_touch(int *x, int *y) { int x_raw, y_raw; x_raw = xpt2046_read_adc(XPT2046_CMD_X); y_raw = xpt2046_read_adc(XPT2046_CMD_Y); *x = (x_raw * XPT2046_MAX_X) / 4096; *y = (y_raw * XPT2046_MAX_Y) / 4096; return 0; } static int xpt2046_probe(struct spi_device *spi_dev) { xpt2046_spi_dev = spi_dev; return 0; } static int xpt2046_remove(struct spi_device *spi_dev) { xpt2046_spi_dev = NULL; return 0; } static struct spi_driver xpt2046_spi_driver = { .driver = { .name = "xpt2046", .owner = THIS_MODULE, }, .probe = xpt2046_probe, .remove = xpt2046_remove, }; static int __init xpt2046_init(void) { return spi_register_driver(&xpt2046_spi_driver); } static void __exit xpt2046_exit(void) { spi_unregister_driver(&xpt2046_spi_driver); } module_init(xpt2046_init); module_exit(xpt2046_exit); MODULE_LICENSE("GPL"); MODULE_AUTHOR("Your Name"); MODULE_DESCRIPTION("XPT2046 Touchscreen Driver"); ``` 此示例代码实现了一个简单的xpt2046触摸屏Linux驱动,可以通过SPI接口读取触摸坐标。在驱动程序中,首先定义了xpt2046触摸屏的命令码和最大坐标值。然后通过spi_sync_transfer()函数实现了SPI数据传输,读取x和y坐标。最后定义了驱动程序的初始化和退出函数,并注册到Linux内核中。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值