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.

[参考译文] TMS570LS1224:CAN 环回测试

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1003742/tms570ls1224-can-loopback-tests

器件型号:TMS570LS1224
主题中讨论的其他器件:HALCOGEN

您好!

我正在尝试创建 CAN 环回测试。 我更喜欢 CAN 内部回路。 本手册说明传输的消息被视为  

接收报文  、如果通过接受过滤、则可以将其存储到报文对象中。

我的目标是通过 环回测试来测试我的代码中设置的验收滤波。 这是否可以通过内部回送测试来实现?

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

    是的、您可以使用环回来检查接受过滤。   

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

    您好、感谢您的回复。 我昨天曾尝试过这种方法、因此我写了邮件。 它似乎不起作用。 不确定我会出现什么问题。
    我已使用将控制器设置为回环模式:
    canEnabableeloopback (canReg1、Internal_LBK);

    在 Halcogen 中、已在 Transmsit 节点中设置消息14。
    我已经将掩码设置为0x00000000、ID 设置为0x119、生成了代码。

    我已发送邮件至:
    CAN ID - 0x120
    CAN 消息框编号- 14 (与传输相同、因为它是环回模式。
    和数据位。

    但它似乎接受消息、我可以通过回送看到接收消息。  我希望它拒绝回送消息。

    这是预期的工作方式还是我在这里做任何错误的事?

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

    请为接收使用不同的消息框。

    如果 MSK[28:0]= 0x0000000、 则报文对象的标识符不用于验收滤波、该报文框可以接收 ID 不同的报文。

    例如、Msg box1发送 ID = 119的数据

    MSG box3发送 ID = 121的数据

    MSG box5发送 ID = 123的数据

    报文框2配置为接收数据、该对象的 MSK 为0x0000。 此消息框将从消息框1、3和5接收数据。

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

    #define D_SIZE 8

    uint8 TX_Data1[D_size]={1、2、3、4、5、6、7、8};//系统 RAM 中的发送缓冲器*
    uint8 TX_DATA2[D_SIZE]={11、12、13、14、15、16、17、18};//系统 RAM 中的发送缓冲区*
    uint8 TX_DATA3[D_SIZE]={21、22、23、24、25、26、27、28};//系统 RAM 中的发送缓冲区*
    uint8 RX_Data1[D_SIZE]={0};//系统 RAM 中的接收缓冲区
    uint8 RX_DATA2[D_SIZE]={0};//系统 RAM 中的接收缓冲区
    uint8 RX_DATA3[D_SIZE]={0};//系统 RAM 中的接收缓冲区

    uint32 CAN_Comp_Flag = 0xAA5555;
    /*用户代码结束*/

    int main (空)

    /*用户代码开始(3)*/
    /*初始化 CAN 1 */
    _enable_IRQ_interrupt_();

    canInit();

    canEnabableeloopback (canREG1、Internal_LBK);


    CAN1上的/*发送*/
    canTransmit (canREG1、canMESSAGE_BOX1、TX_Data1);

    /*等待 DMA 中断 ISR 设置标志*/
    while (CAN_Comp_Flag!= 0x5555AAAA);

    /*重置标志*/
    CAN_Comp_Flag = 0xAA5555;

    CAN1上的/*发送*/
    canTransmit (canREG1、canMESSAGE_box3、TX_DATA2);

    /*等待 DMA 中断 ISR 设置标志*/
    while (CAN_Comp_Flag!= 0x5555AAAA);

    /*重置标志*/
    CAN_Comp_Flag = 0xAA5555;

    CAN1上的/*发送*/
    canTransmit (canREG1、canMESSAGE_BOX5、TX_DATA3);


    /*永久运行*/
    while (1);

    /*用户代码结束*/

    返回0;


    /*用户代码开始(4)*/
    void canMessageNotification (canbase_t *节点、uint32 MessageBox)

      CAN_Comp_Flag = 0x5555AAAA;
      if (node=canREG1)
      {
         canGetData (canREG1、canMESSAGE_BOX2、(uint8 *)&RX_Data1[0]);/*复制到 RAM */
      }

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

    非常感谢您的支持。 这对我帮助很大。  

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

    如果您的问题得到解答、请单击"已解决"、谢谢