基于82527的CAN总线智能传感器节点设计
MSGLST——报文丢失标志位,只用于接收报文寄存器。10表示未读报文被新报文覆盖,01表示未覆盖。
CPUUPD——CPU更新标志位,只用于发送报文寄存器。10报文不被发送,01报文可发送。
NEWDAT——新数据标志位。10表示向寄存器写入了新数据,01表示无新数据写入。
◇仲裁寄存器0,1,2,3(BASE+2-BASE+5)
存储报文标识符。
7 | 6 | 5 | 4 | 3 | 2 | 1 | 0 |
DLC | DIR | XTD | 保留 |
◇报文配置寄存器(BASE+6)
DLC——数据长度编码,编程值0~8。
DIR——方向标志位。1发送,0接收。
XTD——标准/扩展标识符标志位。1扩展标识符,0标准标识符。
◇数据寄存器(BASE+7-BASE+14)
82527存储报文时,8个数据字节均被写入,未用到的字节数据是随机的。
2 硬件电路设计
智能节点的电路如图1所示(图中6264略去)。
在硬件设计中,由ADC0809完成对8路模拟置的转换,与8051的信息交换采用查询方式,地址BFF8~BFFFH,其时钟可由ALE二分频获得;82527完成与CAN总线的信息交换。本设计中,旁路了输入比较器,与8051的信息交换采用中断方式,地址7F00~7FFFH,可以用82527的P1口和P2口对开关量采集或对继电器进行控制。82C250提供82527和物理总线间的接口,提高接收和发送能力。可根据需要扩展程序存储器。
3 软件设计
本设计软件采用MCS-51汇编语言编写,程序框图如图2所示。javascript:window.open(this.src);" style="cursor:pointer;"/>
82527的初始化程序如下:
INT:MOV DPTR,#0FF02H
MOV A,#00H
MOVX @DPTR,A ;SCLK=XTAL
;MCLK=SCLK,CLKOUT无效
MOV DPTR,#0FF00H
MOV A,#41H
MOVX @DPTR,A ;置位CCE,INIT
MOV DPTR,#0FF2FH
MOV A,#48H
MOVX @DPTR,A ;旁路输入比较器设置1位隐性,0为显性,RX1无效
MOV DPTR,#0FF3FH;
MOV A,#43H;
MOVX @DPTR,A ;SJW=2,BRP=3
MOV DPTR,#0FF4FH
MOV A,#0EAH
MOVX @DPTR,A ;SPL=1,TSEG1=7,TSEG2=6此时波特率为100Kbps
MOV DPTR,#0FF00H;
MOV A,#01H
MOVX @DPTR,A ;禁止对配置寄存器的访问
MOV DPTR,#0FF10H;
MOV A,#55H;
MOVX @DPTR,A;
INC DPTR;
MOVX @DPTR,A;
·
·
·
MOV DPTR,#0FFF0H;
MOV A,#55H;
MOVX @DPTR,A
INC DPTR;
MOVX @DPTR,A ;报文寄存器控制位初始化
MOV R0,#06H;
MOV DPTR,#0FF06H;
MOV A,#0FFH;
L1:MOVX @DPTR,A ;报文标识符需全部匹配
INC DPTR
DJNZ R0,L1;
MOV DPTR,#0FF16H;
MOV A,#8CH ;报文寄存器1可发送8个字节扩展报文
MOVX @DPTR,A;
MOV DPTR,#0FF26H;
MOV A,#84H;
MOVX @DPTR,A ;报文寄存器2可接收8个字节扩展报文
MOV DPTR,#0FF00H;
MOV A,#00H;
MOVX @DPTR,A ;初始化结束
RET