CAN总线的数据传输过程:

来自:王硕峰
3年前
已收藏
收藏
阅读数
295
回复数
0

(1)信息格式的转换: 首先是发动机控制单元的传感器接收到发动机转速信息(转速值)。该值以固定的周期(循环往复地)到达微控制器的输入存储器内。 发动机转速值按协议被转换成标准的CAN信息格式(图2-2-5)。


当然,CAN总线上传输的数据也可以是其他信息(如节气门开度、冷却液温度、发动机转矩等),具体内容取决于系统软件的设定。 (2)请求发送信息—-总线状态查询: 如果发送邮箱内有一个发动机转速实时值,那么该值会由发送特征位(举起的小旗)显示出来—请求发送信息。 只有总线处于空闲状态时,控制单元才能向总线上发送信息。CAN构件通过RX线来检查总线是否有源(是否正在交换其他信息),必要时会等待,直至总线空闲下来为止(图2-2-6)。 如果在某一时间段内,总线电平一直为1(总线一直处于无源状态),则说明总线处于空闲状态。
(3)发送信息: 如果总线空闲下来,发动机信息就会被发送出去(图2-2-7)。
(4)接收过程: 连接在CAN总线上的所有控制单元都接收发动机控制单元发送的信息,该信息通过RX线到达CAN构件各自的接收区(图2-2-8)。
接收过程分两步,首先检查信息是否正确(在监控层,然后检查信息是否可用(在接收层)。 检查信息是否正确(在监控层)。接收器接收发动机的所有信息,并且在相应的监控层检查这些信息是否正确。这样就可以识别出在某种情况下某一控制单元上出现的局部故障。 数据传输是否正确,可以通过监控层内的循环冗余码( Cycling RedundancyCheck,CRC)来进行校验(图2-2-9)。
经监控层监控、确认无误后,已接收到的正确信息会到达相关CAN构件的接收区(图2-2-10)。 检查信息是否可用(在接收层)。CAN构件的接收层判断该信息是否可用。 如果该信息对本控制单元来说是有用的,则举起接收旗,予以放行,该信息就会
进入相应的接收邮箱;如果该信息对本控制单元来说是无用的,则可以拒绝接收(图2-2-11)。
(5)冲突仲裁: 如果多个控制单元同时发送信息,那么数据总线上就必然会发生数据冲突。为了避免发生这种情况,CAN总线具有冲突仲裁机制(图2-2-12)。 按照信息的重要程度分配优先权,确保优先权高的信息能够优先发送。 ①每个控制单元在发送信息时通过发送标识符来标识信息类别,信息优先权包含在标识符中。 ②所有控制单元都通过各自的RX线来跟踪总线上的一举一动并获知总线状态。 每个控制单元的发射器都将TX线和RX线的状态一位一位地进行比较(它们可以不一致)。

上一篇下一篇
参与回答(0条评论)
用户头像
上传
用户头像
{{item.nickname}}{{item.pubtime}}回复
回复图片
用户头像
上传
用户头像
{{item1.nickname}}回复 {{item1.othername}} {{item1.pubtime}} 回复
回复图片
用户头像
上传
查看全部回复{{item.replylist_count}}条 查看全部
收起回复 收起全部
{{isLoadList==1?'加载中...':(isLoadList==2&&(list.length <=3||(list.length>3&&!is_hidden))?'没有更多内容了':'查看更多回答')}}
返回顶部

返回顶部