学STM32硬件-CAN总线
---
6/23/2017 AM
# 一、内容概要
1. 关于JTAG接口介绍
2. 关于工控接口进行介绍
# 二、内容详述
## 1、定义
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,并最终成为国际标准(ISO 11898),是国际上应用最广泛的现场总线之一。
该总线常用于汽车计算机控制系统和嵌入式工业控制局域网的标准总线。
**特点**
CAN总线是一种串行数据通信协议,其通信接口中集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,包括位填充、数据块编码、循坏冗余检验、优先级判别等项工作。
CAN总线特点如下:
1. 可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从、通信方式灵活。
2. 网络上的节点(信息)可分成不同的优先级,可以满足不同的实时要求。
3. 采用非破坏性位仲裁总线结构机制,当两个节点同时2向网络上传送信息时,优先级低的节点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据。
4. 可以点对点、一点对多点(成组)及全局广播几种传送方式接收数据。
5. 直接通信距离最远可达10km(速率5Kbps以下)
6. 通信速率最高可达1MB/S(此时距离最长40m)
7. 节点数实际可达110个
8. 采用短帧结构,每一帧的有效字节数为8个。
9. 每帧信息都有CRC校验及其他检错措施,数据出错率极低。
10. 通信介质可采用双绞线,同轴电缆和光导纤维,一般采用廉价的双绞线即可,无特殊要求。
11. 节点在错误严重的情况下,具有自动关闭总线的功能,切断它与总线的联系,以使总线上的其他操作不受影响。
## 2、标准
1986 年德国电气商博世公司开发出面向汽车的CAN 通信协议。
CAN 通过ISO11898 及ISO11519 进行了标准化。
## 3、相关知识-现场总线
工业控制系统的发展主要表现为:控制面向多元化,系统面向分散化,即负载分散、功能分散、危险分散和地域分散。控制系统的结构从最初的CCS(计算机集中控制系统),到第二代的DCS(分散控制系统),发展到现在流行的FCS(现场总线控制系统)。
通常我们考虑将控制系统网络化,主要将网络化与现场总线联系在一起。在控制领域较有影响的现场总线系统有:FF、LonWorks、Profibus、CAN、HART,以及RS485的总线网络等。
现场总线基金会己经制定的统一标准((FF),其慢速总线标准Hl已得到通过成为国际标准,其高速总线标准H2还在制订中。但是由于商业利润、技术垄断等原因,现场总线产品仍然是百花齐放的局面,这对降低系统成本,扩大应用范围产生不利影响。
从趋势来看,工业以太网进入现场控制级毋庸置疑。但至少现在看来,它还难以完全取代现场总线,作为实时控制通信的单一标准。已有的现场总线仍将继续存在,最有可能的是发展一种混合式控制系统。
## 4、CAN在汽车领域的应用
### 1、基本作用
汽车领域是CAN总线,主要的应用场合。

[图 CAN-车]
从上图中,可以看到采用了CAN总线后,使得线路连接得到的大规模的精简。
在目前的汽车上采用的网络连接方式主要采用2条CAN:
一条用于驱动系统的高速CAN,速率达到500kb/s。主要面向实时性要求较高的控制单元,如发动机、电动机等。
另一条用于车身系统的低速CAN,速率是100kb/s。主要是针对车身控制的,如车灯、车门、车窗等信号的采集以及反馈。其特征时信号多但实时性要求低,实现成本要求低。
但是如Audi A4 2001款中,则采用了三条数据总线。
CAN-驱动:500 kBaund
CAN-舒适:100 kBaund
CAN-信息娱乐:100 kBaund
其具体的作用见下图:

[图CAN-车-3线]
汽车领域中CAN导线的特点:
各个CAN系统的所有控制单元都并联在CAN数据总线上。CAN数据总线的两条导线分别叫CAN-High和CAN-Low线。两条扭铰在一起的导线称为双绞线。
具体的颜色可以见下图:

[CAN-车-3]
### 2、现在应用
在如今最新版本的CAN总线系统中,将系统分为了5个不同的区域,分别为驱动系统、舒适系统、信息系统、多功能仪表、诊断总线等5个局域网。其速率分别为(Kbit/s):
驱动系统(由15号线激活):500
舒适系统(由30号线激活):100
信息系统(由30号线激活):100
诊断系统(由30号线激活):500
仪表系统(由15号线激活):100
Lin: 20
最大承载:1000

[图 CAN-车-5]
## 4、原理简介
对于这一块的实际传输方面,也涉及到一些通信的位校验这类的,就不扯咯。待以后学到实际编写软件的时候,在那边再进行一下说明吧。
## 5、实际搭建
### 1、芯片方案
当前主要的CAN总线器件产品
制造商 产品型号 器件功能及特点
INTEL 82526 CAN通信控制器,符合CAN2.0A
82527 CAN通信控制器,符合CAN2.0B
8XC196CA/CB 扩展的8XC196+CAN通信控制器,符合CAN2.0B
PHILIPS 82C200 CAN通信控制器,符合CAN2.0A
(现NXP) 8XC592 8XC552+CAN通信控制器,去掉了I2C,符合CAN2.0A
8XCE598 提高了电磁兼容性的8XC592
82C150 带数字及模拟I/O的CAN总线扩展器件,符合CAN2.0A
82C250 高性能CAN总线收发器
P51XA-C3 16位微控制器+CAN通信控制器,符合CAN2.0B
MOTOROLA 68HC05X4系列 68HC05微控制器+CAN通信控制器,符合CAN2.0A
SINENS 81C90/91 CAN通信控制器,符合CAN2.0A
C167C 微控制器+CAN通信控制器,符合CAN2.0A/B
BEC 72005 CAN通信控制器,符合CAN2.0A/B
SILIONI SI9200 CAN总线收发器
对于CAN总线的芯片,大部分都能完成CAN规范所规定的物理层和数据链路层大部分功能。具有微处理器接口,容易连接单片机。
而芯片的接口可以分为两种类型,独立IC或与单片机集成在一起。属于前者的代表为82C200(SJA1000),属于后者的代表有PHILIPS的87C591、LPC2119、西门子的C167C,INTEL的80C196CA等。并且这类芯片都遵循CAN2.9的规范。
### 2、系统搭建
CAN收发器:安装在控制器内部,同时兼具接受和发送的功能,将控制器传来的数据化为电信号并将其送入数据传输线。
数据传输终端:是一个电阻,防止数据在线端被反射,以回声的形式返回,影响数据的传输。
数据传输线:双向数据线,由高低双绞线组成。

[图 CAN-车-终端]
## 6、评价
CAN属于现场总线的范畴,它是一种有效支持分布式控制或实时控制的串行通信网络。较之许多RS-485基于R线构建的分布式控制系统而言,基于CAN总线的分布式控制系统在以下方面具有明显的优越性:
1. 网络各节点之间的数据通信实时性强
2. 开发周期短
3. 已形成国际标准的现场总线
4. 最有前途的现场总线之一
## 7、开发板中方案
### 1、所用芯片
在这次我要学的开发板的方案中,所采用的芯片为: TJA-1050

[图 CAN]
我后来去网上百度了个这个芯片,厂家应该是NXP的,只是这些通信的终端电阻选用,跟官方的方案说明有所出入。下面就贴个NXP的应用电路图

[图 NXP-TJA1050-应用图]
然后嘛,对了根据权威性,就以自己不咋滴的英语,来理解理解这NXP的官方文档对于这个内容的解析。
### 2、TJA1050说明

[图 TJA1050-Pin]
上图是对于1050的各个引脚的定义和说明。可以发现,该芯片在将输入的TX和RX信号转换为CAN总线的CANL和CANH信号之外,还有一个使能端引脚S引脚的功能。可以控制数据发送和不放松。
而从图[NXP-TJA1050-应用图]中,看到,在官方文件中的终端电阻网络采用了,4个电阻2个电容的模式,等效电阻的数值为60欧姆,而在开发板那一块是选用了120欧姆的终端电阻,这一个到底效果如何,先留着吧,到时候再调整调整。
## 8、参考
[1] 百度百科-工业控制系统(http://baike.baidu.com/item/%E5%B7%A5%E4%B8%9A%E6%8E%A7%E5%88%B6%E7%B3%BB%E7%BB%9F)
[2] 百度百科-CAN总线(http://baike.baidu.com/link?url=kfWAbpcLOixHQh9I-V_3dZvBEveDypEZu5u0RKFgp8RScX2yzcwugNIX8Lv9eyk49gI4Hd5KR1G4y4xlK8NPR6e2VKqEqkjVNB6RalHde3q)
[3] 百度文库-CAN总线详细教程,精细编制,不可错过(https://wenku.baidu.com/view/0e18235a3b3567ec102d8a5c.html)
[4] NXP-TJA1050的数据手册(http://cache.nxp.com/documents/data_sheet/TJA1050.pdf)
# 三、总结
在整理这个关于CAN总线的内容上面,发现这个内容跟汽车是紧密结合在一起的。于是便杂七杂八地把这个汽车领域的一些相关内容都给整进来了。而在整理这个IC芯片上,可以看到芯片方案还是挺多的,当然现在在很多的芯片里,主流的还是将CAN结合到控制芯片里面了。