您好!
我们发现 CAN 错误中断(可能)存在一个奇怪的行为。
当我们以10ms 的周期发送错误帧时、中断在30秒内仅触发4次。
当我们对 CAN-H 和 CAN-L 短路或其中一个与地短路时、中断会在同一时间间隔内触发150次以上的中断(在不同测试期间从153次触发到175次)。
有人能帮助我们了解 这种不同行为的原因吗?
谢谢你
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.
您好!
我们发现 CAN 错误中断(可能)存在一个奇怪的行为。
当我们以10ms 的周期发送错误帧时、中断在30秒内仅触发4次。
当我们对 CAN-H 和 CAN-L 短路或其中一个与地短路时、中断会在同一时间间隔内触发150次以上的中断(在不同测试期间从153次触发到175次)。
有人能帮助我们了解 这种不同行为的原因吗?
谢谢你
您好、Marco、
每个 CAN 帧只产生1个 CRC 错误、1个 ACK 错误、但它可能产生1个以上的位错误(位0和位1)和填充错误。 当您短接 CAN_H 和 CAN_L 时、CAN 总线将处于相同的电平。 SOF 位和(包括) CRC 域之间具有相同极性的5个以上连续位的序列被视为错误条件、并产生填充错误。 短接 CAN_H 和 CAN_L 将持续生成填充错误。
由6位错误标志和8位定界符组成的错误帧可由检测到错误的任何节点布置。 错误帧被下一个 CAN 网络中的所有其它节点识别为一个错误状态。 反过来、它们也会向 CAN 总线发送一个错误帧。
感谢 您的解释、但我们不理解 TMS570行为。
当我们每10ms 发送1个错误帧时、 在30s 内 、我们有3000个错误帧、总线状态保持在"警告"状态、但 CAN 错误处理程序每15秒或多或少地触发一次。
当总线关闭时 ,它会在总线状态正常、警告、总线关闭、一小段等待(自动总线打开延迟?)时周期性地启动,然后再次正常、警告、总线关闭 ...
是否需要此行为?
谢谢、此致
Marco
尊敬的 Marco:
什么是错误:ACK 错误、填充错误、.CRC 错误? 如果错误仅为 ACK 错误、则 CAN 总线将不会关闭 CAN 总线。
每个 CAN 节点都有两个错误计数器:发送错误计数器和接收错误计数器。 有几条规则可以控制这些计数器是如何递增和/或递减的。 检测到故障的发送器以比侦听节点更快的速度递增其发送错误计数器、从而使其接收错误计数器递增。 当两个错误计数器中的任何一个上升到127以上时、节点将进入错误被动状态。 当发送错误计数器上升到255以上时、节点将进入总线关闭状态。 当两个错误计数器中的任何一个上升到96以上时、节点进入错误警告状态。
DCAN 提供一个自动总线开启功能、此功能由 CAN 控制寄存器中的 ABO 位启用。 如果置位、DCAN 将自动启动总线关闭-恢复序列。 此序列可由一个用户定义的 VCLK 周期数延迟、此数量可在自动总线接通时间寄存器中定义。
是的、行为是预期的。