This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TDA3XEVM:如何使用 DCAN 演示接收多 ID?

Guru**** 2587365 points


请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/624569/tda3xevm-how-to-receive-multi-id-using-dcan-demo

器件型号:TDA3XEVM

大家好、我想使用 DCAN 软件 演示接收多 ID、  我研究了 TI 提供的代码。 我有一些问题需要解决。 请帮帮我。 谢谢。

以下代码的功能是什么?

静态空 Utils_dcanInitDefaultMbx2MsgIdMap()

DcanMbx2MsgIdMap[0].mbxId = utils_DCAN RX_MSG_obj;
DcanMbx2MsgIdMap[0].msgid = utils_DCAN CTRL_MSG_ID;

DcanMbx2MsgIdMap[1].mbxId = utils_DCAN TX_MSG_obj;
DcanMbx2MsgIdMap[1].msgid = utils_DCAN CTRL_MSG_ID;

DcanMbx2MsgIdMap[2].mbxId = utils_DCAN RX_ACK_MSG_obj;
DcanMbx2MsgIdMap[2].msgid = utils_DCAN CTRL_ACK_MSG_ID;

DcanMbx2MsgIdMap[3].mbxId = utils_DCAN TX_ACK_MSG_obj;
DcanMbx2MsgIdMap[3].msgid = utils_DCAN CTRL_ACK_MSG_ID;

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    这是为了实例化邮箱到消息标识符的默认映射。 这是为了发送/接收控制消息、也是为了发送/接收同一控制消息的 ACK 消息。 让我确认这一点、并向您提供更多详细信息。

    此致、
    Vivek Dhande。
    德州仪器(TI)(印度) Pvt Ltd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Vivek Dhande,您能给我一个关于如何使用文档配置接收和发送多 ID 的简要说明。

    我现在有一个符合此要求的项目。感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

      您使用的是什么软件? 我是说版本。

    谢谢、此致、
    Vivek Dhande。

    德州仪器(TI)(印度) Pvt Ltd

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    很抱歉、由于我自己的商务旅行、我迟到了回答最后一个问题。 版本名称为 Vision SDK 2.12.02.00。 您可能不需要版本的最后两个零。 非常感谢。

    此致、
    陈定定。
    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    我们必须配置滤波器和屏蔽位来使邮箱能够接收多个 CAN 消息对象。 首先、您必须将这些消息分类为具有通用消息 ID 和筛选器掩码的几个池。 然后为每个池配置验收过滤器。
    例如,要将 ID 为‘0xAF’和‘0xAE’的消息接收到同一邮箱中,您需要将消息 ID 配置为‘0xAF’或‘0xAE’,并将该 Rx 邮箱的“过滤器掩码”配置为‘0xFE’。
    当您‘D‘m为‘sgIdentifierMask’、‘msgIdentifier’字段分别设置适当的值并在‘dcanMsgObjCfgParams_t’结构实例中将‘uMaskUsed’设置为1’来初始化 Rx 邮箱(通过 CANConfigMsgObj()’API 完成)时,必须执行此操作。
    使用同一邮箱发送多条消息不需要任何额外配置。
    您讨论的文档是什么?


    谢谢、此致、
    Vivek Dhande。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Vivek:

         非常感谢你的帮助。 根据您的回复、 当前代码看起来可以接收多个 CAN 消息对象。 但它始终将0xC1打印为接收的 ID。 某些值可能会在 System_dcAN.c 文件中更改。 请参阅以下代码。

    静态空 System_dcanInitCfgStruct(dcanConfig_t * dcanConfig)

    int i = 0;
    uint8 msgData[]={0xAA、0xEE、0xBB、0xFF、0xCC、0xDD、0x55、0xAA};

    #if enable_B2B_DCAN 测试
    dcanConfig->enableLoopback = false;
    其他
    dcanConfig->enableLoopback = true;
    #endif
    dcanConfig->enablePeriodicTx = true;
    DcanConfig->rxMsgId = 0xC1;
    DcanConfig->txMsgId = 0xC2;
    dcanConfig->enableSendRxAck = false;
    dcanConfig->enableReceiveRxAck = false;
    DcanConfig->txAckMsgId = 0xC4;
    DcanConfig->rxAckMsgId = 0xC5;
    DcanConfig->rxMsgCb = System_DcanRxMsgHandler;
    DcanConfig->rxAckMsgCb = System_DcanRxAckMsgHandler;
    DcanConfig->txMsgPeriod_ms = system_DCDAN_TX_PRD_MS;
    DcanConfig->DcanCntrlInterId = system_DCAN INTR_ID;
    DcanConfig->DcanTxTskPri = system_DCAN TX_TSK_PRI;
    DcanConfig->DcanRxTskPri = system_DCAN RX_TSK_PRI;
    DcanConfig->DcanInputClk_Hz = SYSTEM_DCDAN_INPUT_CLK;
    DcanConfig->DcanBaudRate_Hz = system_DCAN 位速率;
    DcanConfig->enableTxMsgCycle = true;
    DcanConfig->DcanTxPrdMsg.dataLength = utils_ARRAYSIZE (msgData);
    对于(i = 0;i < utils_ARRAYSIZE (msgData);i++)

    dcanConfig->dcanTxPrdMsg.msgData[i]= msgData[i];//发送 id 数据初始化

    您能给我一个文档、说明如何从0x500到0x53F 接收 CAN 消息 objjetcs。

    非常感谢。

    陈定定

    惠州德赛 SV 汽车有限公司

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、
    为了接收多个 CAN 消息对象,我不清除静态空 Utils_dcanInitDefaultMbx2MsgIdMap()的函数。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Vivek:


         这是我迫切需要的问题,我希望你能尽快帮助我。 非常感谢。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Chen、

    当前 DCAN 演示不支持在单个 Rx 邮箱中接收多个 CAN 消息。 需要更改/编程的参数(根据我之前的答复)在函数'Utils_dcanInitRxMsgObjParams()'中实例化。 请编辑此函数以获得所需的参数值。

    在'Utils_dcanInitRxMsgObjParams()'中,将以下参数更改为将0x500到0x53F 的消息接收到单个 Rx 邮箱中:

    假设:已发送/已接收的消息是扩展 ID 消息

    /*初始化 DCAN Rx 配置参数*/

    msgid = 0x500;

    pDcanRxCfgPrms->xIdFlagMask = 0x1;

    pDcanRxCfgPrms->dirMask = 0x1;

    pDcanRxCfgPrms->msgIdentifierMask = 0x1FFFFFC0;

    pDcanRxCfgPrms->msgValid = true;

    pDcanRxCfgPrms->xIdFlag = msgType;

    pDcanRxCfgPrms->Direction = DCDAN_DIR_RX;

    if (false =pDcanRxCfgPrms->xIdFlag)

    msgid =(msgid & 0x7FF)<< 18;

    pDcanRxCfgPrms->msgIdentifier = msgid;

    pDcanRxCfgPrms->uMaskUsed = true;

    pDcanRxCfgPrms->intEnable = true;

    pDcanRxCfgPrms->remoteEnable = false;

    pDcanRxCfgPrms->fifoEoBFlag = true;

    尝试上述配置、并让我知道结果。

    目前、我们没有用于此目的的任何文档。

    谢谢、此致、

    Vivek Dhande。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、 Vivek、

    感谢您的回复。  

    DCAN 演示软件主要涉及 SysTem_dcAN.c、Utils_dcAN.c 和 Utils_dcAN.h  在 Sysytem_dca.c 文件中、0XC1用作接收 ID、0xC2用作发送 ID。 重放后、现在 在 Sysytem_dcAN.c 文件中、以下 RX 接口仅接收我发送到 TDA3X 的任何 ID 的0XC1。

    静态空 System_dcanRxMsgHandler (dcanMsg_t * rxMsg)。

    请检查 Sysym_dcan.c 文件、 它允许我只发送0xc1、所有其他 CAN 消息都被阻止。

    非常感谢。

    期待您的回复。

    陈定定

    惠州德赛 SV 汽车有限公司

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    您能给我解释一下您的设置吗? 您的 CAN 节点(TDA3xx 以外的节点)是什么?
    此外、当您发送 ID 值不是'0xC1'的扩展消息时、是否会出现任何错误或 ID 为'0xC1'的消息?
    接收也会发生同样的情况吗?

    谢谢、此致、
    Vivek Dhande。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vivek、

    请在2017年9月22日凌晨3:44查看我的最后一条回复。

    感谢你的善意帮助。

    陈定定

    惠州德赛 SV 汽车有限公司

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、

    感谢您的回复。

    DCAN 演示软件主要涉及 SysTem_dcAN.c、Utils_dcAN.c 和 Utils_dcAN.h 在 Sysytem_dca.c 文件中、0XC1用作接收 ID、0xC2用作发送 ID。 重放后、现在在 Sysytem_dcAN.c 文件中、我将使用软件来模拟 CAN 节点、以向 SOC 发送 CAN 消息、并且以下 RX 接口仅接收0XC1、无论我发送到 TDA3X 的 ID 是什么。

    静态空 System_dcanRxMsgHandler (dcanMsg_t * rxMsg)。

    请检查 Sysym_dcan.c 文件、它允许我只发送0xc1、所有其他 CAN 消息都被阻止。

    非常感谢。

    期待您的回复。

    陈定定

    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、

    重放后、现在在 Sysytem_dcAN.c 文件中、我将使用软件来模拟 CAN 节点、以向 SOC 发送标准 CAN 消息或扩展 CAN 消息、并且以下 RX 接口仅接收0XC1、无论我发送到 TDA3X 的 ID 是什么。

    静态空 System_dcanRxMsgHandler (dcanMsg_t * rxMsg)。

    陈定定

    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    执行此操作的人员休假。 让我和他一起检查这个问题、然后返回给您。

    谢谢、此致、
    Vivek Dhande。
    德州仪器(TI)(印度) Pvt Ltd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    e2e.ti.com/.../code.7z

    您好、Vivek、

    附件是我修改过的代码、SOC 现在可以接收0x500到0x51d 之间的 CAN 消息。 请 帮助我接收  从0x51d 到0x53f 的 CAN 消息。

    此致、
    陈定定

    惠州德赛 SV 汽车有限公司

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Vivek:

    请在您繁忙的日程中抽出一些时间、帮助我回答我提出的问题。

    谢谢你。

     

    期待您的回复。

    陈定定

    惠州德赛 SV 汽车有限公司

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    Vivek 正在迪瓦里度假。 他将在17年10月25日回来后对此进行调查。

    此致

    Sivaraj R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    好的。 谢谢你。 Sivaraj R

    陈定定
    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、

    您能帮我向执行此操作的人员检查我的问题吗? 谢谢你。

    陈定定
    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    一个校正。 Vivek 明天才休假回来。

    此致

    Sivaraj R

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    刚刚从度假回来 我将在星期二(10月31日)之前对其进行研究并提出适当的意见。

    谢谢、此致、
    Vivek Dhande。
    德州仪器(TI)(印度) Pvt Ltd
    联系电话:+918884229933。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vivek、

    祝你一切顺利。谢谢。

    陈定定

        惠州德赛 SV 汽车有限公司

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Vivek、

    您能否与我分享您收集到的问题的相关信息。谢谢。

     陈定定

     惠州德赛 SV 汽车有限公司

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    您的更改应该会收到多条 ID 消息、但在不同的邮箱中、而不是在同一个邮箱中。
    您能否恢复更改并执行以下更改:
    这些更改是为了将0x500到0x53F 范围内的标准 ID 消息接收到单个邮箱(邮箱编号)中。 2)。
    1."system_dcAN.c"更改
    -将"ENABLE_B2B_DCAN 测试"值更改为"1"、这是为了使 DCAN 退出环回模式
    -在'System_dcanInitCfgStruct()'中,将'scanConfig->rxMsgId'更改为'0x500'
    2."utils_dca.c"更改
    -在'Utils_dcanInitDefaultMbx2MsgIdMap()中,将'DcanMbx2MsgIdMap[0].msgid'更改为'0x500'
    -在'Utils_dcanInitRxMsgObjParams()'中,将'pDcanRxCfgPrms->msgIdentifierMask'更改为'0x1F03FFFFF'
    -这也会影响其他 Rx 邮箱。

    我已经在本地测试了这些更改。


    谢谢、此致、
    Vivek Dhande。
    德州仪器(TI)(印度) Pvt Ltd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    请尝试上述更改、并告诉我结果。

    此致、
    Vivek Dhande
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、
    我将在实验结束后回复您。 谢谢你。

    陈定定

    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、
    我恢复了我的更改并执行了以下更改:
    1."system_dcAN.c"更改
    -将"ENABLE_B2B_DCAN 测试"值更改为"1"、这是为了使 DCAN 退出环回模式
    -在'System_dcanInitCfgStruct()'中,将'scanConfig->rxMsgId'更改为'0x500'
    2."utils_dca.c"更改
    -在'Utils_dcanInitDefaultMbx2MsgIdMap()中,将'DcanMbx2MsgIdMap[0].msgid'更改为'0x500'
    -在'Utils_dcanInitRxMsgObjParams()'中,将'pDcanRxCfgPrms->msgIdentifierMask'更改为'0x1F03FFFFF'
    当我使用计算机软件将 CAN 消息0x500~0x53F 发送到 TDA3X SOC 时、打印的跟踪 SoC 也不例外。
    但以下函数接口仅打印 CAN ID:0x500。 我无法接收其他 CAN ID。
    "system_dca.c"中的函数接口。
    静态空 System_dcanRxMsgHandler (dcanMsg_t * rxMsg);

    vps_printf ("CAN_ID:0x%02x "、rxMsg->msgid);
    三、会议的结果

    Vivek、请帮助我联系执行 DCAN 的作者。执行此功能对我来说非常紧迫。
    我谨向你表示衷心的感谢和祝愿。

    陈定定

    惠州德赛 SV 汽车有限公司
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Chen、

    由于您没有收到异常、因此您可以接收消息。 您能否查找数据而不是 ID (假设您发送的是具有不同 ID 的不同有效载荷)?
    此应用程序只打印邮箱的 ID,而不打印接收到的消息的 ID。
    要打印接收到的消息 ID,而不是打印'rxMsg->msgid'(在您之前的答复中提到的 VPS_printf()中),请打印'(rxMsg->appMsgPrms.rxMsgIdentifier >>18U);'


    谢谢、此致、
    Vivek Dhande。
    德州仪器(TI)(印度) Pvt Ltd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Vivek、
    好的。 非常感谢。 保持联系。

    陈定定

    惠州德赛 SV 汽车有限公司