【经验】解析华芯微特MCU SWM32S基于触摸芯片GT9157的驱动实现过程
![触摸芯片,MCU,GT9157,SWM32S](https://www.sekorm.com/front/website/images/sekormContent.jpg)
![触摸芯片,MCU,GT9157,SWM32S](https://www.sekorm.com/front/website/images/sekormContent.jpg)
本文华芯微特将为大家介绍SWM32S基于5寸800*480分辨率液晶屏+GT9157触摸芯片的驱动实现过程。
硬件
TFT-LCD:5.0寸800*480电容屏
触摸芯片:GT9157
MCU
SWM32S内嵌ARM Cortex-M4控制器,片上包含精度为1%以内的20MHz/40MHz时钟,可通过PLL倍频到120MHz时钟,提供多种内置FLASH/SRAM大小可供选择,支持ISP(在系统编程)操作及IAP(在应用编程)。
外设串行总线包括 1个CAN接口,多个UART接口、 SPI通信接口(支持主/从选择)及I2C接口(支持主/从选择)。此外还包括 1个32位看门狗定时器, 6组32位通用定时器, 1组32位专用脉冲宽度测量定时器,12通道16位的PWM发生器, 2个8通道12位、1MSPS的逐次逼近型ADC模块, 1个SDIO接口模块,TFT-LCD液晶驱动模块以及RTC实时时钟、SRAMC、SDRAMC、NORFLC接口控制模块,同时提供欠压检测及低电压复位功能。
触摸芯片
GT9157拥有26个驱动通道和14个感应通道,以满足更高的touch精度要求。同时支持最先进的短距离传输功能HotKnot。GT9157可同时识别5个触摸点位的实时准确位置,移动轨迹及触摸面积。并可根据主控需要,读取相应点数的触摸信息,其内部结构如上图所示。
GT9157触控芯片有两个备选的I2C通讯地址,这是由芯片的上电时序决定,如图所示。上电时序有Reset引脚和INT引脚生成,若Reset引脚从低电电平转变到高电平期间,INT引脚为高电平的时候,触控芯片使用的I2C设备地址为0x28/0x29(8位写、读地址),7位地址为0x14;若Reset引脚从低电电平转变到高电平期间,INT引脚一直为低电平,则触控芯片使用的I2C设备地址为0xBA/0xBB(8位写、读地址),7位地址为0x5D。
代码
红色框内文件相对重要并解读
( 1) bsp_I2C_GT9XX.c 文件的解读
#include "bsp_I2C_GT9XX.h"
#include "string.h"
#include "bsp_SysTick.h"
#include
void I2C_Mst_Init(void)
{
I2C_InitStructure I2C_initStruct;
PORT_Init(PORTA, PIN4, FUNMUX0_I2C0_SCL, 1); // GPIOA.4配置为I2C0 SCL引脚
PORT_Init(PORTA, PIN5, FUNMUX1_I2C0_SDA, 1); // GPIOA.5配置为I2C0 SDA引脚
I2C_initStruct.Master = 1;
I2C_initStruct.Addr7b = 1;
I2C_initStruct.MstClk = 400000;
I2C_initStruct.MstIEn = 0;
I2C_Init(I2C0, &I2C_initStruct);
I2C_Open(I2C0);
}
void bsp_GT9XX_InitRst(void)
{
// 第一阶段设置端口,并拉低两个端口
GPIO_Init(GPIO_PORT_GT_RST, GPIO_PIN_GT_RST, 1, 0, 0); // 复位脚 输出
GPIO_Init(GPIO_PORT_GT_INT, GPIO_PIN_GT_INT, 1, 0, 0); // 中断脚
GPIO_ClrBit(GPIOC, PIN3);
GPIO_ClrBit(GPIOC, PIN2); // 拉低两个端口的电平,准备复位
rt_thread_delay(10);
// 第二阶段复位芯片
GPIO_SetBit(GPIOC, PIN3); // 拉高开始复位芯片
rt_thread_delay(10);
// 第三阶段设置中断引脚为 中断功能
GPIO_Init(GPIOC, PIN2, 0, 0, 0);
EXTI_Init(GPIOC, PIN2, EXTI_RISE_EDGE); // 上升沿触发中断
I2C_Mst_Init(); // 硬件IIC端口初始化
rt_thread_delay(10);
}
void GT9XX_IRQEnable(void)
{
NVIC_EnableIRQ(GPIOC2_IRQn); // 使能GPIOC.2端口中断
EXTI_Open(GPIOC, PIN2); // 打开外部中断
}
void GT9XX_IRQDisable(void)
{
NVIC_DisableIRQ(GPIOC2_IRQn); // 禁止GPIOC.2端口中断
EXTI_Close(GPIOC, PIN2); // 关闭外部中断
GPIO_Init(GPIOC, PIN2, 1, 0, 1); // 回到普通输出端口
GPIO_ClrBit(GPIOC, PIN2);
}
/**********************************************************************************************************************
* 函数名称: bsp_WrNumByte()
* 功能说明: IIC写Num个字节
* 输 入: reg 寄存器地址,*p数据,WrByteNum写入的数据个数
* 输 出: 0,正常 其他,失败
* 注意事项:
**********************************************************************************************************************/
uint8_t bsp_GT9XX_WrReg(uint8_t IdAddr,uint8_t *p,uint8_t WrByteNum)
{
I2C0->MSTDAT = IdAddr | 0; // 发送器件地址+写命令
I2C0->MSTCMD = (1 << I2C_MSTCMD_STA_Pos) |
(1 << I2C_MSTCMD_WR_Pos); // 发送起始位和从机地址
while(I2C0->MSTCMD & I2C_MSTCMD
以上程序是我们为移植“ bsp_GT9XX.c”文件做的基本驱动,接下来详细分析一下,这部分源码具体实现了什么功能。
I2C_Mst_Init()函数中,华芯微特首先声明了一个结构体,接着将GPIOA.4和GPIOA.5进行了特殊功能管脚的分配,设置为I2C接口。接着是给结构体赋值, 他们的意义分别是设置为主机模式;地址为7位接口;I2C通信时钟频率设为400HHz;不使能中断模式,接着是调用库函数进行给寄存器赋值;最后打开I2C接口。接下来bsp_GT9XX_InitRst()函数为初始化,主要是设置端口,并将GT9157的设备I2C地址设置为0xBA,这个设置过程参加上面的时序;接着将GPIOC.2设置为中断,上升沿触发。函数GT9XX_IRQEnable()和GT9XX_IRQDisable(),顾名思义,就是使能中断和失能中断,这个好理解最后就是两个读写GT9157寄存器的函数,这两个函数,需要读者先理解 I2C 通信的基本协议,之后安装基本协议,一句、一句的理解,这里需要注意的是
I2C0->MSTCMD = (1 << I2C_MSTCMD_RD_Pos) |
(1 << I2C_MSTCMD_ACK_Pos) |
(1 << I2C_MSTCMD_STO_Pos);
这三行程序,当我们在跑该程序的时候, 一般是先写寄存器,再读数,而此时如果没有这三行程序,会把下一次的读数据和写寄存器混淆,导致GT9157芯片不认识此协议。当我们加了之后,就有结束,有开始,继而芯片能够识别此协议。
现象
复位初始化后串口打印,可以看到x轴800 ,y轴480
进行一个点的触摸 ID:0 定位是(257,237) 宽度62
进行两个点的触摸 可以看到ID0 ID1
进行五个点的触摸 可以看到ID0 ID1 ID2 ID3 ID4
附录:
主程序代码:
#include "bsp_uart.h"
#include "rtthread.h"
#include "ugui.h"
#include "bsp_gt9xx.h"
extern void GTP_TouchProcess(void);
UG_GUI gui;
uint32_t LCD_Buffer[800*480 * 2 / 4] __attribute__((at(SDRAMM_BASE))) = {0};
void _HW_DrawPoint(UG_S16 x, UG_S16 y, UG_COLOR c)
{
LCD_Buffer[y*400 + x/2] &= ~(0xFFFF << ((x%2) == 0 ? 0 : 16));
LCD_Buffer[y*400 + x/2] |= (c << ((x%2) == 0 ? 0 : 16));
}
ALIGN(RT_ALIGN_SIZE) // 以字对齐(4字节)
static rt_uint8_t rt_Test_thread_stack[1024]; // 线程栈
// 线程Test
static void Test_thread_entry(void* parameter)
{
printf("\r RGB工程初始化OK ...... \r\n");
LCD->SRCADDR = (uint32_t)LCD_Buffer;
LCD_Start(LCD);
UG_Init(&gui,(void(*)(UG_S16,UG_S16,UG_COLOR))_HW_DrawPoint,800,480);
GTP_Init_Panel();
while(1)
{
}
}
int main(void)
{
static struct rt_thread Test_thread; // 线程控制块
printf("SWM320 \r\n");
// 创建静态线程
rt_thread_init(&Test_thread, // 线程控制块
"Test", // 线程名字,在shell里面可以看到
Test_thread_entry, // 线程入口函数
RT_NULL, // 线程入口函数参数
&rt_Test_thread_stack[0], // 线程栈起始地址
sizeof(rt_Test_thread_stack), // 线程栈大小
5, // 线程的优先级
20); // 线程时间片
rt_thread_startup(&Test_thread); // 启动线程
}
void LCD_Handler(void)
{
LCD_INTClr(LCD);
LCD_Start(LCD);
}
void GPIOC2_Handler(void)
{
EXTI_Clear(GPIOC, PIN2); // 清楚中断标志位
GTP_TouchProcess();
}
- |
- +1 赞 0
- 收藏
- 评论 0
本文由犀牛先生转载自华芯微特32位MCU公众号,原文标题为:SWM32S基于GT9157的触摸芯片驱动,本站所有转载文章系出于传递更多信息之目的,且明确注明来源,不希望被转载的媒体或个人可与我们联系,我们将立即进行删除处理。
相关推荐
【经验】如何使用JFLASH擦除、写入及读取华芯微特指定型号MCU
本文介绍了华芯微特MCU产品如何使用第三方Segger公司的JFLASH配合J-Link仿真器对指定型号MCU的Flash进行擦除、写入及读取操作。
【经验】华芯微特SWM341/SWM34S系列MCU环境配置指南
华芯微特MCU的系列之SWM341&SWM34S,内核相同,34S在341基础上内置了SDRAM。341芯片使用M33内核,基于ARM-V8指令集的架构,对应的工具版本有更高的要求。本文中华芯微特将为大家介绍SWM341/SWM34S系列MCU环境配置指南。
简易但有效的MCU芯片抗干扰测试方案
MCU芯片对所在环境中存在的电磁干扰须具有一定程度的抗扰度,确保使用该芯片的设备能正常运行。家电类产品,一般都是通过交流电供电,同时也会对交流电进行控制,驱动大功率部件,比如电机,压缩机等。交流电出现通断情况下,会产生电磁场干扰MCU芯片。本文介绍一个简易但有效的测试方式评估MCU芯片对抗此类干扰的能力。
华芯微特MCU(ARM Cortex-M4/安谋科技“星辰”STAR-MC1内核)32位微控制器产品列表
华芯微特 - 32位微控制器,ARM CORTEX-M4/安谋科技“星辰”STAR-MC1内核32位微控制器,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM22PE8S7-63,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM221CBT7-50,SWM34SVET6-50,SWM341RET7-50,SWM320RET7-50,SWM260KBT7-80,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM341CET7-50,SWM190CBT7-50,SWM320,SWM221,SWM166,SWM341,SWM221KBU7-50,SWM241,SWM260,SWM181,SWM320CET7-50,SWM19SCBT7-50,SWM190,SWM32SRET6-50,SWM166D8U6-40,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM221E8S7-63,SWM181CBT6-50,SWM341VET7-50,SWM21DK6U7-50,SWM34SCET6-50,SWM260CBT7-50
华芯微特(Synwit)32位MCU选型表
华芯微特 - ARM CORTEX-M33 MCU,32位微控制器,ARM CORTEX-M0微控制器,ARM CORTEX-M4 MCU,ARM CORTEX-M0 MCU,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM260PBT7-80,SWM181RCT6-50,SWM211,SWM21DC8U7-50,SWM211G6S7-65,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM201G6S7-65,SWM181DBU6-40,SWM211C8T7-50,SWM201C6T7-50,SWM341CET7-50,SWM190CBT7-50,SWM201,SWM320VET7-50,SWM320,SWM20PG6S6-65,SWM341,SWM241,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM32SRET6-50,SWM190RBT7-50,SWM241CBT7-50,SWM181CBT6-50,SWM20DC6U7-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
Top Chinese 8/32-bit MCU Manufacturers with ARM Cortex-M0, M0+, M3, M4 and Stable Supply
In the face of rising semiconductor raw material prices and a continued shortage of production capacity, Sekorm has joined Civil Technology, Arteli, Chipsea, China Microelectronics, Fudan Microelectronics, Aerospace Shun, and other mainstream MCU manufacturers to provide stable MCU supply guarantees
华芯微特MCU 32 位微控制器产品列表
华芯微特 - 32 位微控制器,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM181C9T6-50,SWM22PE8S7-63,SWM241KBT7-80,SWM221EBS7-63,SWM34SRET6-50,SWM21PG6S7-65,SWM221CBT7-50,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM341CET7-50,SWM190CBT7-50,SWM166,SWM221,SWM320,SWM341,SWM241,SWM221KBU7-50,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM166D8U6-40,SWM32SRET6-50,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM181CBT6-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
华芯微特(Synwit)32位MCU选型指南
公司介绍&产品分类 TFT-LCD 显示和人机界面(HMI)用微控制器 电机专用微控制器 大家电 & 工控通用微控制器 32位微控制器选型表
华芯微特 - 高性能电机芯片,32位MCU,ARM CORTEX-M4 32位微控制器,微控制器,32位微控制器,高性价比电机芯片,ARM CORTEX-M4 MCU,工控通用微控制器,电机专用微控制器,ARM CORTEX-M0 MCU,MCU,ARM CORTEX-M0 32位微控制器,SWM34X,SWM320 SERIES,SWM 201C6T7-50,SWM19SCBT6-50,SWM190 SERIES,SWM 201 系列,SWM32SRET6,SWM181CCT6-50,SWM260KBT7-80,SWM190KBT6-80,SWM201G6S7-65,SWM 201,SWM 201G6S7-65,SWM 19S 系列,SWM201,SWM260 SERIES,SWM320,SWM19S,SWM160,SWM20PG6S6,SWM20D,SWM32SRET6-50,SWM 20PG6S6-65,SWM 190,SWM181CBT6-50,SWM260CBT7-50,SWM260PBT7-80,SWM 260 系列,SWM32S,SWM181 SERIES,SWM181RCT6-50,SWM20P,SWM260CBT7,SWM160C8T7-50,SWM190CBT6-50,SWM20G,SWM 190 系列,SWM 260,SWM 181,SWM201 SERIES,SWM320RET7-50,SWM181DBU6-40,SWM181CBT6,SWM160 SERIES,SWM 341,SWM 341 系列,SWM190 系列,SWM201C6T7-50,SWM 181 系列,SWM320VET7-50,SWM341,SWM190RBT6-50,SWM20PG6S6-65,SWM260,SWM181,SWM320CET7-50,SWM190,电机控制,高压风扇,电动摩托车,按摩椅,TFT-LCD显示,个人护理,空净,冰箱,电动工具,人机界面,工控仪表,工业仪表,洗衣机滚筒,电锯,热水器风机,电动车仪,电动人力车,人机界面(HMI),医疗辅助,电焊机,洗衣机,用户界面,电动自行车,电钻,生活电器,电机,风扇,抽油烟机风机,厨房电器,TFT-LCD 显示,生命检测仪,呼吸机,饮水机,可穿戴设备,血压计,电力仪表,白色家电,TFT-LCD控制,空调,咖啡机,扫地机,工业互联,车辆仪表,测温仪,水泵,吸尘器,仪器仪表,电动车仪表,热水器,智能家居,遥控钥匙,微波炉,车载诊断,防盗器,电机驱动,仪表盘,工业控制,HMI,电饭锅,工控,电动车 HMI,医疗辅助 HMI,吹风机,落地扇,电动车,空气净化器,体征测量,家用电器,智能开关,智能控制,吊扇,冰箱压缩机,车载设备,大家电,家用电器 HMI
使用华芯微特SWM341系列MCU环境配置
SWM341是华芯微特的其中一款MCU,341和341+内置SDRAM的34S系列,其内核相同。本文中华芯微特来为大家介绍使用SWM341系列MCU环境配置,希望对各位工程师朋友有所帮助。
SWM341 系列 MCU数据手册
华芯微特 - 32 位微处理器,32 位微控制器,MCU,SWM341VET6(7)–50,SWM34SV,SWM34SRET6,SWM341RET7,SWM34SVET6,SWM34SR,SWM341R系列,SWM341V系列,SWM34SRET6-50,SWM34SVET6-50,SWM341 系列,SWM341RET7-50,SWM34SCET6,SWM341CET7,SWM341V,SWM341CET7-50,SWM341R,SWM341,SWM34SMEU6-40,SWM34SR系列,SWM34SMEU6,SWM34SV系列,SWM341VET7,SWM341VET7-50,SWM34SCET6-50,电机驱动,工业控制,白色家电,屏幕领域,压缩机驱动
以华芯微特SWM341/SWM34S系列MCU芯片,介绍从软件层面降低MCU功耗的方法
随着集成电路技术的飞速发展,MCU的功耗问题逐渐成为设计和应用中必须考虑的关键因素。低功耗设计对于提高电路可靠性、降低成本以及延长电池寿命具有至关重要的作用。本文档主要是以华芯微特SWM341/SWM34S系列芯片,介绍从软件层面降低MCU功耗的方法分享。
基于华芯微特32位MCU SWM34SVET6的会议系统屏驱案例分享
智能会议系统是一种对声、光、电等各种设备进行集中控制的设备。其可实现对会议过程进行签到、表决、多国语言翻译、现场摄像视像跟踪功能,并对进程中处以发言管理,达到人性化高科技水平,使会议可一键掌控。本文介绍华芯微相关特案例。
【应用】32位MCU SWM181用来驱动段码仪表盘屏幕,最高可以支持4COM*32SEGMENT
在两轮车客户群体当中,还有非常大一部分使用的是段码仪表盘屏幕,其中现在市场上多为使用液晶控制IC,与MCU进行8080通信来控制驱动屏幕,而华芯微特的32位 MCU SWM181作为一款屏幕驱动的专用MCU,内置了SLCD控制器,可以代替传统的液晶控制IC,使成本进一步降低。
华芯微特MCU(ARM Cortex-M0)32位微控制器产品列表
华芯微特 - 32位微控制器,MCU,SWM19SC9T6-50,SWM241PBT7-80,SWM181RCT6-50,SWM211,SWM211G6S7-65,SWM181C9T6-50,SWM241KBT7-80,SWM34SRET6-50,SWM21PG6S7-65,SWM34SVET6-50,SWM341RET7-50,SWM260KBT7-80,SWM320RET7-50,SWM201G6S7-65,SWM181DBU6-40,SWM211C8T7-50,SWM21PE6S7-63,SWM201C6T7-50,SWM341CET7-50,SWM201,SWM190CBT7-50,SWM166,SWM320,SWM20PG6S6-65,SWM341,SWM241,SWM260,SWM181,SWM19SCBT7-50,SWM320CET7-50,SWM190,SWM166D8U6-40,SWM32SRET6-50,SWM21DD8U7-40,SWM34SMEU6-40,SWM190RBT7-50,SWM181CBT6-50,SWM20DC6U7-50,SWM21DK6U7-50,SWM341VET7-50,SWM260CBT7-50,SWM34SCET6-50
电子商城
现货市场
服务
![](https://files.sekorm.com/opt/fileStore/srms/serviceManage/icon/2023/06/317f191e2d398c679361c851da4b345d.png)
提供7~27寸工控机定制,支持嵌⼊式/ 壁挂式 /桌⾯式/悬挂式等安装方式,采用纯平⾯板IP65防尘防⽔等级,莫⽒7级硬度触摸屏,兼容多种操作系统:组态软件/安卓/XP/win7/8/10/Linux等,支持主板、接⼝、外观、⽀架、刷卡器、⾝份证阅读器、LOGO、⻨克⻛、系统、电池、蓝⽛、4G/5G、摄像头、GPS系统、⼆维码扫描器、指纹等特殊应⽤场景定制
最小起订量: 1台 提交需求>
![](https://files.sekorm.com/opt/fileStore/srms/serviceManage/icon/2023/05/e1e8d3a78444dd2f45276947ff131411.png)
Ignion可支持多协议、宽频段的物联网天线方案设计,协议:Wi-Fi、Bluetooth、UWB、Lora、Zigbee、2G、3G、4G、5G、CBRS、GNSS、GSM、LTE-M、NB-IoT等,频段范围:400MHz~10600MHz。
最小起订量: 2500 提交需求>
登录 | 立即注册
提交评论