×
嵌入式 > 嵌入式开发 > 详情

如何进行汽车CAN总线开发?

发布时间:2020-07-29 发布时间:
|
CAN总线和基于CAN总线的诊断完全不是一个概念,CAN总线的硬件也不一定是OBD的硬件。至于“多去4S店问问技师,车厂的人大部分的人都不一定比这些人懂的多”,你让这些技师给我写个能用的ECU CAN接口出来?

以下开始正式答题。

首先,请看这份恒润工程师写的论文《CAN总线系统测试技术》。

里面基本描述了CAN总线开发的流程,但主要侧重于CAN总线的测试,不过也能让你有所了解。

根据你的描述,假设你的要求是:能够基于某嵌入式平台(最好该平台在汽车ECU开发中被广泛使用),根据给定的通信协议(一般由通信矩阵描述),编写CAN接口代码,并能通过相关设备进行简单测试。

推荐的学习步骤为:

1. 了解CAN基本知识

可以通过这个ppt,恒润的东西还是不错的。

CAN基础_百度文库

2. 直观的了解CAN

这需要你购买或借用CAN总线检测设备,档次差很多。如果是你自己想玩,可以买个周立功的USB转CAN,淘宝也就几百块钱。如果是课题组采购,可以买个Kvaser的USBCAN,几千块吧。大致这个样子。

要是土豪的话,可以买Vector的VN1600,这个就好几万了。以上三种我都用过。一定要买双通道,然后一个口发,一个口接,可以自己接延长线通过示波器看信号了。尝试修改报文ID,数据,波特率等等,看示波器的变化,对理解第一部分的内容很有帮助。

这个图中有三个message。

一位是2us,总线的波特率是多少?1/2e-6=500Kbps

3.选择嵌入式平台,学习CAN接口的编程

飞思卡尔MC9S08DZ60MLH 8位汽车级CAN总线 开发板 学习板超

可以选择这个小板子练习一下,程序的写法都是差不多的。然后和第二部分的总线检测设备连在一起进行测试。

这一步需要详细了解信号转换的知识,特别是Big Endian和Little Endian的区别,factor和offset的作用,如何置1或置0,可以参考DBC_File_Format_Documentation_百度文库,很详细,看完就懂了。

4.如果有兴趣,可以看看J1939协议(用于商用车)或者CANOpen协议(用于现场控制,很多电机控制器使用)或者ISO 15031-5(用于OBD诊断)。

最后,希望你在了解CAN以后,不要花过多的精力在底层上,基本都是体力劳动。体现价值的还得是上层。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
NXP推出Wi-Fi 6E三频段SOC 充分释放6GHz频谱潜力