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.

[参考译文] CCS/TIDA-00203:在 TI CAN 与以太网板之间使用 CAN0时出现问题

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

https://e2e.ti.com/support/tools/simulation-hardware-system-design-tools-group/sim-hw-system-design/f/simulation-hardware-system-design-tools-forum/575384/ccs-tida-00203-problems-using-can0-on-ti-can-to-ethernet-board

器件型号:TIDA-00203
主题中讨论的其他器件: DK-TM4C123GTM4C129XNCZAD

工具/软件:Code Composer Studio

您好!

我们使用的是 TI CAN 转以太网 TIDA-00203参考设计。 该演示使用 CAN1与 DK-TM4C123G 进行通信。 我们让它发挥作用。 我们需要使用 CAN0进行测试、因此我们需要对代码进行小幅更改。 我们复制了 TIDA-00203板上的电路、将 CAN 收发器添加到板上的扩展连接器、因此 CAN0TX 和 CAN1RX 与评估板上的 CAN1接口具有相似的电路。 我们尝试通过从 DK-TM4C123G 发送一条 CAN 消息来运行同一个演示、但现在要发送到 扩展连接器上的"CAN0"接口。  我们看到数据包在 TP7上进入 CAN0RX、 但我们没有到达 CAN1IntHandler 中的断点。

1) 1)我们将代码中的 CAN1_base 更改为 CAN0的地址、而不是 hw_memmap.h 中的地址(这样、我们对代码的更改将非常小)

#define CAN1_BASE              0x40040000 // CAN1 0x40041000、CAN0 0x40040000

2) 2)我们在 CAN1InHandler 函数中修补为 CAN0的 ISR、方法是更改 tm4c129xnczad_startup_ccs.c 中的以下内容:

IntDefaultHandler、                     // CAN0
CAN1IntHandler、                     // CAN1

至:

CAN1IntHandler、                     // CAN0
CAN1IntHandler、                     // CAN1

现在、如果 CAN 数据包在 CAN0上进入、它将向 CAN1IntHandler 发送数据(不过这不起作用)。

3) 3)我们尝试在端口 T 寄存器中为 CAN0启用正确的备用功能,并将注释行替换为以下未注释行:只有 CAN1TX 和 CAN1RX 在演示代码中启用 ,因此我们启用了 CAN0TX 和 CAN0RX:

//   GPIO_PORTT_AFSEL_R |= 0x0C;//原始
   GPIO_PORTT_AFSEL_R |= 0x0F;//添加了 Todd

//   GPIO_PORTT_DEN_R |= 0x0C;//原始
   GPIO_PORTT_DEN_R |= 0x0F;//添加了 Todd

//   GPIO_PORTT_PCTL_R |= 0X7700;//原始
   GPIO_PORTT_PCTL_R |= 0X7777;//添加了 Todd

对电路板进行重新编程后、数据包通过 CAN0收发器进入 CAN0接口、并进入 MCU 上的 CAN0RX (我们 可以在 TP7上看到)。

为什么 我们没有在 CAN1INTHandler()中获得中断/到达断点?

谢谢、

Todd

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

    为了检查进入 TM4C 的 CAN0的 CAN 信号是否正常、我运行了该测试.....

    我从 DK-TM4C123G 向 TIDA-00203上的 CAN1发送了一个字符(有效)。 这样就可以正常工作、我会收到一个 CAN1中断、并且该字符会显示在我的 telnet 窗口中。 我用示波器测量了进入 TIDA-00203板上 TM4C 的 CAN1RX 的信号、并将其保存下来以供参考。

    然后、我根据上述更改重新编译了代码、并将字符从 DK-TM4C123G 再次发送到"CAN0"(位于连接 CAN 收发器的 TIDA-00203扩展连接器上)。 我用示波器测量了进入 TIDA-00203板上 TM4C 的 CAN0RX 的信号、它看起来与我之前保存的进入 CAN1RX 的信号完全相同、因此我的信号看起来不错。 我没有点击 CAN0 ISR 中的断点,当然我在 telnet 窗口中看不到该字符。 不过、由于字符传输已停止、TIDA-00203会在 CAN0上向 DK-TM4C123G 发送 ACK。 当我尝试将演示从使用 CAN1移动到 CAN0时、我的 CAN2enet 代码中缺少什么?

    谢谢、
    Todd
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我发现了问题。 我需要在 can2enet.c 中使用以下行:

    IntEnable (INT_CAN0);
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Todd、
    抱歉、我没有快速回复。
    似乎您的 plobrem 已经解决了、但如果您需要进一步的帮助、请告诉我。

    感谢您选择 TI!
    此致、
    Yuki Yoshimura