资讯详情

MCUXpresso开发NXP RT1060(2)——IIC接口&触摸屏芯片GT911

开发环境

配置过程

一、配置LPI2C

二、配置相关IO

程序设计

问题&总结

参考


开发环境

1.TencentOS物联网开发套件,MCU为RT1060

2.IDE:MCUXpresso v11.5

3.IIC设备为微雪4.3寸IPS屏幕上的触摸芯片,汇顶GT911

配置过程

一、配置LPI2C

二、配置相关IO

假设置不当IO的状态,SCL和SDA设置成这样RT1060不能与设备合作IIC通信。

通过手册,我们可以知道J11和K11可作为IIC通信的SCL和SDA需要将信号引脚配置为泄漏模式。

因为在这种情况下,IO带1000的开泄输出模式应设置为开泄输出模式K下拉电阻。注意使能pull模式。

按照上述步骤设置后,可以进行单片机和触摸芯片IIC通信。但是驱动触摸屏时,需要一个IO作为GT911的中断,以及一个IO作为GT11的RST。GT参考文件可见911的具体用法。

IO中断配置方法(以gpio5_pin1为例下降沿触发)

/* GPIO configuration of PMIC_ON_REQ on PMIC_ON_REQ (pin K7) */  gpio_pin_config_t PMIC_ON_REQ_config = { .direction = kGPIO_DigitalInput,    .outputLogic = 0U, .interruptMode = kGPIO_IntFallingEdge };   /* Initialize GPIO functionality on PMIC_ON_REQ (pin K7) */  GPIO_PinInit(GPIO5, 1U, &PMIC_ON_REQ_config);  /* Enable GPIO pin interrupt on PMIC_ON_REQ (pin K7) */  GPIO_PortEnableInterrupts(GPIO5, 1U << 1U);  EnableIRQ(GPIO5_Combined_0_15_IRQn);

程序设计

配置外设后使用NXP开发官方库函数IIC程序,可参考官方SDK中的IIC示例。下面的例子是读取。GT911接触点数量的寄存器具体参考GT911的手册。

///写寄存器操作,其中0X5D为GT911的IIC地址,points_addr寄存器地址要写。 LPI2C_MasterStart(LPI2C1_PERIPHERAL, 0x5DU, kLPI2C_Write);  LPI2C_MasterSend(LPI2C1_PERIPHERAL, &points_addr, 2);  LPI2C_MasterStop(LPI2C1_PERIPHERAL);
///读取寄存器操作,存储读取的数据g_master_rxBuff中。读取后将寄存器中的标志位清零,代表单片机已读取触摸点坐标,具体参考GT911手册。             LPI2C_MasterStart(LPI2C1_PERIPHERAL, 0x5DU, kLPI2C_Read);    if (kStatus_Success      != LPI2C_MasterReceive(LPI2C1_PERIPHERAL, g_master_rxBuff,        1)) {     PRINTF("ERROR\n");    } else {     PRINTF("%X \n", g_master_rxBuff[0] & 0x0f);    }    LPI2C_MasterStop(LPI2C1_PERIPHERAL);     delay_ms(1);    if (g_master_rxBuff[0] & 0x80) {     LPI2C_MasterStart(LPI2C1_PERIPHERAL, 0x5DU, kLPI2C_Write);      LPI2C_MasterSend(LPI2C1_PERIPHERAL, &points_addr, 3);      LPI2C_MasterStop(LPI2C1_PERIPHERAL);     }

上一步骤中 INT 输出上升后,如果主控不在一个周期内读取坐标,下次 GT911即使检测 坐标更新将再次输出 INT 但不更新脉冲坐标;

问题&总结

遇到了IO中断不能工作的情况,原来是Handler函数名称错,程序跑了。

要把INT引脚的iomux改为浮空输入,不能单独中断。

以前更倾向于使用IO来软件模拟IIC,使用IIC外设更方便,节约程序资源,减少软件出错的可能性。

参考

4.3inch Capacitive Touch LCD - Waveshare Wikihttps://www.waveshare.net/wiki/4.3inch_Capacitive_Touch_LCD电容触摸屏GT911、GT928、GT9147的使用_【ql君】qlexcel的博客-CSDN博客_gt911触摸屏驱动详解一、介绍与硬件的连接 GT911、GT928、GT9147都属于GT9系列非单层多点触控芯片,他们支持的触控点数不同(GT928支持10个点、GT911支持5点),驱动和感应通道也可能不同。但他们的寄存器和IIC通信时序相同,即驱动程序兼容。 与主机的接口共6个PIN,分别为:VDD、GND、SCL、SDA、INT、RESET。INT、RESET...https://blog.csdn.net/qlexcel/article/details/99696108Linux下编写GT911触摸驱动_kuniqiw的博客-CSDN博客_gt911触摸屏驱动详解问题一:资源获取Gt911数据手册在韦老师给的资料里,路径为\06_Datasheet\Extend_modules\7寸LCD模块\电容触控芯片GT911 Datasheet_121120(海威思.pdf问题二:需要准备哪些知识1.能够修改设备树2.能够编写字符设备驱动3.能够在linux下编写中断程序4.能够在linux下编写IIC收发程序5.了解input子系统6.移植tslib(用于校准,测试触摸屏)gt911硬件连接(韦老师的板子):可以看到gt911只https://blog.csdn.net/kuniqiw/article/details/112390863

https://www.nxp.com/docs/en/application-note/AN5078.pdfhttps://www.nxp.com/docs/en/application-note/AN5078.pdf

开发板项目组">Embedfire-rt1052: 野火imx-rt1052开发板项目组https://gitee.com/Embedfire-rt1052

标签: ry1s2j11r1压力变送器

锐单商城拥有海量元器件数据手册IC替代型号,打造 电子元器件IC百科大全!

锐单商城 - 一站式电子元器件采购平台