跳转至内容
  • 版块
  • 最新
  • 标签
  • 热门
折叠
品牌标识

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT MCAL
  4. MCAL CddUart 模块关于Interrupt模式下使能FIFO优化分析

MCAL CddUart 模块关于Interrupt模式下使能FIFO优化分析

已定时 已固定 已锁定 已移动 YT MCAL
1 帖子 1 发布者 104 浏览
  • 从旧到新
  • 从新到旧
  • 最多赞同
登录后回复
此主题已被删除。只有拥有主题管理权限的用户可以查看。
  • ruixu2395R 离线
    ruixu2395R 离线
    ruixu2395 YunTu
    编写于 最后由 编辑
    #1

    问题影响MCAL版本

    所有使用UART 硬件IP的 MCAL CddUart。

    TX使能FIFO的优化

    问题描述

    TX在Interrupt模式下未使能TX FIFO,会连续进入TX Empty 中断,中断响应次数过于频繁,代码运行效率下降,且会长时间进入中断服务,影响其他模块进入中断(比如WDG模块,会导致Ptmr不能及时进入中断进行喂狗导致复位风险。)

    问题分析

    CddUart使用UART作为硬件IP时(MC03,MD24)发送字符串的逻辑为:
    1、开启UART TX EMPTY中断以及发送器,此时当TX FIFO小于或者等于TX FIFO watermark时(如果没有使能FIFO,默认watermark为0),产生TX EMPTY,驱动根据在此中断里将需要发送的数据写入DATA寄存器。
    [TXIF]

    image-4.png

    2、当数据被填入DATA寄存器后,硬件会自动将DATA寄存器中的数据填入FIFO(无论是否使能FIFO)然后再通过发送器发送到总线上去。值得注意的是,当硬件将DATA寄存器填入FIFO时,便已经达到了触发TX EMPTY中断的条件,此时该数据也许还未来得及被发送器发送到总线上面。因此,TX EMPTY中断触发会非常频繁且快速,可能导致UART_Lld_IRQHandler还未退出,新的TX EMPTY中断就已经触发,导致一直进入该中断直到该字符串发送完成。

    diagram.png

    3、这种情况在使用PTMR定时喂狗的时候就会使UART一直抢占中断服务函数,导致无法及时进入PTMR中断服务函数进行喂狗。

    解决方案

    使能TX FIFO,Watermark设置为0,每次进入TX EMPTY中断时连续往DATA段输入4个字节(如果剩余字节不足4个字节,则将剩余字节全部填入。),这样减小了进入TX EMPTY中断的频率,提高了代码运行效率。

    image-3.png

    image-5.png

    RX使能FIFO的优化

    问题描述

    使用UART自发自收(TX,RX短接),RX收到一个字节后出现Overrun错误

    问题分析

    image.png

    通道15为Uart 总线

    通道14为 进入RX FULL中断触发GPIO翻转

    通道13为 进入TX EMPTY中断触发GPIO翻转

    可以看出TX因为频繁进入EMPTY中断,在RX收到第一个字节后置位RX FULL标志位,此时正在中断函数里,但由于RX FULL标志位是首先判断,此时已经错过了判断,当第二次进入中断时,已经接收到了第二个字节,产生了Overrun错误。

    解决方案

    开启RX FIFO,使其有一个缓冲区域,不会因为以上情况而导致出现RX Overrun错误。

    image-1.png

    1 条回复 最后回复
    0
    • jiankang_wangJ jiankang_wang 被引用 于这个主题

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

    帮助改进和优化YT CONFIG TOOL,有机会抽取YTM32B1ME0 EVB哦...

  • demo
    19
    can
    18
    uds
    11
    lin stack
    7
    fbl
    5
    yt-link
    5
    md14
    4
    adc模块
    3
    Online Users
    WRW
    WR
    QQT-EthanQ
    QQT-Ethan
    yishui66Y
    yishui66
    DerrickD
    Derrick
    hjkjH
    hjkj
    向坤向
    向坤
    YQHY
    YQH
    nrx11N
    nrx11
    yunTu256Y
    yunTu256
    mcM
    mc
    ganyongchaoG
    ganyongchao
    lijianxinL
    lijianxin
    自然魂自
    自然魂
    • 登录

    • 登录或注册以进行搜索。
    • 第一个帖子
      最后一个帖子
    0
    • 版块
    • 最新
    • 标签
    • 热门