在现代汽车上,汽车电控方面的应用需求挺多,从发动机、变速器、制动、转向等动力控制系统到舒适与安全、仪表报警、电源管理等控制系统均采用了电子控制技术。为了实现各电子控制系统之间的相互通信,最初采用了传统的布线方式,即需要相互通信的两者之间都要通过专属的布线实现”点对点“通信。但随着电子控制系统的增多,传统的布线方式会带来布线复杂、占用空间、成本提高、可靠性和可维护性降低等诸多问题。为此,车载网络(汽车总线)技术应运而生。利用控制器局域网(Controller Area Network,CAN)将汽车电子控制系统进行互联,利用CAN网络后,汽车电子控制系统之间的通信线束大大减少,节省了空间,降低了成本,实现了资源共享,提高了系统的工作可靠性和可维护性。
车载网络也有很多类型,CAN是德国Bosch公司针对汽车电子领域开发的具有国际标准的现场总线,由于CAN具有很强的可靠性、安全性和实时性,目前CAN广泛应用于汽车电子、工业控制、农业控制、机电产品等领域的分布式测控系统中。利用CAN可以很方便地实现多机互联。目前越来越多的MCU内部已经集成了CAN控制器,使得CAN节点硬件电路设计大大简化,KEA 128芯片内部集成了1路CAN控制器。
CAN只使用了物理层、数据链路层和应用层,从而提高了通信的实时性。CAN为多主工作方式,任一节点均可在任意时刻主动地向CAN总线上发送数据,而不分主从。CAN系统采用“边说边听”方式的非破坏性仲裁机制。CAN节点只要检测到总线上有其他节点在发送数据,就要等待总线处于空闲状态。当多个节点同时向总线上发送数据时,数据优先级高的节点先发送。在CAN系统中,帧ID的大小就对应着数据包的实时性要求,优先级越高,对应的帧ID就越小,CAN系统的仲裁机制就是当有多个节点同时向总线上发送数据时,总线上的结果是这多个数据“逻辑与”的值。当一个节点向CAN总线上发送数据包时,首先向总线上发送自己的帧ID,如果一个节点收发的数据一致,就有向总线发送数据的优先权机会。
在汽车场景中,一般会有多个MCU节点,如在汽车的车门CAN系统中,左前车门,左后车门,右前车门,右后车门都有一个对应的MCU,之间通过CAN BUS连接。
基于CAN通信的开发模式和之前的一些开发方法类似,不同的节点(MCU)可以通过提供实现的接口实现发送和接收信息。和之前编程的中断模式有点类似,其中接收CAN信息一般也要采用中断方式进行,一般发送和接收CAN数据帧时,要定义待发送的帧ID和预想接收的帧ID。具体的细节如MCU CAN驱动及应用的实现后续会在相关课程中详细介绍。
Leave a Reply