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.

[参考译文] TMS320F28379D:\examples_cpu1\can_loopback\cpu01\can_loopback.c

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/717032/tms320f28379d-examples_cpu1-can_loopback-cpu01-can_loopback-c

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WARE

你(们)好

我正在尝试发送 CAN 消息、但是在测试模式之外、我实际上无法在 CAN_TX 引脚(GPIO 引脚31)上获得任何活动。 如果我编译 CAN_loopback.c 而没有进行任何修改、我可以在数字示波器上看到 CAN 消息被传输、但是、如果我注释掉下面的第137行和138行

   //
   //启用测试模式并选择外部环回
   //
   HWREG (CANA_base + CAN_O_CTL)|= CAN_CTL_TEST;
   HWREG (CANA_base + CAN_O_TEST)= CAN_TEST_EXL;

因此 CAN 模块不再处于外部回路模式、GPIO 管脚31上看不到任何内容、为什么还要看到 GPIO 管脚31发送的第一条 CAN 报文? 我是否需要在测试模式之外配置额外的寄存器以实际查看/发送 CAN 消息?

此致

Steve

 

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

    Steve、

               请从 www.ti.com 下载 C2000ware 的最新版本 、并在下运行示例 CAN_EXTERNAL_Transmit

    C:\ti\c2000Ware_1_00_05_00\device_support\f2837xd\examples\cpU1目录。 这是一个经过测试的示例。

     

    您的电路板是否具有 CAN 收发器? 这是必须的。

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

    TI\C2000\C2000Ware_1_00_05_00\device_support\f2837xd\examples\CPU1\CAN_external_transmit \cpu01

    示例、第一次正常运行时、我可以看到 CAN TX GPIO 31发送数据、但第一次无法让电路板再次发送任何数据。 如果我在第256行和257行(在启用 CAN 之前)的 CAN_EXTERNAL_Transmit。c 示例中添加以下两行代码

    HWREG (CANA_base + CAN_O_CTL)|= CAN_CTL_TEST; //启用测试模式
    HWREG (CANA_base + CAN_O_TEST)= CAN_TEST_EXL;//启用外部回路模式

    它运行得非常好,所以我将再次提出同样的问题,我是否需要在测试模式之外配置额外的寄存器,以便实际查看/发送 CAN 消息?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    不可以、但您需要连接收发器。 你有一个吗?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    无论我是否连接了 CAN 收发器、我都应该能够在从 GPIO 引脚31发送数字示波器数据至少一个时看到数据(该示例需要接收 RX 消息后将停止)。 要回答您的问题、是的、我连接了一个 CAN 收发器、但有重复的风险、它在启用测试模式的情况下"工作正常"、即我可以通过 CAN 收发器将数据从微控制器发送到 PC。 目前、我正在进行此测试

    //
    //发送消息
    //
    HWREG (CANA_base + CAN_O_CTL)|= CAN_CTL_TEST; //启用测试模式
    HWREG (CANA_base + CAN_O_TEST)= CAN_TEST_LBACK; //启用回路
    CANMessageSet (CANA_base、TX_MSG_OBJ_ID、&sTXCANMessage、MSG_OBJ_TYPE_TX);//发送消息

    DELAY_US (100);

    //
    //接收消息
    //
    HWREG (CANA_base + CAN_O_CTL)&=~CAN_CTL_TEST; //禁用回调
    CANMessageGet (CANA_base、RX_MSG_OBJ_ID、&sRXCANMessage、true);//获取消息

    我可以从 PC 发送/接收消息、但正如您看到的、TX 需要设置测试模式。 有趣的是、只有 TX 消息需要测试模式 RX 在未启用测试模式的情况下工作。

    具有 Delfino F28379D controlCARD 的 T1人员能否运行示例 CAN_EXTERNAL_DETICE.c 并使用数字示波器测量 GPIO 引脚31 (边缘连接器 J1上的引脚82)、并确认他们是否看到任何输出。 除非我启用了测试模式、否则我看不到任何恒定高3.3V 的电压、那么引脚就会变为使用状态、我看到正在传输消息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    请提供有关硬件设置的更多详细信息吗? 您是在自己的硬件上还是在 controlCARD 上运行该示例? controlCARD 和集线站本身不支持 CAN 收发器。 假设您在电路板外部连接了 CAN 收发器? 您能否提供您的设置的接线图?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你(们)好

    这对于 TI 来说应该很容易进行测试、因为如果没有任何外部硬件、我可能会出错、这是我的设置

    硬件

    Delfino F28379D controlCARD

    注:无坞站

    软件

    TI\C2000\C2000Ware_1_00_05_00\device_support\f2837xd\examples\CPU1\CAN_external_transmit \cpu01\CAN_external_transmit

    首次运行 for 循环时编译和下载示例、此时执行 CANMessageSet 函数。我使用数字示波器测量 GPIO 引脚31 (边缘连接器 J1上的引脚82)、该引脚始终处于高电平、即微控制器未发送任何内容。

    然后、如果您没有连接 CAN 收发器、正如您所说的、正常的用户案例函数 CANMessageGet 不会收到消息、您最终会进入错误陷阱 asm (" ESTOP0"); 我想说的是、每次运行此示例时、您应该会看到来自 IO 端口引脚31的一条 TX 消息、除非我启用回路测试模式、否则我不会说任何内容。

    实际上、当我第一次将示例下载到电路板时、它一次工作、但第二次运行后仍然无法工作。 在我的设置中发送 TX 消息的唯一可靠原因是在我发送前启用回读测试模式。 它每次都像这样工作、实际上这并不是什么大问题、我认为代码可以保持这样的状态、但奇怪的是、我必须启用测试模式才能使其在100%的时间内工作。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我刚刚在 C:\ti\c2000\C2000Ware_1_00_05_00\device_support\f2837xd\examples\cpu1\can_external_transmit \cpu01 (在具有外部 PCB 并托管收发器的 controlCARD 上)中运行了示例,运行正常。 附件是完成后的屏幕截图。


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

    有趣的是、您可以尝试运行示例、等待其在 asm (" ESTOP0")中停止、然后按红色的 STOP 按钮。 然后,重新运行示例 run->debug,它是否第二次运行? 如果确实如此、我可能需要在某种类型的扩展坞中安装该板。

    感谢您的测试

    此致

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

    Steve、

    我试过它、它工作正常。 请注意、无需按下该红色按钮。 您只需重新加载代码并再次运行即可。 不管怎样、它工作正常。   

     

    该示例需要通过收发器实现 CAN-A 和 CAN-B 模块的相互连接、正如文件开头的注释明确指出的那样。 即使在 CANTX 引脚上看到波形、直到 ACK 阶段、也需要连接 CAN 收发器。 这就是我从一开始就问收发器的原因。 在一篇文章中,您提到您有收发器,甚至在 PC 上看到了帧,而在另一篇文章中,您说您没有扩展坞;我要求您提供设置的接线图。