ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

【嵌入式 ARM 驱动开发】PWM 脉宽调制原理与 GT9147 电容触控屏驱动开发详解

【嵌入式 ARM 驱动开发】PWM 脉宽调制原理与 GT9147 电容触控屏驱动开发详解 一、引言在嵌入式系统开发中PWM脉宽调制与触控屏Touch Screen是非常核心的硬件外设。PWM 常用于电机调速、蜂鸣器控制以及屏幕背光亮度调节而电容触控屏则是现代嵌入式人机交互HMI的标准配置。本文将结合嵌入式 ARM 架构详细讲解 PWM 的硬件工作原理以及电容触控屏以正点原子 GT9147 芯片为例的全套驱动开发流程。二、PWM 脉宽调制原理1. 基本概念●PWM 频率控制信号周期的倒数。例如周期 $T 1\text{ms}$则 PWM 频率为 $1\text{kHz}$。●计数器时钟 (Counter Clock)决定计数器的递增速度。例如计数器频率为 $1\text{MHz}$即每步计数耗时 $1\mu\text{s}$。●占空比 (Duty Cycle)在一个周期内高电平持续时间占总周期的百分比。2. PWM 硬件工作流程与寄存器关系PWM 信号的生成依赖于计数器Counter、周期寄存器Period Register和采样/比较寄存器FIFO/Sample Register。●周期寄存器Period Register决定 PWM 的周期/频率。当计数器达到周期设定值如 1000时计数器复位回滚完成一个周期。●采样寄存器Sample Register / FIFO决定 PWM 的占空比。硬件将计数器的值与比较点采样值如 100、200、300进行对比触发引脚电平翻转。3. 引脚极性Polarity对占空比的影响PWM 输出引脚的逻辑电平取决于配置的极性引脚默认高电平采样寄存器中的设定值越大高电平保持时间越长占空比越大。引脚默认低电平采样寄存器中的设定值越大高电平保持时间越短占空比越小。三、电容触控屏驱动开发 (GT9147)1. 触控屏分类与原理●电阻屏基于物理压感发生形变导致电阻改变需要进行软件校准。●电容屏基于人体感应电压/电荷微变支持多点触控Multi-touch响应快且无需手动校准。2. GT9147 芯片简介GT9147 是一款常用的电容触控芯片支持最多5 个触控点同时检测。常见的 LCD 模块及其芯片 ID 示例●ALIENTEK 4.3寸屏幕芯片 ID 0x14 (GT1158) 或 0x5D (GT9147)。●芯片可通过 I2C 读取内部寄存器获取设备 ID如 9147、坐标数据$X, Y$以及当前按下的触控点个数。3. GT9147 驱动初始化完整流程编写驱动时需要遵循严格的初始化逻辑。流程图如下所示4. 驱动开发步骤解析(1) GPIO 与复位配置●配置RST复位引脚和INT中断引脚的 Multiplexing复用功能及 Pad 特性如上下拉、驱动能力等。●通过控制 RST 引脚产生低电平脉冲完成触控 IC 的硬件复位。(2) I2C 总线初始化与读写接口●初始化 ARM 芯片的I2C2控制器。●封装底层的 I2C 读写函数 gt9147_read() 与 gt9147_write()。(3) 读取芯片 ID 验证通信●读取寄存器 0x8140 开始的 4 个字节校验返回值是否为 ASCII 字符字符串 9147。若读取正确说明 I2C 通信正常。(4) 中断触发方式配置与 GIC 注册●校验/配置中断触发模式读取 0x804D / 0x8056 寄存器通常设置为下降沿触发0x01。●配置 GPIO 引脚为中断输入模式。●在GIC通用中断控制器中配置中断优先级、注册 gt9147 的中断服务函数ISR并使能该中断。(5) 中断服务程序ISR坐标读取当用户触摸屏幕时INT 引脚产生下降沿中断。在中断处理函数中1.读取状态寄存器判断当前按下的触控点个数。2.依次读取触摸点的坐标数据首点坐标起始地址为 0x8158 - 0x815B。3.换算得到真实的屏幕物理坐标 $(X, Y)$并清除中断标志位。四、总结本文介绍了嵌入式 ARM 开发中 PWM 占空比控制的底层逻辑以及 GT9147 电容屏的中断I2C 驱动设计思路。通过合理的极性配置及中断响应机制不仅能精准控制外设还能实现高效无阻塞的人机交互触控体验。
返回列表