MCUXpresso开发NXP RT1060(2)——IIC接口&触摸屏芯片GT911
配置过程GPIO选择正确的工作模式中断 周期性产生配置iO中断程序设计上一步骤中 INT 输出上升沿后,若主控未在一个周期内读走坐标,下次 GT9157 即使检测到坐标更新会再输出一个 INT 脉冲但不更新坐标;参考4.3inch Capacitive Touch LCD - Waveshare Wikihttps://www.waveshare.net/wiki/4.3inch_Capaciti
目录
开发环境
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要设置成开漏输出模式,带有100K的下拉电阻。注意要使能pull模式。
按照如上步骤设置后,单片机与触摸芯片就可以进行IIC通信了。但是在驱动触摸屏时,还需要一个IO作为GT911的中断,以及一个IO作为GT11的RST。GT911的具体用法可见参考文档。
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通讯时序是相同的,也就是说驱动程序是兼容的。 与主机的接口共有6PIN,分别为: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
Embedfire-rt1052: 野火imx-rt1052开发板项目组https://gitee.com/Embedfire-rt1052
更多推荐
所有评论(0)