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/TMS320F28377D:在 CPU2上实现 CAN 通信

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/924436/ccs-tms320f28377d-implementing-can-communication-on-cpu2

器件型号:TMS320F28377D

工具/软件:Code Composer Studio

您好!

我想将 CAN 通信从 CPU1传输到 CPU2。 我在论坛上看到了两次介绍并实施了我的项目:

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/787160

https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/539650?How-to-enable-cpu02-to-send-receive-over-CAN-bus-A-TMS320F28377D-

代码 CPU1:

DevCfgRegs.CPUSEL8.bit.CAN_A = 1;    // 连接到 CPU2

#if CANA_RX_GPIO = 30    //设置引脚

      sdiGpioPinMuxSetup (CANA_RX_GPIO、GPIO_MUX_CPU2、1);    //CANRXA

#endif

sdiGpioPinOptionsSetup (CANA_RX_GPIO、GPIO_INPUT、GPIO_异 步);

#IF (CANA_TX_GPIO = 31)

      sdiGpioPinMuxSetup (CANA_TX_GPIO、GPIO_MUX_CPU2、1);     //CANTXA

#endif

sdiGpioPinOptionsSetup (CANA_TX_GPIO、GPIO_OUTPUT、GPIO_PushPull);

CANInit (0x00048000);

代码 CPU 2:

CpuSysRegs.PCLKCR10.bit.CAN_A = 1;     //  打开外设时钟

CANClkSourceSelect (CANA_base、CANA_CLK_SOURCE);

CANBitRateSet (CANA_base、CANA_CLK_FREQ、CANA_bitrate);

如果仅使用 CPU1、则可以在使用表达式窗口时进行初始化、并设置:CpuSysRegs.PCLKCR10.bit.CAN_A = 1;

相同的过程、在 DevCfgRegs.CPUSEL8.bit.CAN_A = 1之后;在 CPU1 中、CAN 通信不起作用!  是否有论坛中未提及的其他设置?

提前感谢!

Matthias

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

    您好、Matthias、

    您的流程应为:

    -分配 CPU1中的 CAN 引脚多路复用配置

    -从 CPU1禁用外设时钟(CpuSysRegs.PCLKCR10.bit.CAN_A = 0)

    -将 CAN 的所有权从 CPU1切换到 CPU2 (DevCfgRegs.CPUSEL8.bit.CAN_A = 1;);

    -在 CPU2中,打开 CAN 时钟(CpuSysRegs.PCLKCR10.bit.CAN_A = 1)并设置 CAN_CLK (CANClkSourceSelect (CANA_base、CANA_CLK_SOURCE)并配置位时序( CANBitRateSet (CANA_base、CANA_CLK_FREQ、CANA_bitrate))。

    此致、

    Joseph

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

    您好、Joseph、

    感谢  你的帮助!

    问题出在内存链接器文件中。 在这里未分配内存、我忽略了 Code Composer Studio 的警告。

    CAN 通信在我更改链接器文件后运行:

    存储器:

    // CAN 通信(仅 CPU1)
    DEVCFGREGSMEM:origin = 0x0005D000、length = 0x000017F

    章节:

    // CAN 通信(仅 CPU1)
    DevCfgRegsFile:> DEVCFGREGSMEM,PAGE = 1.

    此致、

    Matthias