ATK-MB025 模块用户手册
ATK-MB025 CAN模块是正点原子推出的一款高速TTL转CAN通信模块,支持CAN FD,最大通信速率可达5Mbps,设计紧凑美观。该模块可通过拨动开关灵活选择是否接入终端电阻,并配有指示灯,便于直观显示模块供电状态。
ATK-MB025 CAN模块的基本参数,如下表所示:

表1.1 ATK-MB025 CAN模块基本参数
ATK-MB025 CAN模块的TTL接口、CAN接口分别通过1*4排针(2.54mm间距)和1*3接线端子引出,方便用户连接到自己的设备中,模块的外观如下图所示:

图2.1.1 ATK-MB025 CAN模块实物图
ATK-MB025 CAN模块各引脚的描述,如下表所示:

表2.1.1 ATK-MB025 CAN模块引脚说明
ATK-MB025 CAN模块自带一个拨动开关(见图2.1.1右侧),该开关用于控制120Ω终端电阻的开启和关闭。当拨动开关打到ON档位,则开启终端电阻;当拨动开关打到OFF档位,则关闭终端电阻。
ATK-MB025 CAN模块的原理图,如下图所示:

图2.3.1 ATK-MB025 CAN模块原理图
上图中,J1为排针接口,VCC5为输入电源的正极,GND为输入电源负极。注意:输入的电源必须为直流5V,否则CAN模块不能正常工作。
CAN电平一般来说不能直接连接到MCU,否则可能会烧毁MCU,因此需要电平转换芯片。这里我们使用SIT1042来做CAN电平转换,其中R3为终端匹配电阻,当拨动开关打到ON档位(2和3连通),则接入终端电阻;当拨动开关打到OFF档位(1和2连通),则不接入终端电阻。PESD1CAN是双向TVS管,用以保护芯片。
CAN是Controller Area Network的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在当前的汽车产业中,出于对安全性、舒适性、方便性、低公害、低成本的要求,各种各样的电子控制系统被开发了出来。由于这些系统之间通信所用的数据类型及对可靠性的要求不尽相同,由多条总线构成的情况很多,线束的数量也随之增加。为适应“减少线束的数量”、“通过多个LAN,进行大量数据的高速通信”的需要,1986年德国电气商博世公司开发出面向汽车的CAN通信协议。此后,CAN通过ISO11898及ISO11519进行了标准化,现在在欧洲已是汽车网络的标准协议。
现在,CAN的高性能和可靠性已被认同,并被广泛地应用于工业自动化、船舶、医疗设备、工业设备等方面。现场总线是当今自动化领域技术发展的热点之一,被誉为自动化领域的计算机局域网。它的出现为分布式控制系统实现各节点之间实时、可靠的数据通信提供了强有力的技术支持。
CAN协议具有以下特点:
1.多主控制。在总线空闲时,所有单元都可以发送消息(多主控制),而两个以上的单元同时开始发送消息时,根据标识符(Identifier以下称为ID)决定优先级。ID并不是表示发送的目的地址,而是表示访问总线的消息的优先级。两个以上的单元同时开始发送消息时,对各消息ID的每个位进行逐个仲裁比较。仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工作。
2.系统的柔软性。与总线相连的单元没有类似于“地址”的信息。因此在总线上增加单元时,连接在总线上的其它单元的软硬件及应用层都不需要改变。
3.通信速度较快,通信距离远。最远可达10KM(速率低于5Kbps)。
4.具有错误检测、错误通知和错误恢复功能。所有单元都可以检测错误(错误检测功能),检测出错误的单元会立即同时通知其他所有单元(错误通知功能),正在发送消息的单元一旦检测出错误,会强制结束当前的发送。强制结束发送的单元会不断反复地重新发送此消息直到成功发送为止(错误恢复功能)。
5.故障封闭功能。CAN可以判断出错误的类型是总线上暂时的数据错误(如外部噪声等)还是持续的数据错误(如单元内部故障、驱动器故障、断线等)。由此功能,当总线上发生持续数据错误时,可将引起此故障的单元从总线上隔离出去。
6.连接节点多。CAN总线是可同时连接多个单元的总线。可连接的单元总数理论上是没有限制的。但实际上可连接的单元数受总线上的时间延迟及电气负载的限制。降低通信速度,可连接的单元数增加;提高通信速度,则可连接的单元数减少。
正是因为CAN协议的这些特点,使得CAN特别适合工业过程监控设备的互连,因此,越来越受到工业界的重视,并已公认为最有前途的现场总线之一。
CAN协议经过ISO标准化后有两个标准:ISO11898标准(高速CAN)和ISO11519-2标准(低速CAN)。其中ISO11898是针对通信速率为125Kbps~1Mbps的高速通信标准,而ISO11519-2是针对通信速率为125Kbps以下的低速通信标准。
下面我们以ISO11898标准,也就是高速CAN为例,介绍它的拓扑结构,其拓扑图如下图所示:

图2.4.1 高速CAN拓扑结构图
从上图可知,高速CAN总线呈现的是一个闭环结构,总线是由两根线CAN_High和CAN_Low组成,且在总线两端各串联了120Ω的电阻(用于阻抗匹配,减少回波反射),同时总线上可以挂载多个节点。每个节点都有CAN收发器以及CAN控制器,CAN控制器通常是MCU的外设,集成在芯片内部;CAN收发器则是需要外加芯片转换电路。
CAN通过差分信号传输数据,根据CAN总线上两根线的电位差来判断总线电平。总线电平分为显性电平和隐性电平,二者必居其一。这是属于物理层特征,ISO11898物理层特性如下图所示:

图2.4.2 ISO11898物理层特性
从该特性可以看出,显性电平对应逻辑0,CAN_H和CAN_L之差为2 V左右。而隐性电平对应逻辑1,CAN_H和CAN_L之差为0V。在总线上显性电平具有优先权,只要有一个单元输出显性电平,总线上即为显性电平。而隐形电平则具有包容的意味,只有所有的单元都输出隐性电平,总线上才为隐性电平(显性电平比隐性电平更强)。
CAN协议是通过以下5种类型的帧进行的:
l 数据帧
l 遥控帧
l 错误帧
l 过载帧
l 间隔帧
另外,数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符(ID),扩展格式有29个位的ID。各种帧的用途如下表所示:

表2.5.1 CAN协议各种帧及其用途
由于篇幅所限,我们这里仅对数据帧进行详细介绍,数据帧一般由7个段构成,即:
帧起始。表示数据帧开始的段。
仲裁段。表示该帧优先级的段。
控制段。表示数据的字节数及保留位的段。
数据段。数据的内容,一帧可发送0~8个字节的数据。
CRC段。检查帧的传输错误的段。
ACK段。表示确认正常接收的段。
帧结束。表示数据帧结束的段。
数据帧的构成如下图所示:

图2.5.1 数据帧的构成图中D表示显性电平,R表示隐形电平(下同)。
帧起始,这个比较简单,标准帧和扩展帧都是由1个位的显性电平表示帧起始。
仲裁段,表示数据优先级的段,标准帧和扩展帧格式在本段有所区别,如下图所示:

图2.5.2 数据帧仲裁段构成
标准格式的ID有11个位。禁止高7位都为隐性(禁止设定:ID=1111111XXXX)。扩展格式的ID有29个位。基本ID从ID28到ID18,扩展ID由ID17到ID0表示。基本ID和标准格式的ID相同。禁止高7位都为隐性(禁止设定:基本ID=1111111XXXX)。
其中RTR位用于标识是否是远程帧(0,数据帧;1,远程帧),IDE位为标识符选择位(0:使用标准标识符;1:使用扩展标识符),SRR位为代替远程请求位,为隐性位,它代替了标准帧中的RTR位。
控制段,由6个位构成,表示数据段的字节数。标准帧和扩展帧的控制段稍有不同,如下图所示:

图2.5.3 数据帧控制段构成
上图中,r0和r1为保留位,必须全部以显性电平发送,但是接收端可以接收显性、隐性及任意组合的电平。DLC段为数据长度表示段,高位在前,DLC段有效值为0~8,但是接收方接收到9~15的时候并不认为是错误。
数据段,该段可包含0~8个字节的数据。从最高位(MSB)开始输出,标准帧和扩展帧在这个段的定义都是一样的。如下图所示:

图2.5.4 数据帧数据段构成
CRC段,该段用于检查帧传输错误。由15个位的CRC顺序和1个位的CRC界定符(用于分隔的位)组成,标准帧和扩展帧在这个段的格式也是相同的。如下图所示:

图2.5.5 数据帧CRC段构成
此段CRC的值计算范围包括:帧起始、仲裁段、控制段、数据段。接收方以同样的算法计算CRC值并进行比较,不一致时会通报错误。
ACK段,此段用来确认是否正常接收。由ACK槽(ACKSlot)和ACK界定符2个位组成。标准帧和扩展帧在这个段的格式也是相同的。如下图所示:

图2.5.6 数据帧CRC段构成
发送单元的ACK,发送2个位的隐性位,而接收到正确消息的单元在ACK槽(ACKSlot)发送显性位,通知发送单元正常接收结束,这个过程叫发送ACK/返回ACK。发送ACK的是在既不处于总线关闭态也不处于休眠态的所有接收单元中,接收到正常消息的单元(发送单元不发送ACK)。所谓正常消息是指不含填充错误、格式错误、CRC错误的消息。
帧结束,这个段也比较简单,标准帧和扩展帧在这个段格式一样,由7个位的隐性位组成。至此,数据帧的7个段就介绍完了。接下来,我们再来看看CAN的位时序。
由发送单元在非同步的情况下发送的每秒钟的位数称为位速率。一个位可分为4段。
l 同步段(SS)
l 传播时间段(PTS)
l 相位缓冲段1(PBS1)
l 相位缓冲段2(PBS2)
这些段又由可称为Time Quantum(以下称为Tq)的最小时间单位构成。
1位分为4个段,每个段又由若干个Tq构成,这称为位时序。
1位由多少个Tq构成、每个段又由多少个Tq构成等,可以任意设定位时序。通过设定位时序,多个单元可同时采样,也可任意设定采样点。各段的作用和Tq数如下表所示:

表2.5.2 一个位各段及其作用
1个位的构成如下图所示:

图2.5.7 一个位的构成
上图的采样点,是指读取总线电平,并将读到的电平作为位值的点。位置在PBS1结束处。根据这个位时序,我们就可以计算CAN通信的波特率了。具体计算方法,我们等下再介绍,前面提到的CAN协议具有仲裁功能,下面我们来看看是如何实现的。
在总线空闲态,最 先开始发送消息的单元获得发送权。当多个单元同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。实现过程如下图所示:

图2.5.8 CAN总线仲裁过程
上图中,单元1和单元2同时开始向总线发送数据,开始部分他们的数据格式是一样的,故无法区分优先级,直到T时刻,单元1输出隐性电平,而单元2输出显性电平,此时单元1仲裁失利,立刻转入接收状态工作,不再与单元2竞争,而单元2则顺利获得总线使用权,继续发送自己的数据。这就实现了仲裁,让连续发送显性电平多的单元获得总线使用权。
由于篇幅有限,关于CAN FD以及更多CAN相关的内容,这里不作展开。
ATK-MB025 CAN模块的尺寸结构,如下图所示:

图3.1 ATK-MB025 CAN模块尺寸图
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/70040860/viewspace-3082423/ ,如需转载,请注明出处,否则将追究法律责任。