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.

[参考译文] LAUNCHXL2-570LC43:DCAN 在与 lwip UDP 程序集成时无法工作

Guru**** 2618835 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/786111/launchxl2-570lc43-dcan-can-not-work-when-integrated-with-lwip-udp-program

器件型号:LAUNCHXL2-570LC43
主题中讨论的其他器件:HALCOGEN

您好!  

  ‘s、我开始使用 TMS570LC43x LAUANCHPAD、这是我第一次使用 TI 的产品。因此、我可能不擅长使用它。

  现在我遇到了这样一个问题。首先 ,我修改了 lwip 演示以发送和接收 UDP 帧,它运行良好。 然后我按照 HALCOGEN DCAN 通信示例的指令操作,意识到它也能正常工作,但是 当我将它们组合在一起时,DCAN 不工作。 在逐步调试程序后,我发现, 在执行 canInit()后, 组合程序中的 DCAN 寄存器值与 单独 DCAN 测试程序中的值相比较 。具体而言,当初始 DACN 1时,excanting canREG1->IF1CMD =(uint8) 0xF8U;IF1CMD 保持相同的写操作。

  这个问题困扰了我很长时间,有没有人遇到过类似的问题?  我不知道这是不是我的错。 请给我一些建议。 我现在不知道该怎么办。

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

    DCAN IF1 CMD 寄存器中有一个忙位。 当该忙位为1时、IF1/IF2寄存器组受写保护。 在写入 if!cm 寄存器之前、您是否检查了此忙位?

    消息编号写入[7:0]位后、该忙位设置为1。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢您的回复。

     在写入 IF1CMD 之前、我认为程序已经通过以下语句检查了 BUSY 位:

    while ((canREG1->IF1STAT & 0x80U)=0x80U)

    }/*等待*/

    我还确认了、在写入 IF1CMD 之前、BUSY 位为零。

    此外,canInit()函数是由 HALCOGEN 生成的,我已经比较 了两个程序中的 hl_can.c 文件,它们是相同的,所以我认为 其他地方可能会有问题。

    您是否知道其他地方可能存在问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我找到了问题的原因。
    HL_sys_common.h 97~102行中的语句定义了它的小端字节序或非端字节序。在 lwip 程序中,它定义了小端字节序,但在独立的 DCAN 通信程序中,它不是。所以 DCAN 寄存器的顺序错误,写入这些位置不会成功。

    但是仍然存在问题,HL_sys_common.h 是由 HALCOGEN 生成的,为什么它们不同?