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

问题描述 投票:3回答:1

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

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

我使用的是STM32微控制器和TJA CAN收发器。

c embedded stm32 can-bus
1个回答
6
投票

这完全不是由软件处理,而是由片上CAN控制器硬件处理。虽然可以通过各种硬件技巧实现,但您无法仅通过软件添加填充或CRC错误等内容。

产生大量错误的一种简单方法是在总线上只有一个节点,或者缩短CAN高/低。如果你这样做的话,你会快速激活错误然后错误被动。

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

另一种方法是让2个节点一次发送相同的仲裁字段(ID,RTR + misc位),但是不同的数据。这可以仅从软件中获取,但这意味着您需要让2个哑节点无所事事,只能在100%总线负载下反复发送相同的消息。

© www.soinside.com 2019 - 2024. All rights reserved.