CAN总线实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验三:双节点通信
1、实验要求
CAN节点A(ID:0x00)、B(ID:0x01),要求A节点进行数据发送(标准数据帧),B节点可以进行数据接收并显示接收到数据,同时反馈信息给A节点。
2、实验目的
(1)熟悉双CAN通信原理;
(2)掌握双节点通信的设计。
3、所需设备
(1)CPU挂箱2
(2)接口挂箱2
(3)CPU模块(80C31)2
(4)CAN总线模块2块
4、实验内容
两个实验台运行程序CAN.ASM,发送实验台全速运行程序,接收实验台要在程序中设置断点,查看30H~37H中的数与程序中发送的数据是否一致。
5、实验原理
两个CAN节点通信,验收滤波设置正确后,可实现双节点通信。硬件原理图与图2.4类似,只不过将1个节点改为2个节点。图略。
附图2.4见下
(2)模块跳线接LCS0(CAN基址为0xDE00);
(3)模块上的A接CANL,B接CANH;
(4)在各自试验台上,将CPU挂箱右侧的“DATA PORT”和“ADDRESS PORT”
分别用5P、14P、20P连线与接口挂箱的相应插座连接.
(5)将两个CAN节点的CANL、CANH直连。
2、运行程序CAN.ASM,在初始化结束、发送接收结束处各设置断点,查看两个模块的30H~37H中的数据是否一致。
7、实验结果
两个模块的30H~37H中的数据一致。
8、1)程序流程图
2)实验程序:
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 R1,#8
MOV R0,#27H
FILL: MOV B,#10H
MOV A,R1
MUL AB
MOV @R0,A
DEC R0
DJNZ R1,FILL
MOV R0,#0AAH
LCALL INITCAN ;CAN初始化(CAN片选为CS0:0DE00H) ;-------------------------发送------------------
RETRAN: MOV DPH, #0DEH
MOV R0, #20H
LCALL SEND ;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意)
LCALL DELAY
;-----------------------接收数据--------------------------
MOV DPH, #0DEH
MOV R0, #30H
LCALL RECV
NOP ;在此处设置断点,以观察结果
JMP $
INITCAN:
MOV DPTR,#MODE ;初始化子程序,DPH、R0为入口参数MOV A,#01H
MOVX @DPTR,A ;模式寄存器,单验收滤波器,进入复位模式
MOV DPTR,#CDR
MOV A,#88H
MOVX @DPTR, A ;时钟分频R,选择增强CAN模式,关闭CLKOUT输出
MOV DPTR,#IER
MOV A,#0DH
MOVX @DPTR,A ;中断使能寄存器,开溢出、错误、接收中断
MOV DPTR,#BTR0
MOV A,#03H
MOVX @DPTR,A ;总线定时寄存器一
MOV DPTR,#BTR1
MOV A,#0FFH
MOVX @DPTR,A ;总线定时寄存器二,6MHz晶振,波特率30Kbps MOVX A, @DPTR
MOV DPTR,#OCR
MOV A,#0AAH
MOVX @DPTR,A ;输出控制寄存器
MOV DPTR,#ACR0
MOV A, 00H
MOVX @DPTR,A ;验收代码ACR0
MOV DPTR,#ACR1
MOV A,#2FH
MOVX @DPTR,A ;无关
MOV A,#0FFH
INC DPTR
MOVX @DPTR,A ;无关
INC DPTR
MOVX @DPTR,A ;无关
MOV DPTR,#AMR0
MOV A,#0FFH ;modify #00 to #0FF
MOVX @DPTR,A ;验收屏蔽寄存器AMR0=00H
INC DPTR
MOV A,#0FFH
MOVX @DPTR,A ;AMR1
INC DPTR
MOVX @DPTR,A ;AMR2
INC DPTR
MOVX @DPTR,A ;AMR3验收屏蔽:只有ACR0是相关项MOV DPTR, #RBSA
MOV A, #00H
MOVX @DPTR, A ;接收缓冲器FIFO起始地址为0
MOV DPTR, #TXERR
MOVX @DPTR, A ;清除发送错误计数器
MOV DPTR, #ECC
MOVX @DPTR, A ;清除错误代码捕捉寄存器
MOV DPTR,#MODE
MOV A,#08H
MOVX @DPTR,A ;单滤波方式,返回工作方式
RET
SEND: