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.

[参考译文] TMS320F28P559SJ-Q1:MCAN 发送数据值通常为0

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1520696/tms320f28p559sj-q1-mcan-send-data-value-alwasy-0

器件型号:TMS320F28P559SJ-Q1

工具/软件:

客户将他们的固件从 F280039移植到 F28P55、我确认他们的工程已将所有 driverlib 和头文件更改为 F28P55、现在在 F28P55上所有函数都能正常工作、MCAN 有问题除外。 MCAN 可以发送具有正确 ID 的数据、但内容始终为0、如下图所示。 我附加了客户 MCAN 代码、如果有任何设置错误、请感谢专家审查? MCAN 代码与其 F280039工程完全相同、可以在 F280039中运行。  

 e2e.ti.com/.../Drv_5F00_MCAN.he2e.ti.com/.../Drv_5F00_MCAN.c

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

    您好、Terry、

    您设置中的系统时钟和 MCAN 波特率是多少?

    SysCtl_setMCANClk (SysCtl_MMCANA、SysCtl_MCANCLK_DIV_4);

    bitTimes.nomRatePrescalar = 0xBU;
    bitTimes.nomTimeSeg1 = 0x2U;  
    bitTimes.nomTimeSeg2 = 0x0U;  
    bitTimes.nomSynchJumpWidth = 0x0U;  


    bitTimes.dataRatePrescale = 0x1U;  
    bitTimes.dataTimeSeg1 = 0xAU;  
    bitTimes.dataTimeSeg2 = 0x2U;  
    bitTimes.dataSynchJumpWidth = 0x2U;  

    F28P55x SDK 有用于 TX 和 RX 的 MCAN 示例、为什么要使用 F280039 MCAN 示例?

    设置 TimeSeg2=0不是一个好主意。

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

    你(QJ)好

    这不是 F280039示例、代码来自已在 F280039上具有 MP 的客户固件、现在他们只需将相同的代码移植到 F28P55。

    通过更改 cmd 文件可以解决该问题、在开始时客户在工程中保留 F280039存储器 cmd、以便 MCAN 在 F28P55中运行问题、替换为 F28P55存储器 cmd 后、MCAN 运行良好。

    但是、我无法理解闪存/RAM 放置为什么会影响 MCAN 运行? F28P55应比 F280039更大的存储器空间、那么为什么不能在 F28P55器件中直接使用 F280039存储器命令?

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

    您知道在 cmd 文件中进行了哪些更改吗?

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

    您好、Terry、

    我检查了 F280039和 F28P55x 的 cmd 文件。   F280039 CMD 文件中的一些存储器段具有较小的大小、这可能对于 P55x MCAN 驱动程序来说足够大。