IMX6ULL裸机开发:定时器(GPT/EPIT)与UART串口

一、IMX6ULL 两大核心定时器

定时器是嵌入式开发最常用的外设,核心作用是精准计时、延时、定时触发任务、测量信号时间、输出指定频率波形。IMX6ULL内置两款专用硬件定时器:EPIT和GPT,二者功能定位、计数方式完全不同,适配不同开发场景。

1. EPIT 定时器

EPIT 是 IMX6ULL 专用的 32位自减型定时器,是专为简单延时、定时中断设计的轻量化定时器,使用简单、配置便捷。

核心特性:

  • 计数范围:0x00000000 ~ 0xFFFFFFFF(32位全范围计数)

  • 计数方式:从预设值开始自动递减,减到0触发中断或定时事件

  • 支持时钟源:常用24MHz高速时钟、32.768KHz RTC低速时钟

两大工作模式:

  • 自由运行模式(Free-Running Mode):默认从最大值 0xFFFFFFFF 开始不断自减,减到0后自动重装最大值,循环持续计数,适合长期定时、系统时钟计时场景。

  • 设置-遗忘模式(Set and Forget Mode):手动设置初始计数值,定时器自动递减完成单次定时,无需重复配置,适合单次精准延时场景。

常用场景:裸机精准延时函数、按键软件消抖、简单定时中断任务。

2. GPT 定时器

GPT 是 IMX6ULL 的 32位自增型多功能定时器,功能比EPIT更强大,支持输入捕获、输出比较,是工业控制、信号测量的核心定时器。

核心特性:

  • 计数范围:0x00000000 ~ 0xFFFFFFFF

  • 计数方式:从0开始自动递增,计数到最大值后溢出归零,重新计数

  • 功能丰富:除了基础定时延时,支持输入捕获、输出比较两大高级功能

常用场景:电机测速、电机调速、方波信号生成、外部脉冲时间测量、高精度定时控制。

3. 输入捕获 & 输出比较

(1)输入捕获

简单来说就是 测量外部信号的时间参数。GPT定时器通过指定引脚,捕获外部电平的跳变(高变低、低变高),记录两次跳变之间的定时器计数值,从而计算出信号的周期、频率、脉冲个数。

经典应用:检测电机转速(统计单位时间内电机脉冲数量)、测量方波频率、检测外部设备脉冲信号。

(2)输出比较

简单来说就是 主动输出指定频率的方波信号。提前设置好比较值,当GPT递增计数值等于预设比较值时,芯片引脚自动翻转电平,持续循环即可生成固定频率、固定占空比的方波。

经典应用:控制电机转速、驱动LED呼吸灯、生成外设所需时钟信号。

二、UART串口通信

UART(通用异步收发传输器)是嵌入式最基础、最常用的 异步串行通信协议,主要用于设备之间的近距离数据传输,无需时钟线,仅通过收发两根引脚即可实现数据交互,稳定性强、配置简单。

1. UART核心参数

工业通用标准配置:115200 8N1

  • 波特率:115200(数据传输速率)

  • 数据位:8位(单次传输8字节数据)

  • 校验位:无校验(N)

  • 停止位:1位

2. UART硬件流控(RTS/CTS)

为了解决串口数据传输丢包、缓冲区溢出问题,UART支持硬件流控功能,适配强干扰、强电场的工业场景:

  • RTS_B(请求发送) :设备主动告知对方,本机缓冲区空闲,可以接收数据;

  • CTS_B(清除发送) :设备告知对方,本机缓冲区已满,暂停发送数据。

核心作用:防止高速传输时数据溢出、丢包,提升工业场景通信稳定性。

3. 波特率计算原理

IMX6ULL裸机配置115200波特率核心参数:

  • UBIR = 999

  • UBMR = 43402

  • 计算公式:(UBMR + 1) / UBIR 精准匹配115200标准波特率

4. 工业组网:Modbus单主机多从机

UART可基于Modbus协议实现工业组网,拓扑结构为单主机、多从机:

  • 主机:IMX6ULL(主动下发指令、查询数据)

  • 从机:多个IMX6ULL或其他外设(被动响应主机指令)

为适配工业强干扰环境,通信支持多种校验方式:累加和校验、奇偶校验、CRC校验,可自动检测从机地址,保障通信准确。

三、思考题

  1. 什么是UART?简述其核心作用与通信特点

  2. 什么是EPIT定时器?它的计数方式和工作模式是什么?

  3. 什么是GPT定时器?相比EPIT有什么优势?

  4. 什么是输入捕获?什么是输出比较?分别有哪些典型应用场景?

四、知识点总结

  1. EPIT是自减型定时器,主打简单延时、定时中断,配置简单,适合基础定时场景;

  2. GPT是自增型多功能定时器,支持输入捕获、输出比较,主打信号测量、电机控制等高级场景;

  3. 输入捕获用于测量外部信号 ,输出比较用于生成可控方波信号,是电机调速测速的核心功能;

  4. UART是通用异步串口,支持硬件流控和多种数据校验,可搭建Modbus工业组网,是嵌入式设备通信的基础外设。

相关推荐
susplus1 小时前
【Linux驱动开发】中断、工作队列及中断子系统详解
arm·中断·linux驱动开发·中断子系统
chu_bingzhi21 小时前
ARMv8体系结构
arm
一直C3 天前
嵌入式 Linux 驱动开发学习笔记(三)设备树、GPIO子系统、中断与外设驱动实战
驱动开发·单片机·嵌入式硬件·嵌入式·arm·imx6ull
zbyyd4 天前
Linux字符设备驱动:LED驱动实战开发
linux·单片机·arm·驱动
祖力555 天前
驱动工程搭建与字符设备驱动框架
linux·运维·服务器·内核·arm·imx6ull·驱动
susplus5 天前
【Linux驱动开发】字符设备介绍 | LED灯驱动基本实现(自动申请设备号+手动添加节点)
arm·led驱动·linux驱动开发
gscsded6 天前
MCUboot裸机移植实战
单片机·嵌入式硬件·arm
想喝奶茶啾啾6 天前
AMBA CHI架构以及规范中使用的术语 翻译笔记(1)
笔记·arm·chi
susplus7 天前
【IMX6ULL Linux系统移植】内核编译裁剪 + rootfs 构建 + 完整启动流程梳理
linux内核·arm·rootfs·linux启动
susplus9 天前
【IMX6ULL Linux系统移植】SD卡分区 | uboot详解
linux·arm·u-boot