微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线分布式控制系统智能节点的设计

基于CAN总线分布式控制系统智能节点的设计

时间:09-12 来源:互联网 点击:

速率必须一致,而且接、发双方必须同步。报文的接收主要有两种方式:中断和查询接收方式。

为提高通信的实时性,文中采用中断接收方式,而且这样也可保证接收缓存器不会出现数据溢出现象。SJA1000的Basic CAN工作模式是与其前一款PCA82C200独立控制器相兼容的模式, 而PeliCAN工作模式支持CAN协议中的更多功能,它的程序设计也与之有所不同。下面给出SJA1000工作在模PeliCAN式下的节点初始化、报文发送、报文接收的196汇编源程序。

INITIALIZE: 初始化子程序

LDB AL, #09H; 初始化模式寄存器进入复位模式

STB AL, MODE; 选择单滤波方式

LDB AL, #88H; 时钟分频器

STB AL, CDR; 选Peli CAN模式

LDB AL, #00H

STB AL, ACR0; 初始化接收代码寄存器

LDB AL, #60H

STB AL, ACR1

LDB AL, #00H

STB AL, AMR0; 初始化接屏蔽寄存器

LDB AL, #3FH; 只接收标识符为2,3的报文

STB AL, AMR1

LDB AL, #8FH

STB AL, IER; 中断使能寄存器

LDB AL, #01H; 总线定时寄存器0、1的设置

STB AL, BTR0;

LDB AL, #1CH; 在16MHz晶振情况下

STB AL, BTR1; 波特率设置为250

LDB AL, #0AAH

STB AL, OCR; 输出控制器寄存器设置

LDB AL, #0H; 接收缓存器起始地址设为0

STB AL, RBSA;

LDB AL, #01H;

ORB AL, MODE;

STB AL, MODE; 返回工作模式

RET TRANSMIT:; 发送子程序

LDB AL, SR

SRCVE: JBS AL,4, SRCVE;正接收?

STRSV: JBC AL,3, STRSV;发送成功?

STBF: JBC AL, 2, STBF; 发送缓存器锁定否

WID: LDB AL, #08H

LD BX, #TXB; 发送缓存的首址

STB AL,[BX]+; 传送两个字节的标识符

LDB AL,#ID0

STB AL,[BX]+

LDB AL,#ID1

STB AL,[BX]+

LDB COUT,#08H; 8个字节数据

TDATA: LDB AL,[DATA]+ CPU内的发送数据缓存区首址

STB AL,[BX]+;

DJNZ COUT,TDATA; 8个字节发完否?

LDB AL,#01H;

STB AL,CMR; 发送

RET

RECEIVE: ; 接收中断程序

PUSHF; 保护现场

LDB AL,IR

JBC AL,0,OTHER; 接收中断否?

LD BX,#RXB; 接收缓存器首址

LDB AL,[BX]+

JBC AL,6,RCDATA;标识符的RTR=1?

LDB AL,#04H; 是远程帧,释放接收缓存区

STB AL,CMR;

LCALL TRANSMIT; 相应远程帧,发送相应数据

SJMP BACK

RCDATA:

ANDB AL,#0FH; 取低四位数据长度

ADDB AL,#03H;

STB AL,R1; 该报文含有的字节数

LD BX,#RXB; 接收缓存器的首地址

LD CX,#CRBF; CPU内的接收数据缓存区首址

RECE:

LDB AL,[BX]+

STB AL,[CX]+

INCB R1

DJNZ R1,RECE; 接收完否?

LDB AL,#04H

STB AL,CMR; 释放接收缓存区

BACK;

POPF

RET

结语

CAN总线已被公认为是最有前途的几种现场总线之一。因其高性能价格比、实现简单等突出优点深得越来越多的研发人员的青睐。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top