(4)设计时将SJA1000的CLOCKOUT的时钟信号接至
AT89C51的时钟电路输入端,来作为
AT89C51的外部时钟输入,从而解决了时钟同步问题:同时将SJA1000中断输出信号/INT接至
AT89C51的/INT0端,通过中断方式与
AT89C51进行通信。
3系统软件设计
系统上电后首先对82C250和SJA1000进行初始化。以确定工作主频、波特率、输出特性等,然后通过查询方式获取模数转换采样值,并把该值通过SJA1000传送到CAN总线上由上位PC机来进行显示控制。而对来自CAN总线上的信息则采用中断方式处理,系统每接收到一帧信息,便产生一次中断以触发微处理器进入中断模式,然后在中断服务程序中读取该帧信息并传送到现场。SJA1000的初始化程序如下:
MOV DPTR,#CR:控制寄存器CR的地址送DPTR
MOVA,#01H
MOVX@DPTR,A:进入复位模式
MOV DPTR,#CDR
MOVA,#00H
MOVX@DPTR,A:选择BASIC CAN模式、时钟不输出
MOV A,#NODECODE
MOVX @DPTR,A;节点号NODECODE写入ACR
MOVX DPTR,#AMR
MOV A,#00H
MOV @DPTR,A;AMR置为0,当且仅当RXID0=ACR时接收数据
MOV DPTR,#BTR0;设定总线时序寄存器BTR0,系统采用12 MHz晶振
MOV A,#85H;分频后总线时钟频率为2MHz
MOVX @DPTR,A;同步跳转宽度为3tscl
MOV DPTR,#BTR1;设定总线时序寄存器BTR1
MOV A,#OB4H:位同步时间为1个tsc1,采样开始位置TSEG1=5tsc1
MOVX @DPTR,A;TSEG2=4tsc1,每一位时间10tsc1(200 kHz),每位采样3次
MOV DPTR,#OCR;设置输出控制寄存器
MOV A,#1AH:数据从TX0按正常输出模式同极性输出
MOV @DPTR,A;TX1不用
MOV DPTR,#CR;初始化完成,使控制器退出复位模式,进入工作模式工作。
MOV A,#06H
MOV @DPTR,A
SJA1000在经过初始化后便开始接收或发送数据,其程序流程分别如图2和图3所示。
4结束语
该接口电路在经DP-51H单片机通讯仿真实验仪的调试后,结果表明它能模拟实现通信功能,且其抗干扰性能优良,通信速率较高,电路也比较简单,是开发与应用其它CAN总线产品的基础。