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.

[参考译文] TMS320C2.8346万:TMS320C2.8346万 ECAN使用问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1090379/tms320c28346-tms320c28346-ecan-use-problem

部件号:TMS320C2.8346万
主题中讨论的其他部件:TMS320F2.8335万

您好,

  当我使用  正式的推荐程序:eCan_a_to_b_xmit时,我发现该程序将以这段时间任务结束,

但是,如果我 不使用此功能,而 直接设置“ECanaRegs.CANTRS.ALL”, 我可以 通过CAN接收器从计算机接收数据。

下面是我的ECAN硬件设计:

所以,我的问题是为什么我 不能获得 Transmission-Acknowledge?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
     当我使用  正式推荐程序eCAM_a_to_b_xmit时,我发现该程序将在此任务中结束[]

    您的意思是,它在这个循环中一直循环? 我在您的代码片段中注意到一件事:

    while (ECanbaShadow.Canta.bit.TA25 == 0);

    它应该是ECanaShadow或 ECanbShadow。 它不能是 ECanbaShadow。 我不知道您的代码如何编译这个错误。  

    2.8346万"]如果我 不使用此选项,直接 设置"ECanaRegs.CANTRS.ALL ", [/报价]

    我不明白你想在这里说什么。 您只能将TRSn位设置为启动传输。 变速器完成后,此位将由CAN模块自动清除。 您不能手动清除它。  

    为什么2000为什么我109.0379万我不2.8346万不能2.8346万能 获得 Transmission-Acknowledge?  [/引述]

    请下载我的申请报告 http://www.ti.com/lit/spra876。 它有许多经过测试的示例。 请注意,这些示例是为TMS320F2.8335万器件编写的。 但是,只要您注意SYSCLKOUT速度的变化以及CANBTC寄存器的相应更改,它们就可以轻松地用于任何具有eCAN的28x器件。 我请您查看提供的调试提示。 大多数CAN问题都可以通过检查清单来解决。 具体来说,我已经详细解释了ACK机制。

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

    感谢您的回复,很抱歉我上传了错误 的代码,下面是正确的代码:

    如果  我使用 下一个代码而不等待While任务,它将在这段while循环中永久循环:

    然后我可以  通过CAN接收器从我的计算机接收数据。 但现在我需要知道一个ECAN传输何时完成。

    它们有什么区别(所有初始ECAN集都相同),为什么 我 的硬件无法成功执行官方推荐计划?

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

    请运行 SPRA876中的CAN_TXLOOP_A,现在让我介绍您观察到的内容。 它是一个经过测试的代码,应按"现在"的方式工作。 您需要进行的唯一更改是使用CANBTR寄存器来说明C2.8346万的不同SYSCLKOUT频率。

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

    您好,   SPRA876中CAN_TXLOOP_A的结果 与 eCAN_A_to_b_xmit 项目相同。 这两种方法都以上述时间结束。 这很奇怪, 我想知道我的硬件是否有一些错误?

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

    如果SPRA876中的示例本身不起作用,则可能存在硬件问题。

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

    但是如果我不使用,我的硬件可以传输数据,正如上面所说的,硬件也在上面。

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

    开始执行DO-while循环之前,请将Canta复制到ECanaShadow.Canta中:

         ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;
    		do {ECanaShadow.CANTA.all = ECanaRegs.CANTA.all;}	// Wait for TA0 bit to be set..
             while(ECanaShadow.CANTA.bit.TA0 == 0 );    

    如果这不起作用,我真的不知道问题是什么。 您说SPRA876中测试过的代码也显示相同的问题,但如果您不轮询TA0,则可以使传输正常工作。