简析基于PIC32单片机的CAN总线通信

2016-03-18 06:06
移动信息 2016年8期
关键词:标识符寄存器报文

王 越 胡 宇



简析基于PIC32单片机的CAN总线通信

王 越1胡 宇2

1.沈阳金科精密仪器设备有限公司,辽宁 沈阳 110136 2.岚山嵌入系统(沈阳)有限公司,辽宁 沈阳 110000

CAN全称为“Controller Area Network”即控制器局域网,是国际上应用最广泛的现场总线之一。随着通信技术的快速发展,CAN总线通信得到广泛的应用。基于此,阐述了CAN总线数据库的设计,对基于PIC32单片机的CAN总线结构及其总线通信进行了简要分析。

CAN总线;数据库;结构;通信

PIC32单片机系列适用于各种嵌入式应用领域,包括:工业、通信、家电以及消费电子产品等等。以下就基于PIC32单片机的CAN总线通讯进行分析。

1 CAN总线数据库的设计

CAN总线数据库的设计主要包括:

(1)CAN节点。具体包括CAN总线网络中所有节点的名称以及通信ID。

(2)信号signal。信号signal代表一种类型的变量,一般用消息中的一位或者几位来表示。一般包含的主要信息有:startBit,即开始位;length即这个变量的长度是多少位的。除此之外还有最大值、最小值的设置等。

(3)消息Message。其实质就是在CAN总线上通信的数据帧,一个Message包含的主要信息有:ID,表明这个数据帧是从哪个节点发出的:DLC,也就是数据帧的长度,即多少个字节(Byte):信号signal,一条消息一般含有一个或多个信号。

2 基于PIC32单片机的CAN总线结构分析

PIC32控制器局域网模块实现了CAN规范2.0B,该规范主要用于工业和汽车。该异步串行数据通信协议能在电气噪声环境下提供可靠的通信。PIC32器件系列可以集成最多两个CAN模块。

2.1 CAN模块支持以下主要特性

第一,符合标准。

(1)完全符合CAN规范2.0B;(2)最高1 Mbps的可编程比特率。

第二,报文接收和发送。

(1)最多32个报文FIFO。

(2)每个FIFO最多可包含32个报文,总共最多可包含1 024个报文;

知识链组织若能有效地开发利用有价值的、稀缺的、难以模仿的知识资源,那么就可以获得相对于其他知识链的知识优势。然而,知识链组织之间是一种战略伙伴关系,依靠合同协议和相互信任维持合作,在运行过程中容易受到目标分歧、文化差异、利益不均等的干扰而产生冲突,因此需要运用正式的契约机制、非正式的自实施机制、第三方冲突管理机制、关系强度调节机制等多种手段,扫除知识链开发利用知识资源的组织障碍,促进知识链知识优势的形成。

(3)FIFO可以作为发送报文FIFO或接收报文FIFO;

(4)用户可为用于发送的报文FIFO定义优先级;

(5)最多32个用于报文过滤的接收过滤器;

(6)最多4个用于报文过滤的接收过滤器屏蔽器寄存器;

(7)自动响应远程发送请求(Remote Transmit Request,RTR);

(8)支持DeviceNetTM寻址。

第三,其他特性。

(1)环回、监听所有报文和监听模式,用于自检、系统诊断和总线监视。(2)低功耗工作模式。(3)CAN模块是PIC32系统总线上的总线主机。(4)操作不需要直接存储器访问(Direct Memory Access,DMA)通道。(5)专用的时间标记定时器。(6)仅数据报文接收模式。

2.2 PIC32CAN模块的大体结构框图(如图1所示)

注:不是所有特性在所有器件上均可用,而是需要参考具体器件数据册中的“控制器局域网(CAN)”以确定可用性。

图1PIC32CAN模块的大体结构框图

CAN模块由协议引擎、报文接收过滤器和报文组合缓冲区(Message Assembly Buffer,MAB)组成。协议引擎通过CAN总线(按照CAN规范2.0B)发送和接收报文。所接收的报文在接收报文组合缓冲区中组合。然后,接收到的报文通过报文接收过滤器进行过滤。发送报文组合缓冲区在协议引擎进行处理时存放待发送的报文。CAN报文缓冲区驻留在器件RAM中。CAN模块中没有CAN报文缓冲区。因此,所有报文都存储在器件RAM中。CAN模块是PIC32系统总线上的总线主机,它会根据需要向器件RAM读写数据。CAN模块执行操作时不使用DMA,它可以在无须DMA或CPU干预的情况下,从器件RAM中读取报文。

3 基于PIC32单片机的CAN总线通信分析

3.1 CAN报文格式

CAN总线协议使用异步通信。信息以数据帧的形式从发送器传递到接收器,数据帧由定义数据帧内容的字节字段组成。每一帧都以帧起始(Start of Frame,SOF)位域开始,以帧结束(End of Frame,EOF)位域结束。SOF位后面跟随仲裁和控制字段,它们表示报文类型、格式、长度和优先级。该信息使CAN总线上的每个节点都可以适当地响应报文。数据字段用于传送报文内容,其长度可变,范围为0至8字节。错误保护通过循环冗余校验(Cyclic Redundancy Check,CRC)和应答(Ac knowledgement,ACK)字段来实现。(1)CAN总线协议支持五种帧类型:第一,数据帧——包含发送器向接收器传送的数据;第二,远程帧——由总线上某个节点发送,用于请求从另一个节点发送具有相同标识符的数据帧;第三,错误帧——由任意节点在检测到错误时发送;第四,过载帧——在连续的数据帧或远程帧之间提供额外的延时;第五、帧间间隔一一在连续的帧之间提供间隔。(2)CAN 规范2.0B 还定义了两种额外的数据格式:第一,标准数据帧—用于使用11个标识符位的标准报文;第二,扩展数据帧—用于使用29个标识符位的扩展报文。(3)CAN总线规范有三种版本:第一,2.0A——将29位标识符视为错误;第二,2.0B Passive——忽略29位标识符报文;第三,2.0B Active——处理11位和29位标识符。

3.2 CAN寄存器

CAN模块寄存器可以按照它们的功能分为以下几组:第一,模块和CAN比特率配置寄存器;第二,中断和状态寄存器;第三,屏蔽器和过滤器配置寄存器;第四,FIFO控制寄存器。

3.3 CAN模块工作模式

用户应用程序可以选择以下几种CAN模块工作模式:(1)配置模式;(2)正常工作模式;(3)监听模式;(4)监听所有报文模式;(5)环回模式;(6)禁比模式。用户应用程序通过写入CAN控制寄存器中的请求工作模式位REQOP<2:0>(CiCON<26:24>)来请求所需的工作模式。CAN模块通过CAN控制寄存器中的工作模式位OPMOD<2:0>(CiCON<23:21>)确认进入所请求的模式。模式转换与CAN网络同步执行。通过允许CAN中断寄存器中的模式改变中断位MODIE(CiINT<19>),用户应用程序可以选择在所请求的模式改变发生时产生中断。在成功应用新模式之后,将会产生CAN中断。或者,用户也可以选择通过查询OPMOD<2:0>位(CiCON<23:21>)来确定CAN模块是否成功切换了模式[2]。

4 结语

基于PIC32单片机的CAN总线通信在自动化领域的应用非常广泛,其特点是结构简单、成本低,但速度高、实时性和可靠性好,因此对其进行分析具有重要意义。

[1]张子明,等.基于C8051F040单片机+BU61580架构的1555B总线通信接口模块的设计[J].测控技术,2013(12):157-159.

[2]李多,陈军.基于单片机串口实现1-Wire总线通信的方法[J].微型机与应用,2012(11):41-52.

Analysis of CAN Bus Communication Based on PIC32 MCU

Wang Yue1Hu Yu2

1.Shenyang Jinke precision instrument equipment Co., Ltd., Liaoning Shenyang 110136 2.Arashiyama embedded system(Shenyang)Co., Ltd., Shenyang Liaoning 110000

CAN full name “Controller Area Network”Controller area network, Is one of the most widely used field bus in the world. With the rapid development of communication technology, CAN bus communication has been widely used. Based on this, this paper describes the design of the CAN bus database, the CAN bus structure based on PIC32 MCU and its bus communication are analyzed briefly.

CAN bus; database; structure; communication

TP273.5

A

1009-6434(2016)08-0023-02

猜你喜欢
标识符寄存器报文
基于J1939 协议多包报文的时序研究及应用
基于底层虚拟机的标识符混淆方法
低轨星座短报文通信中的扩频信号二维快捕优化与实现
DOI标识符查找文献的方法
Lite寄存器模型的设计与实现
基于区块链的持久标识符系统①
DOI标识符查找文献的方法
浅析反驳类报文要点
二进制翻译中动静结合的寄存器分配优化方法
移位寄存器及算术运算应用