初学CAN总线

初学CAN总线,之前用的是RS485485中没有总线仲裁的概念,如果总线上有十个节点,要事先算好每组数据的发送用时,调好时间延迟,逐个排队发送。而CAN总线可以把多个节点的数据都送到本站的CAN芯片,并处于准备状态,等待总线空闲时,向总线发送数据,由总线仲裁哪一个节点优先发送。

如果多节点同时向总线发送数据,那么总线怎么做到保留其中的一个节点,退回其它节点的呢?要明白总线是如何仲裁的,首先要了解什么是显性,什么是隐性。

CAN是用CANHCANL组成的差分信号传送电平。CANH > CANL 逻辑0 称为显性,CANH = CANL 逻辑1 称为隐形。显性与隐形同时写入总线,总线显示显性,这就是CAN网络冲突检测的基础!

每个节点的发送器将会对发送位的电平和被监控的总线电平做比较,如果电平相同,那么该节点可以继续发送,如果发送的为隐性电平,但是监控到显性电平,那么该节点失去仲裁,必须退出发送状态,只到下一次总线空闲的时候在参与总线的仲裁竞争,每次比较,保留显性,退回隐性,直到剩下一个节点。换句话说,多个节点竞争总线,谁在最后多一个关键性的显性,谁就将胜出,赢得总线的控制权。

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章