您好,欢迎来到华拓科技网。
搜索
您的当前位置:首页现场总线实验报告怎么写有法律效力

现场总线实验报告怎么写有法律效力

来源:华拓科技网

现场总线

实验一SJA1000初始化

一、实验要求:

正确完成对SJA1000初始化,初始化成功后用LED点亮,表示初始化完成;否则LED不亮。

二、实验内容:

1.实现SJA1000的初始化设置

2.理解SJA1000的相关寄存器的设置。

三、实验系统硬件设计:

图1是C51与SJA1000连接图。MCU与SJA1000连接图。

选择适合的电阻和电容。此实验选择了51KR电阻与1UF电容,开机后给电容充电,电容电压由0V升至5V,SJA1000可靠复位。

I/O复位,由单片机某一I/O引脚控制SJA1000复位引脚,使单片机在可靠复位之后完成SJA1000的复位,避免时间偏差。

芯片复位,可以通过外围芯片进行复位。

四、实验系统软件设计

程序开始采用宏定义,初始化开始。设置模式寄存器进入复位模式;然后配置时钟分频寄存器(CDR)选择PeliCAN模式,关闭CLKOUT输出;然后是输出控制寄存器(OCR),再设置位定时(BTR0/BTR1)6MHz晶振,波特率30Kbps;然后配置验收滤波;最后再次设置模式寄存器推出复位状态并且设置单验收滤波,然后判断状态寄存器是否位O_OC以确认初始化是否成功,如果成功则点亮LED,否则重新初始化。

图1系统软件设计框图

程序如下:

MODEEQU0DE00HCMREQU0DE01HSREQU0DE02HIREQU0DE03HIEREQU0DE04HBTR0EQU0DE06HBTR1EQU0DE07HOCREQU0DE08HALCEQU0DE0BHECCEQU0DE0CHT_ERREQU0DE0FHACR0EQU0DE10HACR1EQU0DE11HACR2EQU0DE12HACR3EQU0DE13HAMR0EQU0DE14HAMR1EQU0DE15HAMR2EQU0DE16HAMR3EQU0DE17HFINEQU0DE10HID1EQU0DE11HID2EQU0DE12HDATA1EQU0DE13HRBSAEQU0DE1EH

;命令寄存器;状态寄存器;中断寄存器;中断使能寄存器;总线定时寄存器一;总线定时寄存器二;输出控制寄存器;仲裁丢失捕捉寄存器;错误代码捕捉寄存器;发送错误计数器;验收代码寄存器0;1;2;3;验收屏蔽寄存器0;1;2;3;发送/接收帧信息;发送/接收缓冲区之标示符一;发送/接收缓冲区之标示符二;发送/接收数据首址;接收缓冲器起始地址寄存器

CDREQU0DE1FH;时钟分频寄存器ORG4000H

JMPSTART

ORG4080H

;----------------------------------------------------------------

START:

MOVDPTR,MODE

MOVA,01H

MOV_@DPTR,A

MOVDPTR,IER

MOVA,0DH

MOV_@DPTR,A

MOVDPTR,ACR0

MOVA,00H

MOV_@DPTR,A

MOVDPTR,ACR1

MOVA,10H

MOV_@DPTR,A

MOVDPTR,ACR2

MOVA,00H

MOV_@DPTR,A

MOVDPTR,ACR3

MOVA,00H

MOV_@DPTR,A

MOVDPTR,AMR0

MOVA,00H

MOV_@DPTR,A

MOVDPTR,AMR1

MOVA,0FH

MOV_@DPTR,A

MOVDPTR,AMR2

MOVA,0FFH

MOV_@DPTR,A

MOVDPTR,AMR3

MOVA,0FFH

MOV_@DPTR,A

MOVDPTR,BTR0

MOVA,6DH

MOV_@DPTR,A

MOVDPTR,BTR1

MOVA,2AH

MOV_@DPTR,A

MOVDPTR,OCR

MOVA,01CH

MOV_@DPTR,AMOVDPTR,T_ERRMOVA,00HMOV_@DPTR,AMOVDPTR,MODEMOVA,00HMOV_@DPTR,AMOVDPTR,SRMOV_A,@DPTRCJNEA,0CH,STARTCLRP1.2END

五.频率计算:

晶振6MHz,

由实验运行截图可得BTR0=6DH,BTR1=2AH=246=246/6=46/3us设同步段为1个系统时钟周期,

1=(8+2_1+1)=11

=++=14=4/3us

f=1/=46.6kbps

现场总线

实验二SJA1000局部自检测

一.实验要求

进行单节点自测实验,要求CAN节点自发自收标准数据帧,观察所收数据与发送数据是否一致。

二.实验目的

1.实现CAN节点的初始化及CAN节点的自发收。

2.学会对CAN节点的基本操作,理解CAN通信的基本流程。

三.实验器材

计算机一台、CAN模块一个

四.实验内容

1.流程图

2..实验步骤

(1)将CPU挂箱右侧的“DATAPORT”和“ADDRESSPORT”分别用5P、14P、20P连线与接口挂箱的相应插座连接.

(2)将模块1上CS0用跳线帽短接,模块2上CS1用跳线帽短接.

(3)将模块上的JUMP-4的两个跳线短接在Single侧.

(4)有且只能有一块模块上的A短接到CANL,B短接到CANH.

(5)将模块插入接口挂箱插槽内.

(6)接通电源,运行本测试程序.

五.实验结果

1.实验截图

XXX自检测源程序

MODEEQU0DE00H;模式寄存器CMREQU0DE01H;命令寄存器SREQU0DE02H;状态寄存器IREQU0DE03H;中断寄存器

IEREQU0DE04H;中断使能寄存器BTR0EQU0DE06H;总线定时寄存器一BTR1EQU0DE07H;总线定时寄存器二OCREQU0DE08H;输出控制寄存器

ALCEQU0DE0BH;仲裁丢失捕捉寄存器

ECCEQU0DE0CH;错误代码捕捉寄存器

T_ERREQU0DE0FH;发送错误计数器

ACR0EQU0DE10H;验收代码寄存器0

ACR1EQU0DE11H;1

ACR2EQU0DE12H;2

ACR3EQU0DE13H;3

AMR0EQU0DE14H;验收屏蔽寄存器0

AMR1EQU0DE15H;1

AMR2EQU0DE16H;2

AMR3EQU0DE17H;3

FINEQU0DE10H;发送/接收帧信息

ID1EQU0DE11H;发送/接收缓冲区之标示符一

ID2EQU0DE12H;发送/接收缓冲区之标示符二

DATA1EQU0DE13H;发送/接收数据首址

RBSAEQU0DE1EH;接收缓冲器起始地址寄存器

CDREQU0DE1FH;时钟分频寄存器

ORG4000H

JMPSTART

ORG4080H

;----------------------------------------------------------------START:MOVR1,8

MOVR0,27H

FILL:MOVB,11H

MOVA,R1

MULAB

MOV@R0,A

DECR0

DJNZR1,FILL

MOVR0,0AAH

LCALLINITCAN;CAN初始化(CAN片选为CS0:0DE00H);-------------------------CAN1发送桢数据------------------

RETRAN:MOVDPH,0DEH

MOVR0,20H

LCALLSEND;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意)

LCALLDELAY

;-----------------------CAN1接收数据--------------------------MOVDPH,0DEH

MOVR0,30H

LCALLRECV

NOP;在此处设置断点,以观察结果JMP$

INITCAN:

MOVDPTR,MODE;初始化子程序,DPH、R0为入口参数MOVA,09H

MOV_@DPTR,A;模式寄存器,单验收滤波器,进入复位模式MOVDPTR,CDR

MOVA,88H

MOV_@DPTR,A;时钟分频R,选择增强CAN模式,关闭CLKOUT输出MOVDPTR,IER

MOVA,0DH

MOV_@DPTR,A;

MOVDPTR,BTR0

MOVA,03H

MOV_@DPTR,A;

MOVDPTR,BTR1

MOVA,0FFH

MOV_@DPTR,A;

MOV_A,@DPTR

MOVDPTR,OCR

MOVA,0AAH

MOV_@DPTR,A;

MOVDPTR,ACR0

MOVA,R0

MOV_@DPTR,A;

MOVDPTR,ACR1

MOVA,0FFH

MOV_@DPTR,A;

INCDPTR

MOV_@DPTR,A;

INCDPTR

MOV_@DPTR,A;

MOVDPTR,AMR0

MOVA,0FFH;modify00to0FFMOV_@DPTR,A;

INCDPTR

MOVA,0FFH

MOV_@DPTR,A;AMR1

INCDPTR

MOV_@DPTR,A;AMR2

INCDPTR

MOV_@DPTR,A;AMR3

MOVDPTR,RBSA

MOVA,00H

MOV_@DPTR,A;

MOVDPTR,T_ERR中断使能寄存器,开溢出、错误、接收中断总线定时寄存器一总线定时寄存器二,6MHz晶振,波特率30Kbps输出控制寄存器验收代码ACR0无关无关无关验收屏蔽寄存器AMR0=00H验收屏蔽:只有ACR0是相关项接收缓冲器FIFO起始地址为0

MOV_@DPTR,A;清除发送错误计数器

MOVDPTR,ECC

MOV_@DPTR,A;清除错误代码捕捉寄存器

MOVDPTR,MODE

MOVA,0cH

MOV_@DPTR,A;单滤波方式,返回工作方式

SEND:MOVDPTR,SR;状态寄存器

MOV_A,@DPTR;从SJA1000读入状态寄存器值

JBACC.4,SEND;判断是否正在接收正在接收则等待

SEND0:

MOV_A,@DPTR

JNBACC.3,SEND0;判断上次发送是否完成未完成则等待发送完成

SEND1:

MOV_A,@DPTR

JNBACC.2,SEND1;判断发送缓冲区是否锁定锁定则等待SEND2:

MOVDPTR,FIN;SJA1000发送缓存区首址

MOVA,08H

MOV_@DPTR,A

INCDPL

MOVA,0BBH

MOV_@DPTR,A

INCDPL

MOVA,0FFH

MOV_@DPTR,A

INCDPL

MOVR2,08H

SEND3:

MOVA,@R0;R0为发送数据首址

MOV_@DPTR,A

INCR0

INCDPL

DJNZR2,SEND3

MOVDPTR,CMR;命令寄存器地址

MOVA,10H;发送请求

MOV_@DPTR,A;启动SJA1000发送

RECV:MOVDPTR,SR;状态寄存器地址

MOV_A,@DPTR

ANLA,0C3H;读取总线脱离、错误状态、接收溢出、有数据等位

JNZPROC

RET;无上述状态,结束

PROC:JNBACC.7,PROC1

BUSERR:MOVDPTR,IR;IR中断寄存器,出现总线脱离MOV_A,@DPTR;读中断寄存器,清除中断位MOVDPTR,MODE

MOVA,08H

MOV_@DPTR,A;将方式寄存器复位请求位清0RET

PROC1:MOVDPTR,IR;

MOV_A,@DPTR;

JNBACC.3,OTHER

OVER:MOVDPTR,CMR;

MOVA,0CH

MOV_@DPTR,A;

OTHER:JBACC.0,RECE

LJMPRECOUT;

RECE:CLRP1.0

SETBP1.7

MOVDPTR,FIN;

MOV_A,@DPTR

JNBACC.6,RDATA

MOVDPTR,CMR;

MOVA,04H

MOV_@DPTR,A

LJMPRECOUT

RDATA:MOVDPTR,DATA1;

MOVR2,08H

RDATA1:MOV_A,@DPTR

MOV@R0,A

INCDPL

INCR0

DJNZR2,RDATA1

MOVDPTR,CMR

MOVA,04H

MOV_@DPTR,A

RECOUT:MOVDPTR,ALC;

MOV_A,@DPTR

MOVDPTR,ECC

MOV_A,@DPTR总线正常读取中断位数据溢出处理清除数据溢出位,释放接收缓冲区接收缓冲区无数据接收缓冲区有数据远程桢处理将接收数据传至R0为首址的内存中释放仲裁丢失捕捉寄存器和错误捕捉寄存器

DELAY:MOVR2,40DELAY1:MOVR4,255DELAY2:NOP

DJNZR4,DELAY2DJNZR2,DELAY1RET

现场总线

实验三SJA1000双机通信

一.实验要求:

选SJA1000为主要芯片构成CAN计算机A(ID:0_00)、B(ID:0_01),要求A、B两台计算机可以进行通信(标准数据帧),并将接收到的数据进行显示。

二.实验目的:

1.熟悉带CAN控制器芯片的结构、CAN通信原理。

2.掌握双机通信的原理及设计。

三.实验器材:

计算机两台、CAN模块两个

四.实验内容:

1.双机通信流程图:

2..实验步骤:

(1)将CPU挂箱右侧的“DATAPORT”和“ADDRESSPORT”分别用5P、14P、20P连线与接口挂箱的相应插座连接.

(2)将模块1上CS0用跳线帽短接,模块2上CS1用跳线帽短接.

(3)将模块上的JUMP-4的两个跳线短接在Single侧.

(4)将模块插入接口挂箱插槽内.

(5)将A机模块的CANL与B机CANL相连,A机模块的CANH与B机CANH相连

(6)接通电源,运行本测试程序.

五.实验结果:

1.实验截图:

XXX双机通信源程序:

MODEEQU0DE00H;模式寄存器

CMREQU0DE01H;命令寄存器

SREQU0DE02H;状态寄存器

IREQU0DE03H;中断寄存器

IEREQU0DE04H;中断使能寄存器

BTR0EQU0DE06H;总线定时寄存器一

BTR1EQU0DE07H;总线定时寄存器二

OCREQU0DE08H;输出控制寄存器

ALCEQU0DE0BH;仲裁丢失捕捉寄存器

ECCEQU0DE0CH;错误代码捕捉寄存器

T_ERREQU0DE0FH;发送错误计数器

ACR0EQU0DE10H;验收代码寄存器0

ACR1EQU0DE11H;1

ACR2EQU0DE12H;2

ACR3EQU0DE13H;3

AMR0EQU0DE14H;验收屏蔽寄存器0

AMR1EQU0DE15H;1

AMR2EQU0DE16H;2

AMR3EQU0DE17H;3

FINEQU0DE10H;发送/接收帧信息

ID1EQU0DE11H;发送/接收缓冲区之标示符一

ID2EQU0DE12H;发送/接收缓冲区之标示符二

DATA1EQU0DE13H;发送/接收数据首址

RBSAEQU0DE1EH;接收缓冲器起始地址寄存器CDREQU0DE1FH;时钟分频寄存器

ORG4000H

JMPSTART

ORG4080H

;----------------------------------------------------------------START:MOVR1,8

MOVR0,20H

FILL:MOVB,11H

MOVA,R1

MULAB

MOV@R0,A

INCR0

DJNZR1,FILL

MOVR0,0AAH

LCALLINITCAN;CAN初始化(CAN片选为CS0:0DE00H);-------------------------CAN1发送桢数据------------------

RETRAN:MOVDPH,0DEH

MOVR0,20H

LCALLSEND;发送20H为首址的1桢数据(前三字节为:08H、BBH、FFH,后8字节任意)

LCALLDELAY

;-----------------------CAN1接收数据--------------------------MOVDPH,0DEH

MOVR0,30H

LCALLRECV

NOP;在此处设置断点,以观察结果INITCAN:

MOVDPTR,MODE;初始化子程序,DPH、R0为入口参数MOVA,09H

MOV_@DPTR,A;模式寄存器,单验收滤波器,进入复位模式

MOVDPTR,CDR

MOVA,88H

MOV_@DPTR,A;时钟分频R,选择增强CAN模式,关闭CLKOUT输出

MOVDPTR,IER

MOVA,0DH

MOV_@DPTR,A

MOVDPTR,BTR0

MOVA,03H

MOV_@DPTR,A

MOVDPTR,BTR1

MOVA,0FFH

MOV_@DPTR,A

MOV_A,@DPTR

MOVDPTR,OCR

MOVA,0AAH

MOV_@DPTR,A

MOVDPTR,ACR0

MOVA,R0

MOV_@DPTR,A

MOVDPTR,ACR1

MOVA,40H

MOV_@DPTR,A

INCDPTR

MOV_@DPTR,A

INCDPTR

MOV_@DPTR,A

MOVDPTR,AMR0

MOVA,0FFH;modify00to0FFMOV_@DPTR,A

INCDPTR

MOVA,0FFH

MOV_@DPTR,A

;中断使能寄存器,开溢出、错误、接收中断;总线定时寄存器一;总线定时寄存器二,6MHz晶振,波特率30Kbps;输出控制寄存器;验收代码ACR0;无关;无关;无关;验收屏蔽寄存器AMR0=00H;AMR1

INCDPTR

MOV_@DPTR,A;AMR2

INCDPTR

MOV_@DPTR,A;AMR3验收屏蔽:只有ACR0是相关项

MOVDPTR,RBSA

MOVA,00H

MOV_@DPTR,A;接收缓冲器FIFO起始地址为0

MOVDPTR,T_ERR

MOV_@DPTR,A;清除发送错误计数器

MOVDPTR,ECC

MOV_@DPTR,A;清除错误代码捕捉寄存器

MOVDPTR,MODE

MOVA,08H

MOV_@DPTR,A;单滤波方式,返回工作方式

SEND:MOVDPTR,SR;状态寄存器

MOV_A,@DPTR;从SJA1000读入状态寄存器值

JBACC.4,SEND;判断是否正在接收正在接收则等待

SEND0:

MOV_A,@DPTR

JNBACC.3,SEND0;判断上次发送是否完成未完成则等待发送完成SEND1:

MOV_A,@DPTR

JNBACC.2,SEND1;判断发送缓冲区是否锁定锁定则等待SEND2:

MOVDPTR,FIN;SJA1000发送缓存区首址

MOVA,08H

MOV_@DPTR,A

INCDPL

MOVA,00H

MOV_@DPTR,A

INCDPL

MOVA,20H

MOV_@DPTR,A

INCDPL

MOVR2,08H

SEND3:

MOVA,@R0;R0为发送数据首址

MOV_@DPTR,A

INCR0

INCDPL

DJNZR2,SEND3

MOVDPTR,CMR;命令寄存器地址

MOVA,01H;发送请求

MOV_@DPTR,A;启动SJA1000发送

RECV:MOVDPTR,SR;状态寄存器地址

MOV_A,@DPTR

ANLA,0C3H;读取总线脱离、错误状态、接收溢出、有数据等位

JNZPROC

CLRP1.0

SETBP1.1

RET;无上述状态,结束

PROC:JNBACC.7,PROC1

BUSERR:MOVDPTR,IR;IR中断寄存器,出现总线脱离MOV_A,@DPTR;读中断寄存器,清除中断位

MOVDPTR,MODE

MOVA,08H

MOV_@DPTR,A;将方式寄存器复位请求位清0RET

PROC1:MOVDPTR,IR;总线正常

MOV_A,@DPTR;读取中断位

JNBACC.3,OTHER

OVER:MOVDPTR,CMR;数据溢出处理

MOVA,0CH

MOV_@DPTR,A;清除数据溢出位,释放接收缓冲区RET

OTHER:JBACC.0,RECE

LJMPRECOUT;接收缓冲区无数据

RECE:

MOVDPTR,FIN;接收缓冲区有数据

MOV_A,@DPTR

JNBACC.6,RDATA

MOVDPTR,CMR;远程桢处理

MOVA,04H

MOV_@DPTR,A

LJMPRECOUT

CLRP1.1

SETBP1.0

RDATA:MOVDPTR,DATA1;将接收数据传至R0为首址的内存中MOVR2,08H

RDATA1:MOV_A,@DPTR

MOV@R0,A

ORLA,0F0H

movp1,@R0

INCDPL

INCR0

DJNZR2,RDATA1

MOVDPTR,CMR

MOVA,04H

MOV_@DPTR,A

RECOUT:MOVDPTR,ALC;

MOV_A,@DPTR

MOVDPTR,ECC

MOV_A,@DPTR

DELAY:MOVR2,40

DELAY1:MOVR4,255

DELAY2:NOP

DJNZR4,DELAY2

DJNZR2,DELAY1

释放仲裁丢失捕捉寄存器和错误捕捉

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- huatuo6.cn 版权所有 赣ICP备2024042791号-9

违法及侵权请联系:TEL:199 18 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务