CAN 总线实验
- 格式:doc
- 大小:386.00 KB
- 文档页数:6
西安邮电大学
CAN总线实验报告(一)
专业: 测控技术与仪器
班级: 测控1002
学号: 06102043
姓名: 刘宇
实验一 SJA1000初始化
一、实验要求:
正确完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED不亮。
二、实验内容:
1.实现SJA1000的初始化设置
2.理解SJA1000的相关寄存器的设置。
三、实验系统硬件设计:
图1是89C51与SJA1000连接图。MCU与SJA1000连接图。
选择适合的电阻和电容。此实验选择了51KR电阻与1UF电容,开机后给电容充电,电容电压由0V升至5V,SJA1000可靠复位。
I/O复位,由单片机某一I/O引脚控制SJA1000复位引脚,使单片机在可靠复位之后完成SJA1000的复位,避免时间偏差。
芯片复位,可以通过外围芯片进行复位。
四、实验系统软件设计
程序开始采用宏定义,初始化开始。设置模式寄存器进入复位模式;然后配置时钟分频寄存器(CDR)选择PeliCAN模式,关闭CLKOUT输出;然后是输出控制寄存器(OCR),再设置位定时(BTR0/BTR1)6MHz晶振,波特率30Kbps;然后配置验收滤波;最后再次设置模式寄存器推出复位状态并且设置单验收滤波,然后以状态寄存器自测模式退出复位模式。
图1系统软件设计框图 进入复位模式(MODE)设置时钟分频寄存器(CDR)设置位定时器(BIT0/BIT1)设置验收滤波(ACR/AMR)设置输出控制寄存器(OCR)状态寄存器是否为0CH初始化结束初始化开始YN
程序如下:
MODE EQU 0DE00H
CMR EQU 0DE01H ;命令寄存器
SR EQU 0DE02H ;状态寄存器
IR EQU 0DE03H ;中断寄存器
IER EQU 0DE04H ;中断使能寄存器
BTR0 EQU 0DE06H ;总线定时寄存器一
BTR1 EQU 0DE07H ;总线定时寄存器二
OCR EQU 0DE08H ;输出控制寄存器
ALC EQU 0DE0BH ;仲裁丢失捕捉寄存器
ECC EQU 0DE0CH ;错误代码捕捉寄存器
TXERR EQU 0DE0FH ;发送错误计数器
ACR0 EQU 0DE10H ;验收代码寄存器0
ACR1 EQU 0DE11H ; 1
ACR2 EQU 0DE12H ; 2
ACR3 EQU 0DE13H ; 3
AMR0 EQU 0DE14H ;验收屏蔽寄存器0
AMR1 EQU 0DE15H ; 1
AMR2 EQU 0DE16H ; 2
AMR3 EQU 0DE17H ; 3
FIN EQU 0DE10H ;发送/接收帧信息
ID1 EQU 0DE11H ;发送/接收缓冲区之标示符一
ID2 EQU 0DE12H ;发送/接收缓冲区之标示符二
DATA1 EQU 0DE13H ;发送/接收数据首址
RBSA EQU 0DE1EH ;接收缓冲器起始地址寄存器
CDR EQU 0DE1FH ;时钟分频寄存器
ORG 4000H
JMP START
ORG 4080H
;----------------------------------------------------------------
START:
MOV DPTR,#MODE ;复位模式
MOV A,#09H
MOVX @DPTR,A
MOV DPTR,#CDR
;时钟分频R,选择增强CAN模式,关闭CLKOUT输出
MOV A,#88H
MOVX @DPTR,A
MOV DPTR,#IER ;中断使能寄存器,开溢出、错误、接收中断
MOV A,#0DH
MOVX @DPTR,A
MOV DPTR,#AMR0
;验收屏蔽
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOV A,#0FH
MOVX @DPTR,A
INC DPTR
MOV A,#0FFH
MOVX @DPTR,A
INC DPTR
MOVX @DPTR,A
MOV DPTR,#ACR0 ;验收滤波 MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOV A,#20H
MOVX @DPTR,A
INC DPTR
MOV A,#00H
MOVX @DPTR,A
INC DPTR
MOV A,#00H
MOVX @DPTR,A
MOV DPTR,#BTR0 ;总线定时寄存器一
MOV A,#03H
MOVX @DPTR,A
MOV DPTR,#BTR1 ;总线定时寄存器二,6MHz晶振,波特率30Kbps
MOV A,#0FFH ;设置波特率
MOVX @DPTR,A
MOV DPTR,#OCR ;输出控制寄存器
MOV A,#0AAH
MOVX @DPTR,A
MOV DPTR,#RBSA ;接收缓冲器起始地址为0
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#TXERR ;清除发送错误计数器
MOV A,#0
MOVX @DPTR,A
MOV DPTR,#ECC ;清除错误代码捕捉寄存器
MOVX @DPTR,A
MOV DPTR,#MODE ;返回工作方式
MOV A,#0CH
MOVX @DPTR,A
CJNE A,#0CH,START
CLR P1.2
END 实验截图:
六.实验心得
本次实验是第一次现场总线实验,我们对于仪器的操作很不熟悉。在老师的仔细讲解,演示操作下,我对仪器的应用有了简单的认识。SJA1000初始化是后续实验的基础,所以必须对SJA1000模块以及模块的初始化有详细的认识,这样才能做到在以后的实验中熟练应用。在对SJA1000的初始化设置时计算了它的频率,完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED不亮。
在实验过程中也遇到了一些困难,关键是不会建立试验台和SJA1000的通信,不熟悉具体的操作顺序。刚开始可能因为我们没进行复位操作,无法建立通信,重启软件并复位后问题消除。编程时也遇到了几个格式错误,经过探讨改正后顺利编译,完成了本次实验。