RT-Thread studio学习笔记6:触摸驱动

在完成了TFTLCD驱动后,在使用LVGL之前,需驱动触摸芯片。

第一步,确认TFTLCD的触摸芯片,我这里用的是正点原子的TFTLCD的4.3寸电容触摸屏,在官方文档中,说是使用了OTT2001A、GT9147,没找到具体说明是哪一款芯片。

        OTT2001A的初始化流程:复位->延时100ms->释放复位->设置传感器控制寄存器的最高位位1,开启传感器检查。

        GT9147的初始化流程:硬复位->延时100ms->结束硬复位->设置IIC地址->延时100ms->软复位->更新配置(需要时)->结束软复位。

      第二步,在RT-Thread settings中打开TOUCH组件,打开I2C组件。找到board.h中找到I2C CONFIG BEGIN,可以看到使用I2C的方法,1.在RT-Thread settings中打开I2C设备驱动;2.定义与I2C总线相关的宏;3.根据I2C端口对应的管脚,修改相关I2C端口和管脚信息。通过正点原子的手册可知,SDA接在了PF11,SCL接在了PB0,则对应做出修改,在RT-Thread settings找到软件包中的外围库和驱动程序中的触摸输入设备,发现其中就有GT9147,直接打开(刚好我手上的屏幕用的是GT9147的屏幕)。执行编译。

RT-Thread studio学习笔记6:触摸驱动_第1张图片

RT-Thread studio学习笔记6:触摸驱动_第2张图片

RT-Thread studio学习笔记6:触摸驱动_第3张图片

/*-------------------------- I2C CONFIG BEGIN --------------------------*/

/** if you want to use i2c bus(soft simulate) you can use the following instructions.
 *
 * STEP 1, open i2c driver framework(soft simulate) support in the RT-Thread Settings file
 *
 * STEP 2, define macro related to the i2c bus
 *                 such as     #define BSP_USING_I2C1
 *
 * STEP 3, according to the corresponding pin of i2c port, modify the related i2c port and pin information
 *                 such as     #define BSP_I2C1_SCL_PIN    GET_PIN(port, pin)   ->   GET_PIN(C, 11)
 *                             #define BSP_I2C1_SDA_PIN    GET_PIN(port, pin)   ->   GET_PIN(C, 12)
 */
#define BSP_USING_I2C1
#ifdef BSP_USING_I2C1
#define BSP_I2C1_SCL_PIN    GET_PIN(B, 0)
#define BSP_I2C1_SDA_PIN    GET_PIN(F, 11)
#endif

        第三步,编译报错,'struct rt_touch_config' has no member named 'irq_pin'    gt9147.c  ,rt_touch_config这个结构体中没有没有指定irq_pin。找到touch.h的rt_touch_config中找到,我们这里使用中断的方式读取触摸数据。打开RT-Thread settings,找到TOUCH设备驱动程序,打开touch irq use pin irq,添加#define GT9147_IRQ_PIN            GET_PIN(B, 1)/* GT9147中断 */
#define GT9147_RST_PIN            GET_PIN(C, 13)/* GT9147中断 */宏定义,编译通过。

struct rt_touch_config
{
#ifdef RT_TOUCH_PIN_IRQ
    struct rt_device_pin_mode   irq_pin;       /* Interrupt pin, The purpose of this pin is to notification read data */
#endif
    char                        *dev_name;     /* The name of the communication device */
    void                        *user_data;
};

RT-Thread studio学习笔记6:触摸驱动_第4张图片

第四步,下载验证。在RT-Thread的初始化打印信息中,看到GT9147初始化成功,TOUCH设备初始化成功。

RT-Thread studio学习笔记6:触摸驱动_第5张图片

 RT-Thread studio学习笔记6:触摸驱动_第6张图片

 

 

 

你可能感兴趣的:(学习,单片机,stm32,arm)