CAN总线技术实验教学研究

2013-10-12 03:28钱新恩
电气电子教学学报 2013年6期
关键词:标识符寄存器总线

钱新恩

(紫琅职业技术学院,江苏南通226002)

0 引言

汽车总线为汽车内部各种复杂的电子设备、控制器和测量仪器等提供了统一数据交换渠道。控制局域网CAN-BUS是一重要的车载网络,CAN总线标准及应用是现代汽车维修人员必学的关键技术。

我们在“汽车车载网络技术”课程的教学过程中感到,由于学生缺少感性认识,不易理解CAN总线的特点和优点,觉得CAN总线标准抽象无味,学习兴趣不高。学生如果采用边学习边实践,先易后难,循序渐进;教师理论联系实际,学生就能够从实践中获得兴趣和理解。

SJA1000独立CAN控制器可灵活组成低成本的小型CAN总线节点,SJA1000与80C51系列微处理器组成的系统是一常用CAN总线节点形式。编写SJA1000与80C51系列微处理器的接口程序是学习和掌握CAN总线技术的一条有效途径,采用汇编语言程序编程可直接感受CAN总线标准的实现。SJA1000的PeliCAN模式能充分发挥CAN的先进特性。开始学习CAN总线时,要突出主要性能方面。为了使总线系统尽快工作起来,应主要关注系统复位、标示码设置和波特率设置等方面内容。本文以SJA1000的PeliCAN接口编程为主线,介绍CAN总线的实验系统。

1 实验硬件资源

实验系统包括:微处理器(STC89C52);CAN总线通讯模块[1](采用SJA1000+82C250构成CAN控制器和驱动器)和四位七段码显示器。系统框图见图1所示。单片机STC89C52是以访问外部存储器的方式访问SJA1000。单片机的P2.0与SJA1000片选管脚连接,在本系统的地址为#0FE00H。SJA1000复位管脚连接到单片机的P2.3。四位LED显示器,段选地址为#80H,位选地址为#0A0H;前两位显示自发信息,后两位显示接收的信息,采用中断方式发送和接收[2]。

图1 实验系统框图

2 SJA1000初始化

SJA1000寄存器的设置是编写程序的第一步。CAN总线协议具体体现在SJA1000寄存器设置上,在认真阅读SJA1000在PeliCAN模式下各寄存器的定义的基础上,逐步进行[3]。为了便于描述,在介绍SJA1000寄存器设置时,用的是CAN内部地址。实际编程用的是外部地址(实验系统地址),外内部地址的关系为:外部地址=FE00H+内部地址。

1)复位

首先进行模式设置,SJA1000内部寄存器地址0,主设置:

MOD.3(AFM)=0;验收(两个)滤波器模式;

MOD.2(STM)=0;自检测模式,正常模式;

MOD.0(RM)=1;复位测模式,复位。

在复位程序后应加入延时程序,因为系统整体复位的到位是需要时间的,学生常会忽略这点。

2)识别码编程

SJA1000内部寄存器在工作模式与复位模式下的定义和作用不同,对于学生来说较难理解,易于造成混乱。在识别码和验收码方面尤为突出,这是因为有些地址是复用的。

复位模式下:验收代码寄存码地址:FE10HFE13H;验收屏蔽寄存器地址:FE14H-FE17H。

工作模式下(发送节点):识别码寄存器地址:FE11H-FE14H;数据传送寄存器地址:FE15HFE1CH。

CAN节点通过标识符来识别自己想要的CAN帧,接收滤波寄存器设置了标识符每位的值。接收屏蔽寄存器一般有相同的数量匹配接收滤波寄存器,规定接收滤波寄存器标识符每一位的值是否需要进行匹配。

节点从总线上接收CAN帧,依次将收到的CAN帧标识符与4对接收滤波和屏蔽寄存器进行匹配,符合某对接收滤波和屏蔽寄存器要求了,就停止匹配,将数据接收到对应的缓冲区中。

某节点只接收报文标示码为:10101010XXX

设置验收代码寄存器(ACR):10101010

设置验收屏蔽寄存器(AMR):00000000

该对组合会拒绝接收10101010xxx之外所有的标识符对应的CAN帧。因为屏蔽器规定前8位(为0)标识符位要严格匹配,其他位的滤波器值和收到的CAN标识符值是否一致都可以。

3)波特率预设值

波特率预设值时钟频率为16MHz,总线的频率为125kHz(总线位时间的倒数)。

总线位时间(TBIT)=时间段1(TTSEG1)+时间段2(TTSEG2)+位同步时间段(TSYNCSEG)。具体设置如下所述。

(1)总线定时器0(CAN地址6)的定义

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 SJW.1 SJW.0 BRP.5 BRP.4 BRP.3 BRP.2 BRP.1 BRP.0

最小时间段为TSCL=2TCLK(32BRP.5+16BRP.4+8BRP.3+4BRP.2+2BRP.1+BRP.0+1)

同步跳转宽度TSJW=TSCL(2SJW.1+SJW.0+1)

参数设置为03H,结果为

(2/16M)×(2+1+1)=0.5×10-6(s),其结果相当于2 MHz。

(2)总线定时器1(CAN地址7)的定义

BIT7 BIT6 BIT5 BIT4 BIT3 BIT2 BIT1 BIT0 SAM TSEG2.2 TSEG2.1 TSEG2.0 TSEG1.3 TSEG1.2 TSEG1.1 TSEG1.0

参数设置为1CH,结果为

这个结果相当于125kHz。

4)其他

对于输出控制命令寄存器(OCR)、状态寄存器(SR)、中断寄存器(IR)和中断使能寄存器(IER)依照定义进行类似设置。

3 数据传送实验编程

由于单片机是以访问外部存储器的方式访问SJA1000的,数据在CAN线上传送,结果表现在将数据写入SJA1000或是从SJA1000读出数据。为使实验步骤先易后难,先让学生进行自发自收编程,再进行两点互发编程,最后是多点互连实验。

1)自发自收编程和两点互发编程

自发自收实验是为了排除连线问题,将精力集中在SJA1000的参数设置方面。自发自收编程,只需将MOD.2(STM)置1,即进入自检测模式。

若自发自收成功了,可以说明系统基本上可以运行了。两点互发实验,将MOD.2(STM)置零进入正常模式,可将验收屏蔽寄存器地址FE14HFE17H全置1。

2)多点互连实验

暂以四个节点为例,四个节点分别为1号、2号、3号和4号,连接方式如图2所示。规定前8位标识符位要严格匹配,其他为任意。四个节点的验收屏蔽寄存器(AMR)前8位都设置为0,其余24为设置为1。

图2 四个节点连接框图

四个节点设置验收代码寄存器(ACR)如下:

1号2号3号4号00000001 00000010 00000011 00000100

发送信息时,在工作模式下,将验收代码寄存器设置为需要接受信息节点的标识码。

4 结语

本文通过对SJA1000与80C51系列微处理器组成CAN节点的实验,加深了学生对CAN总线的了解。在“汽车车载网络技术”课程的学习中,汽车电子技术专业和汽车检测与维修专业的学生,通过互连的CAN节点实验,较好地理解了报文标识符的含义,从而较快地设计出不同的节点同时接收到相同数据的实现程序,与此同时对自检模式、差分输出和波特率的设置等有了较深理解。由此增强了学生学习的兴趣,为今后进一步学习和应用汽车总线技术打下了良好的基础。

[1] CEPARK+CAN总线开发板V3.0原理图www.bbs.cepark.com[eb/ol] ∥2012.9.22

[2] 陈蕾,邓晶,仲光荣.单片机原理与接口技术[M] .北京:机械工业出版社,2012.129-145

[3] 李勇,李鹏伟,苟丹丹.汽车单片机与车载网络技术[M] .北京:电子工业出版社,2012.207-224

猜你喜欢
标识符寄存器总线
基于底层虚拟机的标识符混淆方法
STM32和51单片机寄存器映射原理异同分析
Lite寄存器模型的设计与实现
基于区块链的持久标识符系统①
基于PCI Express总线的xHC与FPGA的直接通信
机载飞控1553B总线转以太网总线设计
科研人员唯一标识符的理论研究现状剖析
CAN总线并发通信时下位机应用软件设计
多通道ARINC429总线检查仪
数字图书馆推广工程唯一标识符体系构建研究*