基于USB接口1553B总线设备检测系统设计

发布者:机器人总动员最新更新时间:2009-12-15 来源: 微计算机信息关键字:通用串行总线  现场可编程门阵列  1553B总线 手机看文章 扫描二维码
随时随地手机看文章

 1 引言

  MIL-STD-1553B军用总线标准,在军事装备,特别是飞机系统中得到了广泛的应用,舰载系统中也正在逐步推广。对于1553B总线传输信息的飞机系统,特别是由该总线网络构成的综合航火控系统、通信系统而言,系统时实监测与在线故障诊断均建立在信息录取的前提下。为了方便录取1553B总线上传输的信息就需要应用1553B总线到计算机标准接口转换器,目前常用转换器有1553B-PCI、1553B-VXI等,但在工程实践过程中,它们存在体积大、价格高、使用不方便等缺陷。相比而言,USB接口具有体积小、携带方便、热插拔等特征,具有不可替代的优势。

  本文介绍的1553B设备检测系统就是基于USB接口的。设计包含两大部分:硬件设计和软件设计。硬件设计主要实现1553B接口到USB接口的转换;软件设计主要是USB芯片固件开发、USB接口驱动、开发计算机测试1553B设备软件。

  2 硬件系统设计

  本系统的硬件设计工作主要集中在1553B与USB总线接口的转换设计。硬件系统分成三部分:1553B接口转换电路、FPGA译码电路和USB接口电路。如图1所示。

          
  
图1 硬件组成电路

  2.1 1553B接口转换电路

  目前,1553B接口芯片种类繁多,根据工程应用场合和实际需要,我们选用DDC公司BU-61580芯片。BU-61580芯片除了具有远程终端(RT)功能外,还可以用作总线控制器(BC)、总线监控器(MT)。其内部功能极强,接口灵活、便于控制,有各种封装形式和供电电压供用户选择。

  2.2 FPGA译码电路

  FPGA作为现场可编程器件越来越广泛地应用到工程设计中。利用FPGA对系统中信号进行译码可避免由于开始硬件电路设计考虑不周造成的硬件设计错误,而且方便系统的以后的升级。本系统中,FPGA通过1553B接口芯片读取1553B总线上的数据并暂存在FPGA内部RAM中,然后通知USB接口芯片把数据读出;同时,还要通过USB接口接收从PC下发的数据,重新打包,发送到1553B设备。

  2.3 USB接口电路

  USB接口控制芯片包含两大类:一类是需要外置控制器的芯片,还有一类为内置控制器,如Cypress公司的CY7C64613芯片。本系统选用PHILIP公司的PDIUSBD12芯片,需外置控制器的芯片。

  PDIUSBD12芯片是带有并行总线和局部DMA传输能力的全速USB接口器件。片内集成了高性能USB接口器件、SIE、FIFO存储器、收发器以及电压调整器等,可与任何外部微控制器/微处理器实现高速并行接口(2MB/s),完全能匹配1553B总线最高传输速率(1MB/s)[1]。USB 实现模块的核心是PIDUSB12。外置控制器AT89C52的P0口接PIDUSBD12的DATA0~DATA7,用来传输要交换的数据。P0 口所有引脚都要外接上拉电阻。PIDUSBD12的片选信号和复位信号由AT89C52的P1.6与P1.7提供。AT89C52 的P3.6与P3.7作为PIDUSBD12的写读控制端,AT89C52和PIDUSBD12的ALE相连,PIDUSBD12的挂起状态和中断控制都接高电平。 PIDUSB12的D+和D-加上+5V电源|稳压器和地就构成了USB接口,从而能与计算机相连。PDIUSBD12与USB的连接通过1.5K上拉电阻将D+置为高实现,默认状态不与Vcc相连,可用SoftConnect技术通过AT89C52发送专门的命令来实现该连接,允许AT89C52在决定与USB建立连接之前完成初始化时序,USB总线连接可以重新初始化而不需要拨出电缆[2]。随后USB设备识别和通信就要依靠固件程序和驱动程序了。

  3 软件设计

  1553B设备测试软件首先要实现USB接口与PC之间的通信,然后,再对设备进行性能检测。因此,需要对USB芯片进行固件、PC驱动程序和测试程序设计。

  3.1 USB固件设计

  AT89C52中的固化程序可采用C51 设计,主要功能是:控制PDIUSBDl2接受USB驱动程序的请求;控制PDIUSBDl2接受应用程序的控制指令;通过PDIUSBDl2存储数据并实时上传PC机。PDIUSBDl2的固件设计成完全的中断驱动,当CPU处理前台任务时USB的传输可在后台进行,确保了最佳的传输速率和更好的软件结构,简化了编程和调试。单片机通过PDIUSBDl2与主机通信的过程简述如下::当PDIUSBDl2接收到主机发来的令牌包后就给单片机发中断,单片机进入中断服务程序。它将数据从PDIUSBD12的内部FIFO取回到CPU存储器并根据中断寄存器判断USB令牌包的类型从而建立正确的事件标志以通知主循环程序进行处理,主循环检查事件标志并进入对应的子程序进行进一步的处理,固件程序流程如图2所示。系统上电后,先检测PDIUSBD12,如检测不成功则报错,要使用者重插USB接口,再次检测。检测成功则根据PDIUSBD12的中断类型设定中断标志位的值,再根据中断位的值调用相应的功能子程序[3]。

          
       图2 固件框架流程图

  在本设计中,功能子程序主要包括两部分:

  1)通过AT89C52的P0端口从FPGA接收1553B设备数据,重新打包,再经过P0端口写入PC机;

  2)  通过P0端口接收PC数据,重新打包,通过AT89C52的P0端口从FPGA写入1553B设备。

  3.2 驱动程序

   完成驱动程序设计的方法一般有三种:基于DDK开发、基于Windrive开发和基于DriveStudio开发。由于Windrive和DriveStudio开发对DDK中的函数进行了一定程度的封装,它们开发的难度比直接用DDK开发要小,但开发的灵活性不如DDK。本设计使用的驱动是DriveStudio与DDK配合进行开发,开发驱动程序的效率较高。

  在驱动程序开发平台搭建成功后,我们利用驱动程序生成向导Driver Wizard,根据硬件设置生成USB设备驱动程序的大体框架。设置如下:①选择 WDM的驱动程序类型和Windows 2000运行平台。②选择 USB总线类型,填写它的VID(供应商ID)和PID(设备ID),这些信息由芯片的供应商提供。③增加端点 1和端点2,它们分别具有IN 和OUT属性。④根据需要选择对设备的操作有:Read、Write、Device Control和CleanUp。⑤选择给端点2产生 BULK Read和Write的代码, 向导会自动产生一套对端点2进行读、写的代码。⑥设置驱动程序的属性,采用WDM接口;在选取读写方式时应遵循一条原则:需要快速传送大量数据时,用 Direct I/O,反之用 Buffer I/O,本设计数据量不大,故选用Buffer I/O;由于无特殊的电源需求,故选用系统默认的Manage Power For This Device。⑦增加IOCTL接口,在其生成的代码框架中加入自己的操作,以实现一个完整的USB 设备驱动程序。最后就生成了一个 WDM 型的 USB 设备驱动程序框架和一个测试该驱动程序的测试程序大体框架。然后在其中添加需要的功能代码。

  通过DriveStudio初步建立一个驱动程序框架后,我们只要修改TESTFIRMDevice.h和TESTFIRMDevice.cpp就可以了,修改完毕后,可以发现使用DriveStudio向导生成的USB设备驱动程序,不仅不需要对底层的硬件进行编程,甚至可以忽略与硬件控制紧密相关的复杂的Windows数据结构(如,URB、IPR)、API函数(DriveEntry()、IoCreateDevice()、AddDevice())的使用。

  用DriveWizard创建USB框架程序自动生成的两个工程(Project)文件:TESTFIRM驱动程序工程和Test_TESTFIRM应用程序工程,将光标定位在其中一个工程上之后,单击右键,选择“set as Acnve Pmiect”即可设置该工程为当前活动工程。对于驱动程序编译,不用进行任何设置,单击Build图标即可生成USB驱动程序TESTFIRM.sys文件。

  3.3 通信程序

  因为DriveStudio已经替我们把核心驱动程序基本开发完了,在本设计中,只要掌握WriteFile和ReadFile两个函数的使用就可以进行简单的USB通信了。由于DriveStudio所用的类库是对DDK函数一定程度的封装,必须在 VB、VC++等软件开发环境中编译,创建自己的库文件,所以很容易为程序增加了图形界面,使用户操作更加方便。本设计测试软件流程如图3所示。

 图3 测试软件主流程图

  当USB设备与PC通信时,USB设备是从设备,PC是主设备。PC机通过检测USB总线数据端电平判断是否接入或拔出USB设备。PC检测到USB设备后,调用USB设备函数。如果设备被正确打开,软件开启监听USB设备线程,以20ms周期轮询USB接收数据接口。一旦接收到数据,数据就被分析并且回显到界面上,直到线程被中断。

  4 结论

  1553B总线是当前飞机系统中广泛应用的总线类型,将它与USB总线融合起来具十分重要的实际意义。在开发过程中,利用DriveStudio与DDK配合进行开发USB驱动程序,大大提高了开发的效率。本设计在实际设备测试中,板卡可以稳定工作,测试软件工作正常,满足项目设计要求。

关键字:通用串行总线  现场可编程门阵列  1553B总线 引用地址:基于USB接口1553B总线设备检测系统设计

上一篇:基于单片机的TM卡水表控制系统设计
下一篇:基于STM32的智能电机保护器设计

推荐阅读最新更新时间:2024-03-16 12:27

65nm FPGA应用高峰尚需两年,功耗问题成竞争热点
在Altera和赛灵思公司两大FPGA巨头激烈竞争的推动下,人们似乎已经看到了65nm FPGA时代的来临:赛灵思在今年3月的Globalpress 2006全球电子峰会上率先推出了采用65nm工艺的Virtex-5原型样片,Altera则于今年5月实现了用于进行最终测试的TC-8芯片的流片。而这一切距离英特尔开始付运采用65nm工艺的处理器也不过只有半年左右的时间。但是,千万不要以为这种先进工艺的FPGA很快就会像潮水一样涌来,Altera公司亚太区市场总监梁乐观近日就表示,65nm工艺的FPGA器件应用高峰期要到2008年才会出现。 “90nm FPAG产品的应用高峰期还未来临,其产品周期至少需要3~4年。”梁乐观指出,“这
[焦点新闻]
TI FPGA 扩展板可体验Stellaris MCU 的接口功能
日前,德州仪器 (TI) 宣布推出专用于 DK-LM3S9B96 开发套件的新型 Stellaris FPGA 扩展板,可显着加速开发低成本安全接入控制系统及其它需要高速外部处理单元接口的应用。这款全新电路板使开发人员能够轻松评估 Stellaris 微处理器 (MCU) 高灵活性外设接口 (EPI) 的高带宽机器对机器 (M2M) 并行接口功能。EPI 的 M2M 模式可支持高达 32 位的数据宽度以及高达每秒 150 MB 的数据速率,专用于帮助低成本安全接入控制应用的开发人员将摄像系统或低分辨率视频与 Stellaris MCU 接口相连,以为经处理的编码影像提供高性价比的以太网通信功能。在上述系统中,专用的视频处理任
[单片机]
通用串行总线USB)设备的驱动
    摘要: 从问题的由来、类驱动程序、通信协议、描述符、驱动开发等对USB的驱动进行分析和讨论,提出USB设备使用操作系统嵌入的通用类驱动程序成为趋势。     关键词: USB 类驱动程序 人工接口设备(HID) Windows驱动程序模型(WDM) 最初设计USB(Universal Serial Bus)这种外设总线的目的之一就是为了便于使用,这是计算机发展的产物。外设总线最重要的就是操作系统对外设的自动识别、配置,实现热插拔,即插即用。本文试图以人工接口设备(Human interface device,简称HID)为主,从问题的由来、类驱动程序、通信协议、描述符、驱动开发等几个方面来探
[应用]
使用STM32的USB模块中后对USB缓冲区的认识
最近在使用STM32的USB模块开发个项目,还以为挺简单,结果搞了快两天才把USB的包缓冲区的访问搞定,在此做个小总结吧。 STM32的USB模块包缓冲区有512B,但是在STM32的参考手册中的存储器映像中却表明0x40006000-0x400063ff,整整多了512B,怎么会这样呢,同时在尝试着编程时也遇到了一个问题: 在usb_core.c文件的Setup0_Process(void)这个函数中,有这么一段: uint16_t offset = 1; if (pInformation- ControlState != PAUSE) { pInformation- USBbmRequestType = *
[单片机]
基于Simulink的数据链系统仿真及性能分析
  未来战场必是网络中心战格局下的系统一体化作战,用于制导的武器数据链是其中重要一环。通常武器数据链用于传输目标信息,信息量小,但要求信息传输必须可靠,同时将来战场通信处于复杂的电磁环境中,要求武器数据链必须具备低截获、抗干扰性能。基于此,目前的武器数据链通常选用扩频技术进行信息传送。       1扩频系统原理      扩展频谱(Spread Spectrum)技术是将基带信号的频谱扩展至较宽的频带上,然后再进行传输的一种宽带信号传输方法,它将要发送的制导信息或导弹回传信息用伪随机序列扩展到一个合适的频带上,即将原始信息的能量在频带上进行扩展,从而降低了信号被发现的危险,增加了敌方干扰的难度(需要干扰的范围变大了)。     
[嵌入式]
基于Simulink的数据链系统仿真及性能分析
ARM7与FPGA在工控和故障检测中的应用
工业控制中往往需要完成多通道故障检测及多通道命令控制(这种多任务设置非常普遍),单独的CPU芯片由于其外部控制接口数量有限而难以直接完成多路检控任务,故利用ARM芯片与FPGA相结合来扩展检控通道是一个非常好的选择。这里介绍用Atmel公司ARM7处理器(AT91FR40162)和ALTERA公司的低成本FPGA芯片(cyclone2)结合使用完成多通道检控任务的一种实现方法。 各部分功能简介 图1为此系统的结构连接框图。如图所示,ARM芯片与FPGA芯片之间通过数据总线、地址总线及读写控制线相连,而与终端PC则通过串口通信;FPGA与目标设备通过命令控制总线和故障检测总线相连。 图1 系统结构框图 1 故障检测和
[单片机]
ARM7与<font color='red'>FPGA</font>在工控和故障检测中的应用
STM32 USB SD读卡器(SDIO)
这次是做一个SD卡的USB读卡器的功能,我们就在上次NAND Flash模拟出的U盘的工程上修改了,这样的话只要修改一小部分了。 工程的绝大部分不需要修改,只要将fsmc_nand.c文件移除工程,添加上官方的关于SDIO的SD卡的驱动代码文件stm32_eval_sdio_sd.c,我讨厌出现eval,所以将该文件直接改为sdio_sdcard.c。同时,既然我们使用SDIO来驱动SD卡,所以在外设库文件组里要添加stm32_sdio.c文件,否则会出现很多未定错误。 STM32 USB SD读卡器(SDIO) 我们接下去修改的就只有mass_mal.c这个文件了。更NAND Flash工程一样,我们改成简洁点: uint3
[单片机]
Altera实现了28-nm FPGA与PCIe Gen3交换机的互操作
   Altera公司日前宣布,成功实现28-nm Stratix® V GX FPGA与PLX®技术公司ExpressLane™ PCI Express® (PCIe®) Gen3的互操作。Stratix V GX FPGA具有硬核PCIe Gen3 IP模块,是目前发售的能够与PCIe Gen3交换机实现互操作的唯一一款FPGA。 Altera元器件市场资深总监Patrick Dorsey评论说:“业界性能最好的28-nm FPGA与业界第一款PCIe Gen3交换机实现互操作后,用户能够将精力集中在设计问题上,而不是器件之间电信号兼容性的验证问题,因此,显著缩短了开发时间。在高性能前沿应用中,Stratix V中的硬核PCIe
[工业控制]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • ARM裸机篇--按键中断
    先看看GPOI的输入实验:按键电路图:GPF1管教的功能:EINT1要使用GPF1作为EINT1的功能时,只要将GPFCON的3:2位配置成10就可以了!GPF1先配 ...
  • 网上下的--ARM入门笔记
    简单的介绍打今天起菜鸟的ARM笔记算是开张了,也算给我的这些笔记找个存的地方。为什么要发布出来?也许是大家感兴趣的,其实这些笔记之所 ...
  • 学习ARM开发(23)
    三个任务准备与运行结果下来看看创建任务和任运的栈空间怎么样的,以及运行输出。Made in china by UCSDN(caijunsheng)Lichee 1 0 0 ...
  • 学习ARM开发(22)
    关闭中断与打开中断中断是一种高效的对话机制,但有时并不想程序运行的过程中中断运行,比如正在打印东西,但程序突然中断了,又让另外一个 ...
  • 学习ARM开发(21)
    先要声明任务指针,因为后面需要使用。 任务指针 volatile TASK_TCB* volatile g_pCurrentTask = NULL;volatile TASK_TCB* vol ...
  • 学习ARM开发(20)
  • 学习ARM开发(19)
  • 学习ARM开发(14)
  • 学习ARM开发(15)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved