实验三:双节点通信
1、实验要求
can节点a(id:0x00)、b(id:0x01),要求a节点进行数据发送(标准数据帧),b节
流程图转换为ns图 点可以进行数据接收并显示接收到数据,同时反馈信息给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
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论