2010年12月刚进入整车厂工作时,主要的职责和任务就是做一个逆向四驱控制器的测试工具。方案是用VC实现上位机界面和开发板实现串口到CAN网络的数据转发。不过,这只是开始!
好了,言归正传,下面让我们来看下常用的汽车电子工具的开发吧!
一、网络协议
目前国内整车常用的网络有CAN和LIN,其他的就不说了。
1、LIN
波特率最高20Kbps(还是理想状态下,一般用到19.2Kbps)。
①、一个数据线,12V电压,主从节点拓扑。
②、帧主要由 帧头 + 数据 组成,LIN通讯工具开发时,可以将帧分为两类,一类为帧头;一类为数据。
③、帧头一定由主机发出,数据可以为主从机发出。帧头和数据部分可以看为两个状态机,开发工具的状态需要在这两个状态中不停切换。
④、LIN的协议描述文件由LDF和NCF两种,LDF描述LIN网络信息,NCF描述LIN节点信息;
LIN的网络测量工具需要能支持LDF的文件导入,NCF可用于工具开发LIN协议的节点处理程序等,
LDF的文件解析请见:http://blog.csdn.net/xianghuaizi/article/details/8785399
NCF的代码生成方法请见:http://blog.csdn.net/xianghuaizi/article/details/8785435
2、CAN
①、双线差分,波特率最高1Mbps,车辆上常用500Kbps、125Kbps等,多节点无主拓扑。
②、帧主要由 帧头 + 数据 组成,可以作为CAN开发工具时的一帧数据同时收发。
③、PC上常用CAN设备由USB转发,USB的驱动可以使用libusb驱动,设计很简单的。转接设备需要实现CAN - USB的数据转化,难道在USB的底层代码编写,最好在该芯片厂商提供的协议栈上修改,工作量会大幅减少。可能你只要修改下VID、PID,再把CAN和USB的数据交互好就OK了!
建议:CAN数据格式为 ID0 ID1 ID2 ID3 Type LEN D0 D1 D2 D3 D4 D5 D6 D7 res1 res2 共16字节;
USB数据使用16字节块传输,这样在CAN和USB缓冲数据会很方便,至于传输速度吗,两种总线数据吞吐量差不多(USB块传输1.28Mbps),一般应用没问题!况且CAN网络的负载不会达到90%这样高的!
④、CAN的网络协议,以VECTOR的DBC用的较多,语法解析器可分析之!