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

4
为了我的一个项目,我想产生一些CAN总线错误(例如比特填充或CRC错误)。
这只是我心血来潮的小想法,但你认为这是可能实现的吗?我知道所有协议方面的事情都由CAN驱动程序处理,但我也不是CAN通信专家,所以也许我有点希望能够生成这种错误。你怎么看?
我正在使用STM32微控制器和TJA CAN收发器。
1个回答

7
这完全不是由软件处理,而是由芯片上的CAN控制器硬件处理。您无法仅通过软件添加stuffing或CRC错误,尽管可以通过各种硬件技巧实现。
产生大量错误的一种简单方法是只在总线上有一个节点,或将CAN High/Low短接。但如果这样做,你很快就会进入错误激活状态,然后进入错误被动状态。
更微妙的方法是将MCU和收发器之间的Tx/Rx线拉到错误的电平。如果将其中一个连接到外部GPIO引脚,然后在将消息存储在CAN缓冲区后直接发送脉冲,就会导致错误。特别是长度超过6位时=stuff error。这些错误很可能与协议非常同步,所以这可能是您想要的。您可能必须在实际的Tx/Rx引脚中添加约10k的串联电阻,以使它们获得比GPIO更弱的驱动能力。
另一种方法是让2个节点同时发送相同的仲裁字段(ID、RTR +杂项比特),但数据不同。这可以仅通过软件实现,但这意味着您需要有两个无用的节点不断以100%的总线负载发送相同的消息。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接