控制器局域网(CAN)是现代汽车网络通信与控制系统中的重要组成部分,《汽车CAN总线系统原理、设计与应用》全面、系统地介绍了汽车CAN总线的基本原理、应用层协议制定、系统软件和硬件设计,并且通过实例介绍了汽车CAN总线系统的设计方法。全书共10章,首先介绍了汽车网络通信系统的特点,全面阐述了当今汽车网络系统的结构、类型、应用及其发展趋势,然后着重对CAN总线通信系统的原理和特点、带CAN接口的飞思卡尔微控制器、MSCAN的特点和编程、基于XGATE的CAN通信方法、CAN总线的收发器、CAN总线应用中的Bootloader、CAN的标定协议、CAN总线系统设计流程等几个方面进行了详细的论述,最后给出了CAN总线系统设计、仿真和测试方法。
《汽车CAN总线系统原理、设计与应用》可作为大学相关专业高年级本科生、研究生的教材,同时也是从事汽车电子系统特别是车载网络系统研究与开发人员的参考资料。
《汽车CAN总线系统原理、设计与应用》全面介绍了车载网络技术的现状,详细介绍了CAN总线及SAEJ1939
针对车载CAN总线系统的应用设计进行了专门的论述
可作为汽车电子专业工程师及汽车电子方向学生的专业参考书
随着汽车电子技术的发展,汽车上的电子控制单元(ECU)也越来越多,采用能够满足多路复用的总线通信系统,可以将各个ECU连接成为一个网络,以共享的方式传送数据和信息,实现网络化的数字通信与控制功能。因此,基于简化汽车线束、增强控制功能、提高安全保证、降低燃油消耗、节约制造成本等多方面的考虑,采用数字化车载网络技术将会为汽车电子产业带来一个巨大的飞跃,而CAN(Controller Area Network)总线是车载网络系统中重要的组成部分,目前,它已在汽车动力系统和车身系统的网络通信与控制中得到广泛的应用。
CAN即控制器局域网,是由德国BOSCH公司提出并在国际上应用最广的现场总线之一。1993年11月国际标准化组织正式颁布了道路交通运输工具-数据信息交换-高速通信控制器局域网(CAN)国际标准ISO11898,它为CAN总线在汽车上的标准化、规范化应用铺平了道路。本书全面、系统地介绍了汽车CAN总线的基本原理、应用层协议制定、系统软件和硬件设计、基于CAN的标定协议等内容,并且通过实例介绍了汽车CAN总线系统的设计方法。
美国飞思卡尔半导体有限公司是全球最大的汽车半导体供应商,其产品在汽车网络技术应用领域具有领先地位。飞思卡尔半导体有限公司能够提供广泛的CAN系列产品,包括带CAN接口的8位/16位/32位微控制器,以及用于高速和低速CAN总线通信的收发器等。本书在应用飞思卡尔公司微控制器的基础上,对基于MSCAN的CAN通信编程方法、基于XGATE的CAN通信编程方法以及CAN Bootloader的设计和应用等进行了详细的介绍,这些内容将会为汽车CAN总线系统的设计带来极大的便利。
全书共10章,其中第1章介绍了汽车网络通信系统的特点,全面阐述了当今汽车网络系统的结构、类型、应用及其发展趋势;第2章介绍了CAN总线通信系统的基本原理以及时间触发CAN总线的特点;第3章介绍了专门用于卡车、大客车等的CAN总线通信协议SAE J1939的物理层、数据链路层、应用层内容,同时概述了故障诊断及网络管理的方法;第4~5章介绍了带CAN接口的飞思卡尔微控制器以及MSCAN的特点、结构和功能,详细介绍了基于MSCAN的CAN通信编程方法;第6章针对飞思卡尔新一代的16位微处理器系列S12X(E)的协处理器XGATE的特点,介绍了基于XGATE的CAN通信编程方法;第7章介绍了用于CAN总线通信的收发器原理及应用;第8章介绍CAN总线应用中的Bootloader,并基于飞思卡尔16位微控制器和MSCAN模块给出一个S12系列通用的CAN Bootloader制作和应用的实例;第9章对基于CAN总线的标定协议进行了详细的介绍并给出了应用实例;第10章介绍了汽车CAN总线系统设计的流程,并以车身控制系统为例介绍了汽车CAN总线系统设计、仿真和测试方法。
同济大学汽车学院是我国最早从事汽车网络技术研发的科研机构之一,经过十余年的努力,目前已具备了国际一流的汽车网络系统开发手段,在汽车CAN、LIN、FlexRay等网络技术研发方面取得了很大的成绩,研发工作包括汽车网络系统设计、仿真、测试和标定等内容。同时,我们与国际同行保持着密切的交流及合作,作者曾在德国Wolfhard Lawrenz教授(CAN命名者)所主持的C&S Group进行了为期一年的访问研究,对于国际上的研发水平有着全面的了解。我们已与美国飞思卡尔半导体有限公司(Freescale Semiconductor)合作成立了“同济大学飞思卡尔汽车电子联合实验室”、与美国明导公司(Mentor Graphics)合作成立了“同济大学-明导汽车电子系统设计联合实验室暨技术培训中心”、与德国宜尔公司(IHR GmbH)成立了“同济大学汽车学院-德国宜尔公司车载网络技术联合实验室”。这些交流与合作对于我们在汽车网络技术领域保持领先地位具有重要意义。本书是作者多年来从事汽车CAN总线系统研发工作的积累,希望能够对我国汽车网络系统设计人员提供支持和帮助。
本书除封面署名作者外,还有同济大学汽车学院研究生刘矗、莫莽、李仁俊、陈杰、庄桂宝、张琼琰、丁圣彦等协助书稿整理和程序调试工作,对于他们卓有成效的工作在此表示感谢。
飞思卡尔半导体有限公司的马莉女士、康晓敦先生长期以来一直支持同济大学-飞思卡尔汽车电子联合实验室的工作,本书的撰写也得到了他们及飞思卡尔半导体有限公司许多技术人员的大力支持。明导公司的姚振新先生、董因平博士也为本书提供了许多技术资料。电子工业出版社的编辑高买花女士、田宏峰先生为本书的出版做了大量细致的工作。在此一并表示诚挚的谢意。
由于时间关系,本书暂未对基于CAN的故障诊断协议以及一致性测试等关键技术进行介绍,如有可能将在再版时添加。书中若有疏漏和错误之处,恳请读者批评指正,并提出宝贵的意见和建议。
收起全部↑
第1章 绪论
1.1 汽车电子技术
1.1.1 现代汽车电子技术的发展阶段
1.1.2 汽车电子系统的基本构成
1.1.3 汽车电子系统网络化
1.2 计算机网络
1.2.1 计算机网络概述
1.2.2 计算机网络体系结构
1.2.3 局域网
1.3 车载网络通信及现场总线
1.3.1 车载网络信号的编码方式
1.3.2 车载网络的介质访问控制方式
1.3.3 现场总线
1.4 现代汽车电子网络系统
1.4.1 汽车网络系统结构
1.4.2 汽车总线系统
第2章 CAN总线基本原理
2.1 CAN总线在汽车网络上的应用
2.2 CAN总线的基本特点
2.3 CAN的分层结构及功能
2.4 CAN的消息帧
2.5 非破坏性按位仲裁
2.6 位填充
2.7 CRC校验
2.8 远程帧
2.9 出错帧
2.10 超载帧的规格
2.11 帧间空间
2.12 CAN物理层
2.12.1 物理层的功能模型
2.12.2 物理信令(PLS)子层规范
2.12.3 物理介质附件子层规范
2.13 故障界定与总线管理
2.13.1 故障界定
2.13.2 故障界定规则
2.13.3 总线故障管理
2.14 基于时间触发的TTCAN
2.14.1 基于CAN的时间触发通信
2.14.2 参考时间与参考消息
2.14.3 基本循环
2.14.4 基本循环及其时间窗
2.14.5 系统矩阵
2.14.6 利用时间标志进行消息的发送和接收
2.14.7 全局系统时间
2.14.8 TTCAN的容错功能
2.14.9 TTCAN的应用
第3章 SAE J1939协议
3.1 网络拓扑结构
3.2 物理层简介
3.3 数据链路层
3.3.1 消息
3.3.2 协议数据单元
3.3.3 协议数据单元格式
3.3.4 消息类型
3.3.5 源地址和参数群编号的分配过程
3.3.6 传输协议功能
3.3.7 应注意的问题
3.4 应用层
3.4.1 通信参数定义
3.4.2 发动机通信与控制参数
3.5 故障诊断
3.5.1 诊断故障代码定义
3.5.2 故障诊断状态灯
3.5.3 故障模式标志FMI
3.5.4 诊断故障代码简介
3.6 网络管理
3.6.1 SAE J1939通信方式
3.6.2 电控单元(ECU)的名称和地址
3.6.3 节点地址分配
第4章 飞思卡尔微控制器与MSCAN
4.1 飞思卡尔微控制器
4.1.1 飞思卡尔8位微控制器MC9S08DZ60
4.1.2 飞思卡尔16位微控制器MC9S12XEP100
4.2 飞思卡尔的MSCAN模块
4.2.1 MSCAN模块的特性
4.2.2 MSCAN模块的结构
4.2.3 MSCAN模块相关的寄存器介绍
4.2.4 MSCAN模块的报文存储模式
4.3 MSCAN模块的功能描述
4.3.1 报文存储
4.3.2 报文发送基础
4.3.3 发送结构
4.3.4 接收结构
4.3.5 标识符接收滤波器
4.3.6 标识符接收滤波器示例
4.3.7 协议违反保护
4.3.8 时钟系统
4.3.9 MSCAN的运行模式
4.3.10 MSCAN的低功耗选项
4.3.11 MSCAN的休眠模式
4.3.12 MSCAN的初始化模式
4.3.13 MSCAN的断电模式
4.3.14 MSCAN的可编程唤醒功能
4.3.15 MSCAN的中断
4.3.16 MSCAN的初始化过程
4.3.17 总线脱离恢复
第5章 MSCAN模块的编程
5.1 CodeWarrior软件的下载和安装
5.2 CodeWarrior软件的使用和调试方法
5.2.1 工程的建立
5.2.2 程序的编制和调试
5.3 MSCAN初始化程序的编写
5.3.1 MSCAN初始化流程
5.3.2 MSCAN模块初始化例程
5.3.3 完整的MSCAN模块初始化代码
5.3.4 MSCAN监听与环路模式的应用
5.4 MSCAN发送程序编写
5.4.1 MSCAN的发送流程
5.4.2 MSCAN报文发送例程
5.5 MSCAN接收程序的编写
5.5.1 MSCAN接收流程
5.5.2 查询方式接收CAN帧例程
5.5.3 中断方式接收CAN帧例程
5.6 MSCAN的低功耗应用
5.6.1 低功耗模式介绍
5.6.2 进入低功耗模式
5.6.3 MSCAN唤醒
5.7 使用Processor Expert对MSCAN模块进行编程
5.7.1 带Processor Expert工程的建立
5.7.2 Processor Expert中代码的编写
5.7.3 Processor Expert帮助文档的使用
第6章 基于XGATE模块的CAN通信
6.1 XGATE基本特性
6.1.1 精简指令集内核
6.1.2 XGATE指令集
6.1.3 XGATE访问空间
6.1.4 事件驱动XGATE线程
6.1.5 互斥信号量
6.2 XGATE的中断
6.2.1 中断向量表
6.2.2 XGATE与CPU12X的相互中断
6.2.3 中断嵌套
6.3 使用及初始化XGATE
6.3.1 带XGATE的CodeWarrior工程建立
6.3.2 XGATE的启动及初始化过程
6.3.3 XGATE的使用例程
6.3.4 使用XGATE模块处理CAN接收中断
6.3.5 使用XGATE模块实现CAN帧的发送与接收
第7章 CAN总线收发器
7.1 Freescale低速CAN收发器MC33388
7.1.1 MC33388结构说明
7.1.2 MC33388功能描述
7.1.3 MC33388典型应用
7.2 Freescale高速CAN收发器MC33989
7.2.1 MC33989结构说明
7.2.2 MC33989功能描述
7.2.3 MC33989操作模式
7.3 Philips的CAN收发器PCA82C250
7.3.1 PCA82C250特性
7.3.2 封装及引脚
7.3.3 工作模式
7.3.4 应用举例
第8章 CAN Bootloader的实现与应用
8.1 CAN Bootloader介绍
8.1.1 Bootloader
8.1.2 CAN Bootloader
8.2 S12系列微控制器Flash介绍
8.2.1 存储介质
8.2.2 Flash的操作方式
8.2.3 与Flash擦写相关的寄存器介绍
8.2.4 Flash擦除与写入步骤
8.3 下载文件格式介绍
8.3.1 S记录格式的结构与类型
8.3.2 S记录格式在程序下载中的应用
8.4 S12系列微控制器通用CAN Bootloader的编写
8.4.1 CAN Bootloader功能描述
8.4.2 Flash Bootloader注意事项
8.4.3 CAN Bootloader流程
8.4.4 CAN Bootloader程序分析
8.4.5 S12 CAN Bootloader程序清单
8.5 CAN Bootloader的使用
第9章 基于CAN总线的标定协议
9.1 ASAP标准及ASAM标准组织介绍
9.1.1 ASAP标准概述
9.1.2 ASAM标准组织及其规范
9.2 CCP协议介绍
9.2.1 CCP通信方式
9.2.2 CCP消息格式
9.2.3 DAQ模式下的数据通信
9.2.4 CCP命令代码简介
9.2.5 ERR代码列表
9.2.6 预期运行性能
9.3 CCP命令
9.3.1 连接命令(CONNECT)
9.3.2 交换站标识符(EXCHANGE_ID)
9.3.3 申请密钥(GET_SEED)
9.3.4 解除保护(UNLOCK)
9.3.5 设置MTA地址(SET_MTA)
9.3.6 数据下载(DNLOAD)
9.3.7 6字节数据下载(DNLOAD_6)
9.3.8 数据上传(UPLOAD)
9.3.9 数据短上传(SHORT_UP)
9.3.10 选择标定数据页(SELECT_CAL_PAGE)
9.3.11 获取DAQ列表大小(GET_DAQ_SIZE)
9.3.12 设置DAQ列表指针(SET_DAQ_PTR)
9.3.13 写入DAQ列表(WRITE_DAQ)
9.3.14 开始
9.3.15 断开(DISCONNECT)
9.3.16 设置当前通信状态(SET_S_STATUS)
9.3.17 获取当前通信状态(GET_S_STATUS)
9.3.18 建立checksum表(BUILD_CHKSUM)
9.3.19 清空内存(CLEAR_MEMORY)
9.3.20 编程(PROGRAM)
9.3.21 6字节数据编程(PROGRAM_6)
9.3.22 内存转移(MOVE)
9.3.23 诊断服务(DIAG_SERVICE)
9.3.24 操作服务(ACTION_SERVICE)
9.3.25 连接状态测试(TEST)
9.3.26 开始
9.3.27 获取处于激活状态下的标定页(GET_ACTIVE_CAL_PAGE)
9.3.28 获取CCP协议版本(GET_CCP_VERSION)
9.4 CCP协议应用实例
9.5 CCP协议在ECU端的实现
9.5.1 CCP驱动代码介绍
9.5.2 ccppar.h头文件介绍
9.5.3 ccp.c源代码介绍
9.5.4 ECU侧CCP实现程序流程及源代码示例
第10章 汽车车身CAN总线系统设计
10.1 汽车网络V型开发流程
10.2 车身CAN总线系统拓扑结构
10.3 网络节点控制功能分析
10.3.1 中央控制器
10.3.2 左前门控制器
10.3.3 右前门控制器
10.3.4 左后门控制器
10.3.5 右后门控制器
10.4 车身网络系统通信协议
10.5 车身控制系统硬件设计
10.5.1 中央控制器硬件设计
10.5.2 左前门控制器硬件设计
10.6 Mentor Graphics的汽车网络设计与测试工具
10.6.1 Volcano 车载网络设计与开发平台
10.6.2 VNA在汽车CAN网络设计中的应用
10.6.3 Tellus在汽车CAN网络测试中的应用
参考文献
现代汽车电子技术的发展大致经历了以下几个阶段。
电子管时代:20世纪50年代,人们开始在汽车上安装电子管收音机,这是电子技术在汽车上应用的雏形。1959年晶体管收音机问世后,很快在汽车上得到了应用。
晶体管时代:20世纪60年代,汽车上应用了硅整流交流发电机和晶体管调节器,到60年代中期,利用晶体管的放大和开关原理,开始在汽车上采用晶体管电压调节器和晶体管点火装置。但电子技术更多地应用在汽车上是20世纪70年代以后,主要是为了解决汽车的安全、节能和环保三大问题。进入70年代后期,电子工业有了长足的发展,特别是集成电路、大规模集成电路和超大规模集成电路技术的飞速发展,使得微控制器在汽车上得到广泛的应用,给汽车工业带来了划时代的变革。
集成电路时代:20世纪90年代,汽车电子进入了其发展的第三个阶段,这是对汽车工业的发展最有价值、最有贡献的阶段。集成电路技术所取得的巨大成就使汽车电子前进了一步,更加先进的微控制器使汽车具有智能,能进行控制决策。这样不仅在节能、排放和安全等方面提高了汽车的性能,同时也提高了汽车的舒适性。
网络化综合技术时代:目前汽车技术已发展到第四代,即包括电子技术、计算机技术、综合控制技术、智能传感器技术等先进汽车电子技术。以微控制器为核心的汽车电子控制单元已不再是通过传统的线束连接起来的,而是通过汽车电子网络系统连接起来的,实现了通信与控制的网络化管理。
一些汽车专家认为,就像汽车电子技术在20世纪70年代引入集成电路、80年代引入微控制器一样,近十几年来,数据总线技术的引入也将是汽车电子技术发展的一个里程碑。
……