一、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校验,可自动检测从机地址,保障通信准确。
三、思考题
-
什么是UART?简述其核心作用与通信特点
-
什么是EPIT定时器?它的计数方式和工作模式是什么?
-
什么是GPT定时器?相比EPIT有什么优势?
-
什么是输入捕获?什么是输出比较?分别有哪些典型应用场景?
四、知识点总结
-
EPIT是自减型定时器,主打简单延时、定时中断,配置简单,适合基础定时场景;
-
GPT是自增型多功能定时器,支持输入捕获、输出比较,主打信号测量、电机控制等高级场景;
-
输入捕获用于测量外部信号 ,输出比较用于生成可控方波信号,是电机调速测速的核心功能;
-
UART是通用异步串口,支持硬件流控和多种数据校验,可搭建Modbus工业组网,是嵌入式设备通信的基础外设。