查看: 339|回复: 0

在 FlexIO上进行毛刺滤波的方法

[复制链接]
  • TA的每日心情
    开心
    2024-3-26 15:16
  • 签到天数: 266 天

    [LV.8]以坛为家I

    3301

    主题

    6548

    帖子

    0

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    32040
    最后登录
    2024-4-28
    发表于 2023-10-19 11:12:34 | 显示全部楼层 |阅读模式
    在 FlexIO上进行毛刺滤波的方法


    简介
    FlexIO 模块在 i.MX RT 系列 MCU 中被广泛采用,它提供了高度灵活的配置方法,可以模拟多种不同的通信协议,如UART、I2C、 SPI、I2S等。
    硬件基于 RT1010-EVK,软件基于 SDK2.13.0。


    FlexIO需要毛刺滤波的原因
    以使用 FlexIO 模拟 UART 为例,其在理论上可以支持很高的波特率,但在每个 bit 只会进行一次采样。单次采样会由于毛刺的存在,导致错误数据被接收。对于这种情况,可以使用额外的定时器设计一个毛刺滤波器,以避免错误的发生。


    使用定时器进行毛刺滤波的基本原理
    假设有一个方波信号,其频率为 2 Hz,定时器时钟频率为 1000 Hz,其波形如图所示。图片
    11.png
    在信号传输的场景中,由于存在干扰,会产生一系列的毛刺,这些毛刺会在仅有一次的采样过程中导致错误的传输值。带有随机毛刺的方波信号波形如图所示,其中部分毛刺的长度小于5个时钟周期,部分毛刺的长度大于15 个时钟周期。图片
    12.png
    为了消除这些毛刺,在 FlexIO 中引入一个定时器,按照以下配置来设置定时器的控制寄存器TIMCFG:
    • 定时器工作在16bit模式
    • 定时器的触发源选择来自输入引脚
    • 定时器的引脚配置为输出
    • 定时器一直使能且从不关闭 (TIMENA = 0, TIMDIS= 0)
    • 当定时器的输入与输出相等时,定时器处于reset状态 (TIMRST = 0x3)
    • 定时器的输出不受 reset 引脚影响,初始状态可以是0 或者是 1 (TIMOUT = 0 or 1)
    • 定时器的初始计数值等于 filter_width 减 1 (TIMCMP = filter_width – 1)
    • filter_width 是输入信号持续稳定才能更新输出信号的周期数且必须大于1


    通过设置不同的初始计数值,定时器可以被用于过滤信号中的高频毛刺,同时也会为滤波后的信号带来filter_width *时钟周期的时间延迟。当初始计数值为 10 时,初始信号与滤波后的信号如图所示。图片
    13.png
    定时器能够完成滤波的原因在于:在信号发生跳变时,计数值才会从初始值开始递减,即定时器的输入状态与输出状态不相同,定时器退出reset 状态开始计数。当16 位计数器等于 0 并递减时,定时器输出切换并且计数器从比较寄存器重新加载。因此,如果信号的跳变保持的时间小于filter_width *时钟周期 的时间,会导致计数值还未降低到 0 就被重置,输出信号就会保持原先的电平,短时间的信号跳变就会被过滤掉。


    定时器在进行毛刺滤波时,其输出引脚在芯片内部连接到其他移位器和定时器,因此即便这一引脚在设备级别(IOMUXC)未被启用也可以实现滤波功能。


    对 RT1010 GPIO输出的方波信号
    进行毛刺滤波


    在 i.MX RT1010 芯片上,可以对用 GPIO 输出方波信号,输入到 FlexIO 的定时器。
    • GPIO_08 被配置为输出方波信号
    • GPIO_11 被配置为 FlexIO 定时器的输入引脚
    • GPIO_12 被配置为 FlexIO 定时器的输出引脚


    FlexIO 的定时器可以对 TIMCFG 寄存器进行配置,从而改变其对输入信号的的响应。
    14.png
    将 TIMOUT 段配置为 00b,可以将定时器的初始输出值设置为 1,且在 reset 时会保持输出值不变。
    15.png
    将 TIMDEC 段配置为 00b,可以在每个时钟周期对计数值递减。
    16.png
    将 TIMRST配置为 11b,可以在输入值等于输出值时重置计数值。在代码中,可以将 FlexIO 的定时器进行如下配置:图片
    17.png
    通过如上的定时器配置,可以轻松实现章节3中提到的定时器配置条件,从而使定时器工作为一个毛刺滤波器。


    签到签到
    回复

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /4 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2024-4-28 15:11 , Processed in 0.112302 second(s), 21 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表