ACK SLOT只有一个BIT,而接下去的ACK delimiter始终为隐性(我们可认为是1),当数据到达ACK SLOT的时候,所有的节点都会发送显性位(我们可以认为是0),而发送者在ACK这个时间里保持隐性位(即发送者在发送的时候ACK SLOT 为1),这时发送者会检测总线上的ACK时间内的信号,如果是0,则表示正确,如果是1,表示有错误。如果当中有某一个节点在ACK SLOT填入隐性位,则总线上同样还是显性位电平,故只要总线上有一个节点正确接收到数据,则ACK SLOT就会被填入显性电平;那么,接收错误的节点如何来告知发送者此次发送不成功呢?这时候就要用到CAN的错误帧,当一个接收者收到错误的数据的时候,它立即开始发送一个错误帧,则接下去总线上的信号就是这个错误帧,其它的节点和发送者也都会收到这个错误帧,那所有的节点都知道出错了,接收者会丢掉此次消息,而发送者会试图重发此次消息。这才是ACK SLOT真正的含义。
CAN总线发送,就是已广播的形式发出的(多节点接收)。
1、当接收器正确地接收到有效的报文,接收器就会在应答间隙(ACK SLOT )
期间(发送ACK信号)向发送器发送一“显性”的位以示应答。
2、结束
3、总线仲裁
首先你得保证你的时序正确,其它18b20是否能可靠读写,时序没问题,检查连线,连线没问题,那就是它o了。
楼主解决了么?我也很困惑啊