摘要:介绍一种根据CPLD完结的DSP或ARM处理器与CAN总线操控器SJA1000接口衔接规划。一般DSP或ARM处理器都有独立的地址和数据总线,而SJA1000选用的是地址、数据分时复用总线,它们不能直接衔接。该规划主要是经过CPLD完结这两种总线方法的转接。该计划成本低,功用安稳,完结牢靠。选用CPLD使该规划更为自在、灵敏。在处理器与CPLD的衔接一侧是选用微处理器用独立的地址和数据总线拜访外部存储器的方法作业的,而许多具有独立的地址和数据总线的微处理器都能做到拜访外部存储器,然后使该规划具有很强的通用性。全篇给出了完好具体的规划代码和仿真成果,并在实践运用中得到查验,可直接运用到规划中。
在工业自动化范畴,CAN口通讯以其杰出的功用、极高的牢靠性和低价的价格得到广范的运用。Philips公司的SJA1000芯片,是现在运用最为广泛的一种独立CAN总线操控器。SJA1000有一系列先进的功用,适合于多种运用,特别在体系优化,确诊和保护方面非常重要。
为了衔接到主操控器,SJA1000供给一个分时复用的地址、数据总线和附加的读写操控信号。SJA1000能够作为主操控器外围存储器映射的I/O器材直接衔接到具有Intel方法接口的主操控器。而现在大部分DSP和ARM处理器都是选用独立的地址和数据总线拜访外部存储器的,因为时序不相兼容的原因,这些处理器不能直接拜访SJA1000。然后规划一种转接电路使DSP和ARM处理器能够衔接SJA1000变得很必要。本规划正是处理这一问题。
1 整体规划
该规划以新塘科技出产的ARM7处理器W90P710B与SJA1000的衔接为例,W90P710B选用独立的地址和数据总线拜访外部存储器方法作业。图1表明晰CPLD在W90P710B与SJA1000之间的这种转接联系。
规划中选用的CPLD选用Altera公司的MAX系列可编程逻辑器材EPM3128A芯片。EPM3128A具有128个宏单元,96用户I/O管脚数,2500个可用门,管脚间推迟快至10ns,计数器速度可高达100 MHz,能够很好的满意规划需求。本规划选用图形和AHDL言语混合输入完结。运用东西为MaxplusⅡ。Ateral公司的MaxplusⅡ,QuartusⅡ,也是业界最著名的CP LD/FPGA开发东西,支撑一切的Ateral芯片,如MAX3000,MAX7000,MAX2Ⅱ系列。
图2是转接电路整体规划图,与ARM处理器衔接一侧,锁存器U1用于存储CAN操控器要拜访的地址,U1的片选信号为CANAW,该信号一起起到发动时序电路U8输出读写时序的效果;锁存器U2用于存储要写入CAN操控器的数据,U2的片选是CANDW;锁存器U7的输出为高,操控U8输出读时序对CAN操控器读取数据,读出的数据存入U5中,锁存器U7的输出为低,操控U8输出写时序对CAN操控器SJA1000进行写操作,将U2中的数据写入U1所代表的,CAN地点地址中,其片选信号为CANCTL;门电路U6经过片选信号CANDR用以读取U5中寄存的CAN读出数据。综上所知,CPLD与ARM处理器接口的是4个寄存器,它们分别是3个写寄存器:CAN地址写寄存器CANAW,CAN数据写寄存器CANDW,CAN操控寄存器CANCTL;一个读寄存器:CAN数据读CANDR。ARM便是经过这4个寄存器来操作SJA1000 CAN操控器的。
CPLD与SJA1000衔接一侧是INTEL方法的规范信号CANCS、CANRD、CANWR、CANALE,这4个信号由时序电路U8发生。U3、U4的输出,U5的输入都与SJA1000的数据总线相连,用以接纳地址和读写数据。
复位信号RESET使体系上电时处于初始状况。时钟信号GCLK取8 MHz,由SJA1000的16 MHz时种2分频得来。U9-U12用以延宽CANAW对U8的低电平发动脉冲,使U8作业的更牢靠。整个规划占用ARM4个地址和一个中止资源,只需有满足的地址和中止源ARM就可按此规划扩大出多个CAN口。
2 时序电路规划
CAN读写时序电路U8的规划输入选用AHDL言语,其电路符号如图3所示。
U8的规划代码如下:
其波形仿真成果如图4所示。
3 转接电路作业原理介绍
CAN读写时序电路U8是整个规划的中心,它起到对SJA1000进行读写操作的效果。
当ARM处理器要对SJA1000进行读操作时,它先经过CANCTL片选在U7中写入‘1’高电平,使U8作业在读的状况,然后把要读的地址经过片选CANAW写入U1,片选CANAW还发动了U8的TG触发信号(图4的前半部分、CANE为低与CANR/W为高的那部分),使U8的CANE(即CANCS)输出低电平,CANCS0输出低脉冲翻开门电路U3,使CAN地址呈现在SJA1000的总线上,一起CANALE呈现一个正脉冲,将该地址锁存到SJA1000的地址寄存器中,随后CANCSR(即CANRD)输出低电平对SJA1000进行读数据,在CANCSR低电平脉冲完毕的上升沿处呈现SJA1000总线上的数据被锁存到U5寄存器中,然后CANE变高,读时序完结。随后ARM处理器经过CANDR片选翻开门U6将数据读走。
当ARM处理器要对SJA1000进行写操作时,它先经过CANCTL片选在U7中写入‘0’低电平,使U8作业在写的状况,然后再把要写的数据经过片选CANDW写入U2,最终把要写的地址经过片选CANAW写入U1,片选CANAW还发动了U8的TG触发信号(图4的后半部分、CANE与CANR/W一起为低的那部分),使U8的CANE(即CANCS)输出低电平,CANCS0输出低脉冲翻开门电路U3,使CAN地址呈现在SJA1000的总线上,一起CANALE呈现一个正脉冲,将该地址锁存到SJA1000的地址寄存器中,随后CANCS1输出低脉冲翻开门电路U4,使CAN要写入的数据呈现在SJA1000的总线上,一起CANCSW(即CANWR)输出低电平对SJA1000进行数据写入,然后CANE变高,写时序完结。