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

YunTu Forum

YTMicro.com
  1. 主页
  2. Announcements
  3. MCAL Release Notes
  4. MCAL Public Issues
  5. 🛠️ MCAL 连续两帧相同ID CAN 报文丢帧Bug

🛠️ MCAL 连续两帧相同ID CAN 报文丢帧Bug

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

    📌 问题描述

    在连续发送两帧命中同一个邮箱(Message Buffer, MB)时,若用户的中断处理函数耗时较长,可能会出现第二帧丢失的情况。


    🔄 复现方法

    1. 使用 CAN 总线设备向目标 CAN Driver 发送一帧报文,数据为全 0x00;
    2. 在 TxConfirmation 回调函数中打断点;
    3. 当断点命中后,再发送一帧相同 ID 的报文,数据改为全 0xFF;
    4. 全速运行程序,观察断点不会再次命中;
    5. 此时暂停程序,检查 RAM 会发现数据已写入 MB,但未触发中断,导致丢帧。

    🔍 原因分析

    • 接收中断触发后,驱动的处理流程为:

      1. 复制 MB 数据,解锁邮箱;
      2. 调用用户层回调函数;
      3. 清除 IFLAG 中断标志位。
    • 在 步骤 1 完成后,邮箱已解锁,可接收下一帧报文;

    • 如果此时下一帧报文迅速到达并命中相同邮箱,会重新置位 IFLAG;

    • 然而,在 用户回调函数执行完后才清除 IFLAG,会将刚才置位的中断标志也一并清除;导致第二帧虽然数据已被写入,但中断未触发,用户层未能感知,出现丢帧。


    ✅ 修复方案

    在调用用户的中断处理函数前,先清除邮箱的中断标志位,避免误清除后续帧的中断标志。

    📦 影响版本

    以下版本存在该问题(之前的版本也会存在该问题):

    • YTM32B1HA0_1_0_0_HF001
    • YTM32B1MC0_1_0_0
    • YTM32B1ME0_2_2_0
    • YTM32B1MD1_2_2_0
    1 条回复 最后回复
    0
    • FrankieF Frankie 从 中的 MCAL BUGS 移动了该主题
    • yt0069Y 离线
      yt0069Y 离线
      yt0069 YunTu
      编写于 最后由 编辑
      #2

      jiankang_wang 修复方案有没有示例代码
      image.png

      1 条回复 最后回复
      0
      • jiankang_wangJ 离线
        jiankang_wangJ 离线
        jiankang_wang YunTu
        编写于 最后由 编辑
        #3

        改动挺多的,没有提供示例代码,建议直接升级。

        1 条回复 最后回复
        0
        • yt0069Y 离线
          yt0069Y 离线
          yt0069 YunTu
          编写于 最后由 编辑
          #4

          那老版本的就只能升级了啊?

          1 条回复 最后回复
          0
          • jiankang_wangJ 离线
            jiankang_wangJ 离线
            jiankang_wang YunTu
            编写于 最后由 编辑
            #5

            那是需要我这边出一个针对影响版本的修复方案吗?

            1 条回复 最后回复
            0
            • yt0069Y 离线
              yt0069Y 离线
              yt0069 YunTu
              编写于 最后由 编辑
              #6

              最好能出一个,可以告诉客户现有版本的修复方案,很多客户就是拿现在的版本做开发的

              1 条回复 最后回复
              0
              • jiankang_wangJ 离线
                jiankang_wangJ 离线
                jiankang_wang YunTu
                编写于 最后由 编辑
                #7

                Can_multi_msg_bugfix.zip

                1 条回复 最后回复
                0
                • jiankang_wangJ jiankang_wang 被引用 于这个主题
                • jiankang_wangJ jiankang_wang 被引用 于这个主题
                • jiankang_wangJ jiankang_wang 被引用 于这个主题
                • EnweiE Enwei 从 MCAL Private Issues 移动了该主题

              • 云途开发生态介绍

                快速上手云途开发生态

              • 云途论坛规则/Yuntu Forum Rules

                发帖前请查看

              • YT CONFIG TOOL调查问卷

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

              • demo
                19
                can
                18
                uds
                8
                lin stack
                7
                fbl
                5
                yt-link
                5
                md14
                4
                adc模块
                3
                Online Users
                xulxX
                xulx
                • 登录

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