gpt4 book ai didi

c - 是否可以使用STM32生成CAN总线错误?

转载 作者:太空狗 更新时间:2023-10-29 16:05:19 24 4
gpt4 key购买 nike

对于我的一个项目,我想生成一些 CAN 总线错误(例如位填充或 CRC 错误)。

这只是我的一个小想法,但你认为有可能实现吗?我知道所有协议(protocol)内容都由 CAN 驱动程序处理,但我也不是 CAN 通信方面的专家,所以也许我有一点希望可以实现这种错误生成。你怎么看?

我正在使用 STM32 微 Controller 和 TJA CAN 收发器。

最佳答案

这根本不是由软件处理的,而是由片上 CAN Controller 硬件处理的。尽管可以通过各种硬件技巧来实现,但您将无法单独使用软件添加诸如填充或 CRC 错误之类的内容。

产生大量错误的一种简单方法是总线上只有一个节点,或者将 CAN 高/低短路。不过,如果您这样做,您将很快进入错误主动状态然后错误被动状态。

更微妙的方法是将 MCU 和收发器之间的 Tx/Rx 线拉到错误的电平。如果将其中一个连接到外部 GPIO 引脚,然后在将消息存储到 CAN 缓冲区后直接偷偷输出一个脉冲,就会导致错误。特别是如果长于 6 位 = 填充错误。这些很可能与协议(protocol)同步,所以这可能就是您想要的。您可能需要在实际的 tx/rx 引脚上串联添加 10k,这样它们的驱动强度就比 GPIO 弱。

另一种方法是让 2 个节点同时发送相同的仲裁字段(ID、RTR + misc 位),但数据不同。这可以单独通过软件实现,但这意味着您需要有 2 个哑节点,除了以 100% 的总线负载一遍又一遍地发送相同的消息之外什么都不做。

关于c - 是否可以使用STM32生成CAN总线错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55477177/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com