引言
当前,有一些微处理器将can控制器嵌入到系统之中,但是仍有大量人们比较熟悉的微处理器并不带有can控制器。采用微处理器和can控制器组合的设计成为必要,而且,can控制器具有完成can总线通信协议所要求的全部必要功能,因此,can控制器与其它微处理器的接口设计成为设计can总线系统的首要工作。本文重点介绍以sharc dsp为核心的、基于sja1000的can总线接口设计。
sja1000简介
sja1000是一种独立的can控制器,用于移动目标和一般工业环境中的控制器局域网络(can)。它是philips公司早期can控制器pca82c200(basic can)的替代品,而且增加了一种新的工作模式(pelican),这种模式支持具有很多新功能的can2.0b协议。
sja1000与微处理器的接口主要由8根数据和地址分时复用线完成:ad0~ad7、ale/as、、/e、、、mode和,其中mode为接口方式选择信号,可设置成intel方式或motorola方式。两者的区别在于:intel模式下,处理器对sja1000写时,用、作为读、写数据信号,a
le下降沿锁存地址(此时地址信号要保证基本的建立保持时间),仅在读、写数据时为低;motorola模式下,读、写信号用区分(高电平读、低电平写),用/e选通数据(下降沿锁存),as和cs类似于intel的ale和。目前流行的mcs51/96系列单片机提供了方便快捷的直接intel方式接口,出于普遍性的考虑,本文以下的接口设计都是基于intel模式的。
dsp的接口信号和时序
与早期的处理器不同,dsp芯片的片外引脚都采用地址线和数据线分离的设计方法,不再使用地址数据分时复用线,也没有ale信号,这样就给can控制器与dsp的接口带来一定困难,且不同的dsp外部引脚和时序也略有区别。要设计can控制器与dsp的接口,首先必须比较dsp与can控制器的时序。
本文选用的dsp为adsp21062,主频为40mhz,单周期(零等待)访问存储器时,要求存储器的响应(读或写)周期小于17ns,但许多存储器或外设的响应速度没有这么快,于是就要通过加等待来延长访问时间。adsp2106x支持两种等待方式,即内等待(软等待)和外等待(硬等待)。
选择82c250作为收发器,选择6n137高速光电隔离器实现系统和can总线的隔离。其连接方法如图1所示。这种设计既能做好电气隔离,又能保证数据的传输速度。
can控制器与dsp的接口设计方法
sja1000的数据和地址信号为分时复用,而dsp为数据、地址信号分离的结构,而且dsp不提供ale信号,设计的关键就是dsp要把sja1000的地址当成数据写入并同时产生ale信号。分析读写信号所要求的最短有效时间,由于读低电平到数据有效的时间最长为50ns,所以要保证读信号有效时间至少50ns,adsp21062在用2个软等待时,其低电平时间为62.5ns(25ns/2+2×25ns),刚好能满足要求。
adsp21062和sja1000接口的简化设计
在外围设备连接不多的情况下,接口电路可以使用几个逻辑门实现。由于访问外部数据时,数据总线的低16位未用,所以使用的数据线从data16起始。当flag1=1时,sja1000的wr始终为1,其ale为dsp的wr的反向,当dsp把地址当成数据写入sja1000时,低电平dsp的wr信号会转换成高电平的ale,并在ale的下降沿把数据锁存。当flag1=0时,ale始终为0,无地址锁存操作。sja1000的wr直接受dsp的wr信号控制。由flag2直接控制cs。