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,体系硬件结构如图l所示。
1.1 USB接口电路
USB是一种支撑即插即用及热插拔的串行总线,它具有传输速率高、衔接灵敏、运用方便等长处。CYPRESS公司的EZ-USB芯片CY7C68013A支撑USB2.0协议,通讯牢靠,传输速率可达480 Mb/s。CY7C68013A作业在SLAVE FIF0异步通讯办法下,接口电路如图2所示。
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所示。
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、/WR、/RD等信号置为非有用态。将/CS置为有用状况;在WR2态ALE、/RD为非有用态.而将/WR信号置为有用态,在时钟的下降沿将数据写入寄存器。WR3状况坚持/CS有用,WR信号变为无效,进入IDLE态,一次写周期完结。
2.2 SJA1000读写数据流程操控
FPGA对SJA1000操控程序包含SJA1000初始化、SJA1000读数据、SJA1000写数据等部分。SJA1000的初始化是在复位形式下进行的,在复位形式下别离设置时钟分频器CDR、总线定时器(BTR0、BTR1)、输出操控寄存器(OCR)等重要寄存器。SJA1000通讯波特率由总线定时器决议,需求与后端节点的波特率相同才干进行节点间的正常通讯。FPGA上电后需求延时一段时间.等候SJA1000复位完结才干进行SJA1000初始化。初始化仿真波形如图5(a)所示。SJA1000内部有一个接纳缓冲器和一个发送缓冲器。FPGA对SJA1000的读写操作,实际上对这两个缓冲器的读写操控。当FPGA接纳CAN总线数据时首要读取SJA1000中止寄存器IR判别是否有接纳中止。如果有接纳中止到来则开端读取缓冲器内的8字节数据,然后开释接纳缓冲器(写指令寄存器CMR)。运用Xilinx公司的Chipseope软件进行板上测验,测验数据为(E0,E1,……E7),抓取到的波形如图5(b)所示。FPGA读写SJA1000的流程操控图如图6所示。
2.3 CY7C68013A通讯操控程序
CY7C68013A供给一种量子FIFO的处理架构,使USB接口和运用环境直接同享内部含有的4 K FIF0空间。本文CY7C68013A的操控是以异步SLAVE FIFO办法完结的,FPGA对CY7C68013A的逻辑操控实际上是对CY7C68013A内部FIFO的异步读写操控。设置CY7C68013A端点2为批量输入端点(FIF0地址为00),端点6为批量输出端点(FIF0地址为1O)。FPGA判别CY7C68013A的PA[1:0]端口电平,当PA[1:0]为01时,FPGA将接纳到的CAN总线数据写入端点2对应的FIF0空间并上传给上位机,PA[1:0]为10时,FPGA读取端点6对应的FIFO内数据。FPGA对CY7C68013A的时序操控严厉依照芯片手册完结。
因为USB数据包与CAN数据帧是依据两种不同协议的数据格局,因此在FPGA内拓荒了2个512x8bit的FIFO缓存,并要进行必要的格局转化。例如,当从USB总线端注入的数据大于8字节时,需求将数据分红多帧传送给CAN总线;当数据小于8字节时则在数据后填充0。别的,在数据传送给CAN总线之前还需求增加恰当的帧信息与帧识别码。
3 软件规划
3.1 USB固件程序
USB固件程序是在Keil东西上开发完结的,除了进行必要的端点及寄存器装备外,程序中运用了自定义恳求指令。自定义恳求码经过USB操控传输的办法传送给固件,固件程序需求呼应自定义恳求码的恳求信息。本文运用的自定义恳求码为Oxa8,在呼应代码中设置端口PA[1:0]电平值,发生USB操控指令,代码如下所示。SETUPDAT[2]对应操控传输端点的Value值,由上位机运用程序设定。
3.2 USB驱动程序及运用程序
运用CYPRESS公司供给的CY7C68013A通用驱动程序CyUSB.sys。上位机运用程序运用VC编写,也是依据Cypress供给的C++类库文件CyAP-I.lib规划完结的。运用的首要函数包含:BeginDataXfer、FinishDataXfer、XferData等函数。运用程序中规划了独立的数据接纳线程,线程函数中不断地发送USB数据读指令,并完结批量输人端点的读操作。当有数据读入时,与主线程之间选用事情的线程同步办法,将数据读入计算机内存并保存。以下是线程函数中用于发送USB操控指令的操控传输代码:
4 试验调试与成果
为验证规划的正确性,运用了周建功公司的USBCAN-I产品,与方针电路板组成双节点通讯,2个节点设置相同波特率500 Kb/s(BTRO= 00,BTR1=1Ch)和相同帧格局,由测验软件ZLGCANTest发送一组数据(eOh,e1h,……,e7h),上位机运用程序接纳到的数据如图7所示。反过因由上位机运用程序注入指令数据e0h,a8h,周建功软件接纳到的数据为e0h,a8h,00h,OOh……。经试验标明,数据收发正确,近距离通讯时,通讯速率可高达1 Mb/s。
5 定论
运用该办法规划的CAN总线转化器长处在于:运用USB总线完结CAN总线与计算机的数据交流,不会影响CAN总线的全体通讯速率;经过FPGA操控完结通讯接口的规划,可扩展性好,灵敏性强,稳定性高。作为空间相机下位机地检设备的一部分,FPGA一起还能够完结RS422等总线的通讯操控。