《CAN总线应用层协议实例解析 第2版》PDF下载

  • 购买积分:13 如何计算积分?
  • 作  者:牛跃听,周立功,高宏伟,黄敏思编著
  • 出 版 社:北京:北京航空航天大学出版社
  • 出版年份:2018
  • ISBN:9787512427495
  • 页数:380 页
图书介绍:详细介绍了基于iCAN协议、DeviceNet协议、J1939协议、 CANopen协议的嵌入式开发实例,每一种实例都从协议详解、开发步骤论证、硬件电路设计、软件程序设计等方面进行了解析。同时,书中涉及的硬件电路均制作了电路板实物,软件均在电路板上调试运行正常。本书可供工业控制领域的研发人员、电子爱好者使用或参考。

第1章 CAN总线基础知识 1

1.1 CAN总线简介 1

1.2 CAN总线通信过程 2

1.3 CAN总线协议规范 3

1.3.1 报文 4

1.3.2 报文滤波 11

1.3.3 振荡器容差 12

1.3.4 位定时与同步 12

1.3.5 位流编码及位填充 16

1.3.6 CAN总线错误处理和故障界定 17

1.4 CAN总线的基本组成 19

1.4.1 CAN控制器 20

1.4.2 CAN收发器 22

1.4.3 CAN总线接口电路保护器件 22

1.5 CAN总线传输介质 24

1.5.1 双绞线 24

1.5.2 光纤 26

1.6 CAN网络与节点的总线拓扑结构 27

1.7 改善电磁兼容性的措施 33

第2章 CAN2.0A/CAN2.0B协议解析及开发实例精讲 35

2.1 基于CAN2.0A/CAN2.0B协议节点开发的一般步骤 35

2.2 编程实践——基于51系列单片机+SJA1000芯片的CAN2.0A协议通信程序 35

2.2.1 学习板硬件选择及电路构成 35

2.2.2 CAN控制器SJA1000 38

2.2.3 51系列单片机怎样控制SJA1000 44

2.2.4 SJA1000地址的确定 45

2.2.5 SJA1000的滤波器设置 46

2.2.6 CAN总线通信波特率的计算 51

2.2.7 程序流程图 53

2.2.8 程序头文件定义说明 54

2.2.9 SJA1000初始化流程 57

2.2.10 发送子函数详解 64

2.2.11 接收子函数详解 66

2.2.12 中断的处理及中断函数详解 66

2.2.13 完整的24路开关量采集学习板程序 71

2.3 编程实践——基于MSP430系列单片机+MCP2515芯片的CAN2.0B协议通信程序 77

2.3.1 学习板硬件选择及电路构成 77

2.3.2 CAN控制器MCP2515 80

2.3.3 晶振的选择及CAN通信波特率的计算 84

2.3.4 SJA1000和MCP2515在滤波器设置时的区别 86

2.3.5 程序流程图 87

2.3.6 程序头文件定义说明 88

2.3.7 MCP2515的SPI程序 88

2.3.8 完整的MSP430单片机CAN总线学习板程序 89

2.4 编程实践——基于STM32的CAN2.0A协议通信程序 96

2.4.1 基于STM32的CAN总线学习板硬件电路设计实例 96

2.4.2 学习板实现的功能 97

2.4.3 学习板硬件选择及电路构成 97

2.4.4 STM32F103RBT6的CAN接口 99

2.4.5 程序流程图 112

2.5 如何监测CAN网络节点的工作状态 113

2.5.1 只有两个节点的简单CAN总线网络 113

2.5.2 大于两个节点的CAN总线网络 115

2.5.3 CAN总线应用层协议中的节点状态监测 118

第3章 CAN总线应用层协议简介 119

3.1 CAN总线应用层协议 119

3.2 CAN2.0A/CAN2.0B协议的局限性 119

3.3 常用的CAN总线应用层协议 120

3.4 实例讲述构建CAN总线应用层协议时的关键问题 123

3.4.1 CAN网络的实时性能 123

3.4.2 设备的电源连接 125

3.4.3 网络电缆 128

第4章 嵌入式开发实例——基于iCAN协议的应用设计精讲 131

4.1 iCAN协议 131

4.1.1 iCAN协议规范中专有名词解释 131

4.1.2 iCAN的报文格式 132

4.1.3 iCAN的通信过程 135

4.1.4 iCAN协议中的设备定义 141

4.1.5 iCAN报文传输协议 147

4.1.6 iCAN报文处理流程 156

4.2 基于iCAN协议智能节点开发的一般步骤 156

4.3 基于iCAN协议功能模块的硬件电路设计 157

4.4 编程实践——基于51单片机的iCAN协议的学习板程序 159

4.4.1 程序头文件定义说明 159

4.4.2 子函数详解 162

4.4.3 基于iCAN协议的从站通信程序流程图 175

4.4.4 完整的iCAN协议从站通信程序 175

第5章 嵌入式开发实例——基于DeviceNet协议的应用设计精讲 177

5.1 DeviceNet协议 177

5.1.1 DeviceNet协议中的专有名词解释 177

5.1.2 对象的编址 178

5.1.3 DeviceNet对象模型 179

5.1.4 DeviceNet的报文标识符 191

5.1.5 DeviceNet的报文格式 196

5.1.6 UCMM连接和预定义主/从连接 197

5.1.7 DeviceNet的通信过程 198

5.2 基于DeviceNet协议智能节点开发的一般步骤 210

5.3 基于DeviceNet协议功能模块的硬件电路设计 210

5.4 编程实践——基于ADμC812单片机的DeviceNet协议的学习板程序 213

5.4.1 程序头文件定义说明 213

5.4.2 子函数详解 217

5.4.3 基于DeviceNet协议的从站通信程序流程图 222

5.4.4 滤波器设置 222

5.4.5 完整的DeviceNet协议从站通信程序 224

第6章 嵌入式开发实例——基于J1939协议的应用设计精讲 231

6.1 J1939协议 231

6.1.1 J1939协议规范中专有名词解释 231

6.1.2 J1939的报文格式 232

6.1.3 J1939地址和参数组编号的分配 234

6.1.4 J1939的通信过程 241

6.2 基于J1939协议电控系统开发的一般步骤 246

6.3 发动机转速测量节点的硬件电路设计 247

6.4 发动机转速测量节点的软件编程 250

6.4.1 软件设计流程图 250

6.4.2 程序头文件定义说明 251

6.4.3 CAN芯片的初始化程序 252

6.4.4 子函数详解 252

6.4.5 中断的处理 255

6.4.6 完整的J1939协议发动机转速测量节点程序 256

第7章 CANopen协议与应用 266

7.1 CANopen协议 266

7.1.1 CANopen协议的历史发展 266

7.1.2 CANopen协议中的几个概念 267

7.1.3 CANopen开发遵循的几个注意点 285

7.2 基于CANopen协议从节点开发的一般步骤 285

7.3 CANopen从站开发 286

7.3.1 CANopen从站硬件设计 287

7.3.2 CANopen从站相关硬件与驱动代码设计 289

7.3.3 编程实践——基于C8051F040的CANopen协议学习板程序 293

7.4 CANopen主站原理 306

7.4.1 CANopen主站的特点 306

7.4.2 CANopen主站特有的对象 307

7.4.3 CANopen主站的启动 312

7.4.4 CANopen主站的两种实现方式比较 315

附录A CAN总线故障诊断与解决 316

A.1 测试设备简介 316

A.2 测试前的准备工作 323

A.3 排查步骤1——排查位定时异常节点 325

A.4 排查步骤2——总线工作状态“体检” 326

A.5 排查步骤3——排查总线传输堵塞故障 329

A.6 排查步骤4——排查干扰导致的通信异常 332

A.7 排查步骤5——排查长距离或非规范线缆导致的异常 337

A.8 排查步骤6——排查总线延迟导致的通信异常 341

A.9 排查步骤7——通过带宽测量排查导线是否匹配 343

A.10 排查步骤8——利用软件眼图追踪故障节点 345

A.11 排查步骤9——评估总线阻抗、感抗、容抗对信号质量的影响 350

A.12 排查步骤10——排查环境影响因素 353

附录B CANopen协议中涉及的英文缩写 354

附录C DS301协议中的部分对象描述 356

附录D DS401协议中的部分对象描述 375

参考文献 380