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.

[参考译文] TMS320F28335:eCAN:意外停止发送操作:勘误表

Guru**** 2544110 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/624678/tms320f28335-ecan-unexpected-cessation-of-transmit-operation-errata

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

作为空客直升机开发的一部分、我必须介绍与 DSP 勘误表相关的请求。

F28335 DSP 使用 ECAN-A 发送和接收 CAN 帧

 

F28335 DSP 从12个不同的邮箱中每发送50ms 12帧(按顺序)。

 

勘误表为:

 

通报 eCAN:意外停止传输操作

受影响的版本0、A

详细信息在极少数情况下、eCAN 模块停止消息传输

已观察到(而接收操作正常继续)。 此异常状态

总线上没有任何错误帧的情况下可能发生。

权变措施可以使用 eCAN 模块的超时功能(MOTO)来检测这种情况

条件。 发生这种情况时、将 CCR 位置位并清零(使用 CCE 位进行验证)

以消除异常情况。

 

 

要介绍这一点、我将编写以下代码:

         µs µs…- MOTO 寄存器的初始值为:第一条消息500 μ s、下一条消息1000 μ s 等等。 (CAN 速度设置为500kB/s、DLC 设置为8个字节、最大传输值约为280 µs)

-         CANTSC 在发送 CAN 帧之前每隔50ms 被清零

-         CANTOC 位被置位、每发送一条消息都被置位。

 

使用串行调试器时、我看到 MOTS 寄存器是有效值(对于所有发送的消息):

                                        µs 值312 μ s (分辨率为500kB/s 的2 µs)时为0x9C

-         0x12C                                    µs 第二个600 µs Δ= 288 μ F

-         0x1B8                                         880 µs                  Δ= 280 µs

-         0x246                                         1164 µs               Δ= 284 µs

-         0x2D1、0x35D、0x3E9…

 

 

接下来、验证是否在 MOTO 值之前未发送消息、CANTOS 位是否置位。

 

µs µs 我随调试器 MOTO 值而改变:例如、我将第一个 MOTO 值改为0x01 (而不是0xFA = 500 μ s (2 μ s 分辨率)

 

我可以看到,CANTOS 位0切换为0 /1,(因为超时总是置位,为什么 CANTOS 位不总是置位?)

对于任何其它 MOTO 值改变都是一样的。

 

 

由于权变措施指定了 MOTO 的使用:

- 可以使用 eCAN 模块的超时功能(MOTO)来检测这种情况。

 

使用前面描述的简单示例,CANTOS 位不是系统设置的:  

我如何才能确保这一点

意外停止发送操作

是否始终检测到?

 

在发送之前是否可以清除 MOTS 值,并在发送后验证所有 MOTS 值是否都低于 MOTO 值(软件函数?)

您能否向我发送代码示例以解决勘误表问题?

您能详细介绍一下吗?

发生这种情况时、将 CCR 位置位并清零(使用 CCE 位进行验证)以消除异常情况

我看到有一台正在运行的状态机:它是如何工作的? 状态机频率是多少?

如有任何其他信息、我们将不胜感激

称呼

 

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

    塞尔日

               不知道为什么在我们已经在 https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/624320中讨论此问题时打开了新的主题帖

     

    无论如何,我不是很理解你的意思,“我可以看到 CANTOS 位0切换为0 /1,(因为超时总是设置的,为什么 CANTOS 位不总是设置的? )"。 在第一部分、您指示 CANTOS 位已设置(如其应有的那样)、但在第二部分、您似乎表示 CANTOS 位并非始终设置。 您是否说 CANTOS 位并不总是在超时条件下设置? 您看过 TI 网站上的 SPRA876B 吗? 有一个示例代码显示了如何实现超时功能。

     

     

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    在 TI 法国的一位人员邀请我更准确地写下问题后、我添加了一个新主题

    我在中找不到示例代码
    C:\ti\c2000\C2000Ware_1_00_01_00\device_support\F2833x\examples
    (我的机器上已安装了 zip 文件)

    您能否确认 CAN 示例在哪里?

    实际上、CANtos 位并不总是置位。 有时仅(因此位切换、有时为0、有时为1)

    感谢您的回答

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

    TI 网站上未提供 SPRA876.zip
    您能给我发送一个有效的链接来获取 CAN 示例吗...

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

    您好、Serge、

    实际上、应用报告中的 zip 文件链接不正确。 很抱歉。 请使用 此链接 。 请告诉我们此代码示例是否有帮助。

    谢谢、
    François μ A。

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

    大家好、Francois、

    感谢您的回复。

    MOto 示例显示了解决方案:我为传输中的所有邮箱安装了具有 MOTF 标志的 ECAN1中断。

    当 TSC 达到 MOTO[n]值时,会按预期生成中断。 (如果我使用 RS232调试器更改时间值低于预期的 MOTO 值!)

    中断设置一个标志、用于在消息传输前切换 CCE

    (16个 CAN 消息的每50ms 传输一次)

    再次感谢

    恭喜