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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT MCAL
  4. MCAL CddUart驱动使用DMA通信的问题分析

MCAL CddUart驱动使用DMA通信的问题分析

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

    软件版本:MD2 0.9.1
    MC0 2.3.0
    1、同步发送缺帧问题

    使用UART硬件进行串口通信,使用DMA,连续调用同步发送,发现同步发送不完全。
    4e01cf3b-9346-4ce2-88d1-ad9c74908549-img_v3_0211h_ae0f27eb-07dd-4fe7-bc9e-2065a75d32eg.png
    5203a91d-2794-4523-a65b-652eb4685e9e-img_v3_0211h_f8463101-d811-4334-a2ef-8ea1202e1e7g.png
    原因:
    同步发送内部依然使用DMA进行发送(新版本使用轮询的方式,DMA只作用于异步通信),当DMA将数据搬入FIFO完成时,在软件层面上被认为搬移完成,但其实硬件还未来得及将FIFO中的数据发送到总线上。此时立即再次调用同步发送就会导致发送不完全的问题。
    解决方案:
    调用完同步发送后稍加延时,让硬件将FIFO数据发送完成后再进行新的发送请求。
    c7dc7885-a999-40f1-aa3c-4ec54cf3c25f-img_v3_0211h_f34c1946-6232-41c9-aa2b-b0fab4fe5a0g.png

    2、UART IP使用DMA配置IDLE中断
    存在BUG,当UART使用DMA进行通信时,IDLE如果触发,没有及时清理标志位,导致一直进入中断。
    解决方案:
    在触发IDLE中断时结束通信的同时及时清除标志位。
    21c8931b-44e1-4908-b148-921c852a3850-img_v3_0211h_e8f34736-c807-492a-af68-3dd7803c627g.png

    附上MCAL MD2 CddUart模块 DMA+IDLE中断参考DEMO
    CddUart_Idle_Demo.zip

    1 条回复 最后回复
    0

  • 云途开发生态介绍

    快速上手云途开发生态

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YT CONFIG TOOL调查问卷

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

  • can
    24
    demo
    22
    lin stack
    13
    uds
    13
    md14
    6
    fbl
    5
    yt-link
    5
    adc模块
    4
    Online Users
    • 登录

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