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

YunTu Forum

YTMicro.com
  1. 主页
  2. Discussion & Question
  3. YT SDK
  4. FlexCAN 识别 加速CANFD格式 和 非加速CANFD格式 以及 标准CAN 格式的报文

FlexCAN 识别 加速CANFD格式 和 非加速CANFD格式 以及 标准CAN 格式的报文

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

    问题描述

    客户要求芯片作为CANFD节点可以同时识别 加速CANFD格式 和 非加速CANFD格式 以及 标准CAN 格式的报文。

    • 若接收到的是 CANFD加速格式的报文,则回复 CANFD加速 报文;
    • 若接收到的是 CANFD非加速格式的报文,则回复 CANFD非加速 报文;
    • 若接收到的是 CAN 格式的诊断报文,则回复 CAN 报文。

    问题分析

    Mailbox的结构体中是有对应的位来判断的。
    f138c254-f365-41d9-88fc-fc3b7b9b90c3-image.png

    对应到SDK则判断接收的flexcan_msgbuff_t结构体中的CS即可。

    typedef struct
    {
        uint32_t cs;                        /*!< Code and Status*/
        uint32_t msgId;                     /*!< Message Buffer ID*/
        uint8_t data[64];                   /*!< Data bytes of the FlexCAN message*/
        uint8_t dataLen;                    /*!< Length of data in bytes */
    } flexcan_msgbuff_t;
    

    解决方法

    基于YTM32B1MD1 Flexcan_Canfd_Demo 修改。
    Flexcan_Canfd_Demo.zip
    参考代码如下:

    PRINTF("Rx CS = %x\n", rxMsg.cs);
    if(rxMsg.cs & CAN_MB_EDL_MASK)
    {
        PRINTF("Message is FD\n");
    }else
    {
        PRINTF("Message is not FD\n");
    }
    if(rxMsg.cs & CAN_MB_BRS_MASK)
    {
        PRINTF("Message is BRS\n");
    }else
    {
        PRINTF("Message is not BRS\n");
    }
    
    1 条回复 最后回复
    1

  • 云途论坛规则/Yuntu Forum Rules

    发帖前请查看

  • YCT离线License申请流程

    帮助没办法联网的电脑使用YCT

  • YT CONFIG TOOL调查问卷

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

  • can
    16
    demo
    15
    uds
    7
    lin stack
    6
    fbl
    5
    yt-link
    5
    md14
    4
    adc模块
    3
    Online Users
    • 登录

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