Embedded 其他节点如何在CAN总线上确认传输的CAN消息?

Embedded 其他节点如何在CAN总线上确认传输的CAN消息?,embedded,can-bus,Embedded,Can Bus,我知道一个主要的确认位是由另一个节点发送的消息的接收者发送的 我无法理解的是,在接收到整个消息之后,接收方是否发送了一个主控位,或者接收方发送了以ACK位字段为主控位的相同消息 或者是在发送器传输数据帧时,接收器将ACK字段驱动到不同的电压电平 另外,两个Can节点是否可以确认相同的消息?如果是的话,怎么办?若否,原因为何 我需要澄清这一点 或者是接收器将ACK字段驱动到不同的电压 变送器传输数据帧时的电平 这是正确的答案 在CAN帧的确认槽中,变送器将总线设置为隐性电平 每个无误接收帧的接收器

我知道一个主要的确认位是由另一个节点发送的消息的接收者发送的

我无法理解的是,在接收到整个消息之后,接收方是否发送了一个主控位,或者接收方发送了以ACK位字段为主控位的相同消息

或者是在发送器传输数据帧时,接收器将ACK字段驱动到不同的电压电平

另外,两个Can节点是否可以确认相同的消息?如果是的话,怎么办?若否,原因为何

我需要澄清这一点

或者是接收器将ACK字段驱动到不同的电压 变送器传输数据帧时的电平

这是正确的答案

在CAN帧的确认槽中,变送器将总线设置为隐性电平

每个无误接收帧的接收器将CAN总线驱动至确认插槽中的主导状态。所以一个接收器就足够了。多个接收器确认消息不会产生任何影响,因为一个接收器足以将CAN总线驱动到主导状态


另一方面,发射器检测到CAN总线被驱动到主导状态,因此知道至少有一个其他节点已接收到消息,且没有错误。

此处的接收器是指物理层,表示任何接收CAN帧的ECU具有正确的填充位和CRC,不仅仅是设置了实际接收过滤器并使用消息内容的ECU。实际发送主要ack位的ECU和仅读取消息内容的ECU之间有区别吗?基本上,我不能得到这条线。“不仅仅是设置了实际接收过滤器并使用消息内容的ECU。”任何接收CAN帧的ECU都成功地设置了ACK位,即使消息没有在更高的层中接收/使用。e、 g.考虑一个BasicCAN邮箱,它过滤掉SW中的CAN消息。ACK位处理是CAN协议物理层的事情。“至少有一个其他节点”在这里很重要。由于CAN是广播的,任何正确接收到消息的节点都将发送ACK。该节点可以在不进行处理的情况下丢弃消息。此外:具有ACK并不意味着每个节点都已接收到该消息。至少一个,不一定全部!