1. GPIO输入滤波机制:为什么需要它?
在实际的工业控制环境中,信号干扰无处不在。电机启停、继电器动作、电源波动等都会在信号线上产生毛刺和噪声。如果你直接用GPIO读取这些信号,很可能会读到错误的值,导致系统误动作。我在早期的项目中就吃过这个亏——一个简单的按键检测,因为电机干扰导致系统频繁误触发,后来才发现是输入信号没有做滤波处理。
TMS320F28335的GPIO模块提供了一个很实用的硬件滤波功能,通过QSEL寄存器配置采样周期,可以有效滤除短暂干扰信号。这个功能特别适合工业环境中的按键检测、限位开关、传感器信号读取等场景。它不是简单的软件延时去抖,而是硬件级别的信号稳定性保障。
GPIO输入滤波的工作原理其实很好理解:它要求输入信号必须保持一定时间的稳定状态,才会被确认为有效信号。比如你配置为3个采样周期,那么信号必须连续保持3个采样周期不变,GPIO数据寄存器才会更新这个值。这样就自然滤除了那些短暂的毛刺干扰。
2. GPIO滤波寄存器深度解析
2.1 QSEL寄存器配置详解
TMS320F28335的输入滤波功能主要通过四个QSEL寄存器来配置:
- GPAQSEL1:控制GPIO0-GPIO15
- GPAQSEL2:控制GPIO16-GPIO31
- GPBQSEL1:控制GPIO32-GPIO47
- GPBQSEL2:控制GPIO48-GPIO63
每个GPIO引脚在QSEL寄存器中占用2个bit,可以配置四种工作模式:
- 00:同步模式,采样窗口为1个系统时钟周期
- 01:保留模式,不建议使用
- 10:3个采样周期模式
- 11:6个采样周期模式
这里有个重要的细节需要注意:实际采样周期比配置值少1个周期。比如你配置为3个采样周期,实际上信号只需要保持2个系统时钟周期就能通过滤波。这个设计是为了提高响应速度,同时保证抗干扰能力。
2.2 QUALPRD分频系数设置
除了选择采样周期数

177

被折叠的 条评论
为什么被折叠?



