主题中讨论的其他器件: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 位进行验证)以消除异常情况
我看到有一台正在运行的状态机:它是如何工作的? 状态机频率是多少?
如有任何其他信息、我们将不胜感激
称呼