微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 一种CAN总线转换USB接口的设计方案

一种CAN总线转换USB接口的设计方案

时间:02-14 来源:互联网 点击:

摘要:为实现CAN总线与计算机的通信,便于CAN总线系统调试,提出一种基于FPGA的CAN总线转换USB接口设计方案。利用USB总线与计算机通信,详细论述了FPGA对SJA1000与CY7C68013A的具体控制过程以及CAN总线的通信实现。这种方法数据传输速率高,设计灵活,可扩展成多路总线的通信接口。目前已成功应用于空间相机下位机系统的地面检测设备中。

CAN总线是现场总线的一种,因为其成本低、容错能力强、支持分布式控制、通信速率高等优点在汽车、工业控制、航天等领域得到广泛应用。但是计算机没有CAN总线接口,为了进行CAN总线的调试,必须具有专用的适配卡才能实现与计算机的通信。目前常用的CAN转换器是基于单片机设计的,一般只适用于单路CAN总线的数据转换,可扩展性差。

在小卫星相机下位机系统中使用了多种总线,如CAN总线与卫星管理计算机的通信;RS422(或RS485)总线与成像单元等下行单元的通信。在进行相机下位机系统地面调试时,可能需要多种总线转换器。采用FPGA将不同总线协议转换成USB2.0、RS232等可与计算机直接交换数据的协议,可增强设计的灵活性,降低设计的成本和复杂性,且可实现多路总线的数据通信接口。

这里以CAN总线通信接口为例,详细论述了基于FPGA的CAN总线转换USB接口的设计方案。

1 系统硬件组成

实现CAN总线与计算机双向通信接口的核心是FPGA。它首先接收来自CAN总线的数据,保存在FPGA内部设计的FIF0缓存中,经过内部数据格式的转换后,由USB控制器读取并上传给计算机。而总线数据注入过程的数据流向与之相反。FPCA选用Xilinx公司的Spartan3的XC3S200,系统硬件结构如图1所示。

图1 硬件结构框图

1.1 USB接口电路

USB是一种支持即插即用及热插拔的串行总线,它具有传输速率高、连接灵活、使用方便等优点。CYPRESS公司的EZ-USB芯片CY7C68013A支持USB2.0协议,通信可靠,传输速率可达480 Mb/s。CY7C68013A工作在SLAVE FIF0异步通信方式下,接口电路如图2所示。

图2 CY7C68013A接口电路

SLAVE FIFO异步写周期中,高电平需维持70ns,低电平需维持50ns,理论最高传输速率为8Mb/s,而CAN总线的最高传输速率为1Mb/s,符合通信要求。端口PA0~PA1用作USB控制器端向FPGA发送读写命令的控制线,由USB固件程序配合上位机端自定义请求代码产生PA端口的控制信号。另外使用了EEPROM芯片24LC128存放USB固件程序。

1.2 CAN总线接口电路

选用Philips公司的SJA1000作为CAN控制器,采用PCA82C250作为CAN收发器,并在CAN控制器与收发器之间使用6N137进行光电隔离,以增强抗干扰能力。将MODE引脚接高电平即SJA1000工作在INTEL模式,

引脚与复位芯片MAX706T的RESET引脚相连,进行全局复位。在FPGA与SJA1000连接时需要使用741V164245电平转换器完成CAN总线5 V TTL电平向3.3 V FPGA I/O电平的转换。另外,SJA1000的RX1引脚与PCA-82C 250的VREF引脚相连,使用输入比较器旁路功能,可减少内部延时,增加正常通信的总线长度。具体的接口电路如图3所示。

图3 SJA1000接口电路

2 FPGA逻辑控制程序

2.1 SJA1000逻辑控制

由于SJA1000地址线与数据总线复用,FPGA不仅仅要产生SJA1000读写控制引脚的信号逻辑,还需要模拟单片机等处理器产生对SJA1000的寻址信号,实际上是一个向SJA1000写地址的过程。根据SJA1000技术手册的时序要求,要完成对SJA1000内寄存器的正确读写,接口逻辑必须在地址锁存信号ALE为高电平时将SJA1000的寄存器地址当作数据写入,然后在ALE和片选信号

为低电平后使能SJA1000的读写控制信号(WR或RD)。SJA1000的逻辑控制采用状态机的方式完成,状态机流程图如图4所示。起始态为IDLE态,当接收到数据读写等命令时,进入ADDR-ESS态,向SJA1000写入相应寄存器的地址值。然后根据命令类型决定下一个态是写寄存器状态(WR1~WR3)还是读寄存器状态(RD1~RD4)。以写寄存器为例,在WR1态ALE、

等信号置为非有效态。将

置为有效状态;在WR2态ALE、

为非有效态.而将

信号置为有效态,在时钟的下降沿将数据写入寄存器。WR3状态保持

有效,WR信号变为无效,进入IDLE态,一次写周期完成。

图4 SJA1000逻辑控制状态机流程图

2.2 SJA1000读写数据流程控制

FPGA对SJA1000控制程序包括SJA1000初始化、SJA1000读数据、SJA1000写数据等部分。SJA1000的初始化是在复位模式下进行的,在复位模式下分别设置时钟分频器CDR、总线定时器(BTR0、BTR1)、输出控制寄存器(OCR)等重要寄存器。SJA1000通信波特率由总线定时器决定,需要与后端节点的波特率相同才能进行节点间的正常通信。FPGA上电后需要延时

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

网站地图

Top