CAN总线在汽车网络中脱颖而出的“秘密”:
- 节点间采用多主通讯方式。
- 采用短帧结构,标准数据帧8个字节,500K波特率,用200多us就能发完。
- 报文ID值越小,优先级越高。
- 非破坏性总线仲裁处理机制。
- 可靠的CRC校验方式,传输数据出错率极低,满足汽车数据传输。
- 报文仲裁失败或者传输期间被破坏,有自动重发(机制)。
- 节点在严重的错误情况下,具有自动脱离总线的功能,不影响总线的正常工作。
基于以上的优势,CAN总线被广泛应用于工业自动化,机器人通讯,新能源汽车等领域。我从事了7年工业自动化,3年工业AGV的研发,都能看到CAN总线的身影。如果想在这些领域从事研发的工作,必须掌握CAN总线的物理层与数据链路层的知识。
比如,为什么要学习物理层?
- 某个项目上可能存在两种CAN网络(高速CAN网络与低速容错CAN网络)。高速CAN与低速容错CAN在CANH与CANL上的电压差是不一样的。根据这个电压差,找一个示波器过来就能判断是高速CAN还是低速容错CAN。
- 当设计新的CAN总线网络,每一个CAN节点的波特率是一样的(比如500KB),但是就是通讯不正常。当你了解物理层的知识后,就会想着先去检查一下终端电阻有没有遗漏,还有总线的CANH与CANL的之间的电阻值是不是接近60欧。
- 以前看过一台AGV的CAN网络设计,这个CAN网络的设计真的惨不忍睹,怪不得没法连续运行超过10分钟。设计这个CAN网络的工程根本不了解CAN总线的物理层知识,原因如下:
- 通讯线没有使用特性阻抗约为120欧的双绞线,他用了两根0.3mm的蓝色单芯线来搭建整个AGV的CAN网络。
- 终端电阻只接了一个,另外一个没有接。
- 采样点是什么?为什么采样点会造成CAN通讯异常?这些都是CAN物理层的知识。
- 学习CAN总线的物理层知识后,才能通过示波器看到一些问题,比如信号反射与信号振铃是否严重,CAN节点发出的显性(逻辑0)电平时,CANH与CANL的压差是不是正确(正确是2V,我见过神奇的3V)等等情况。
综上所述,一定要掌握CAN总线的物理层知识,才能解决项目上可能出现的问题。
此外,广州虹科录制的CAN总线技术课程非常不错,建议同学们学习一下。B站的地址:https://www.bilibili.com/video/BV1gD4y1U7bJ?p=1