硬件学习入门--总线CAN

不小心混到个什么厉害的比赛,看起来得参加学习一波硬件知识了(暂时是没有硬件只能脑补GG)PS:这个标题其实起的不好,因为入门不知道从哪方面下手就乱起了


硬件学习入门–总线CAN

什么是CAN

控制器局域网(Controller Area Network,简称CAN或CANbus)是一种通信协议,其特点是允许网络上的设备直接互相通信,网络上不需要主机(Host)控制通信。个人理解上,也就是有种点对点传输协议的一种协议,而且是硬件之间的传输协议。(去中心化?)
这个协议被广泛的应用在各种车辆与电子设备上。CAN为一序列总线,它提供高安全档次及有效率的即时控制。更具备了调试和优先权判别的机制。即时的信息传输(Real-time data transmission)为CAN的特色之一。在即时的运算中,消息传递的优先级应以重要性来分,重要性较高的消息会比较不重要的消息传递的更频繁。

CAN的基本特性

  • 点对点数据传输,每个节点可以向其他节点(一对一、一对多或者组播)
  • 采用短帧结构,每一帧为8bit
  • 节点实际可达110个
  • 一般采用双绞线通信

汽车上的CAN

基于CAN的应用曾协议应用较通用的有两种,DeviceNet(工业底层自动化)和CANOpen(适用于机械控制的嵌入式应用)


(汽车电器网络结构)

汽车上使用两条CAN:

  • 一条用于驱动系统的高速CAN
  • 另一条用于车身系统的低俗CAN

Canbus上的控制器中发送信息的线路通过一个开路集电极和总线相连。

收发器使用一个电路进行控制,即控制单元在某一时间段内只能进行发送或接收

Can上的每个节点都是一个入口,允许一个标准的计算机在标准CAN网络中通过usb交互,或者是使用一个以太网端口交互。
所有的节点都会使用两个总线(wire bus)。在总线的两段一般都会放两个120Ω的电阻。

然后我们可以看一下帧数据包解析方式:

首先可以看到第一位为0,表示帧的开始
然后是11bit的arbID,这里表示的是当前的帧的描述,描述当前帧的基本状态,被指用于是什么消息,由谁发送。
接下来的DLC是4 bits,表示消息中的数据长度(但是其实现在一般长度都为8)。
之后的数据是8 bits,就是当前传输消息的实际信息。这8 bits的数据可能是发动机转速,油量,或者开门等信息量所转换来的数据量.不管任何信号和消息都会通过总线进行传输,但是所有的ECUs必须事先约定好信息和信号的格式.

为了能够更好的处理数据, 这里引入了CAN DATABASE,也就是总线数据库,包含了所有的信息和信号的定义.

参考文章:
https://wenku.baidu.com/view/6c32085331126edb6f1a109e.html