基于USB的ARINC429总线接口模块设计

发布者:心连心意最新更新时间:2011-08-04 关键字:USB  ARINC429总线  接口模块 手机看文章 扫描二维码
随时随地手机看文章
    引言

ARINC429总线由美国航天无线电设备公司所资助,是广泛应用于当前航空电子设备中的一种数据总线传输标准。与传统的航空电子设备间的模拟传输相比,ARINC429总线具有抗干扰能力强、传输精度高、传输线路少以及成本低等优点。ARINC数据总线协议规定一个数据由32位组成,采用双极性归零码,以12.5Kb/s或100Kb/s码速率传输。本设计利用USB即插即用、FPGA可灵活配置等特点,设计了基于USB总线的ARINC429总线接口模块。

接口模块总体设计结构

接口模块总体设计包括硬件设计和软件设计两部分。硬件设计由USB接口芯片,FPGA和调制/解调电路三部分组成。硬件设计整体框图如图1所示。USB接口芯片采用CYPRESS公司的USB2.0接口芯片CY68013,主要完成PC机和FPGA之间的数据传输,起到接口模块的桥梁作用。FPGA采用ALTERA公司的CycloneⅡ系列EP2C5Q208,主要负责将32位429数据字按照ARINC429数据总线协议串行输出,当检测到ARINC429总线上的数据时,将数据组装成32位429数据字发送给PC机。调制/解调电路主要负责将FPGA输出的LVTTL电平调制为满足ARINC429总线电气特性的电平(即高电平为+10V,低电平为-10V,0V为自身时钟脉冲),并将输入的ARINC429电平解调为FPGA可接收的LVTTL电平。

软件设计主要包括USB-ARINC仪器驱动程序,USB设备驱动程序以及底层USB固件程序的设计。软件设计整体框图如图2所示。USB-ARINC仪器驱动程序主要将应用程序与驱动程序之间的通信协议以及接口模块的硬件控制进行再次封装,并为应用程序提供接口,即API函数。USB设备驱动程序主要负责PC机与接口模块之间的数据传输。USB固件程序主要负责发送接口模块的控制命令,32位429总线数据字以及接收到32位429数据字后的中断处理。

接口模块硬件设计

接口模块硬件部分由USB接口芯片,FPGA和调制/解调电路三部分组成。下面以一路429设备为例来介绍接口模块的发送和接收部分的硬件设计。

发送部分硬件设计

发送部分硬件设计框图如图3所示。发送部分主要负责将ARINC429数据字按照设置的发送模式传输给ARINC429总线。

USB接口芯片CY68013负责接收PC机传来的32位429数据字,并传输给PC机所指定的429总线设备。由于要传输给多路429总线设备,所以PC机还必须给每一个429数据字加上一个设备通道号。图3中接口芯片内的Buffer用来存储要发送的429数据字。当8051处理器检测到Buffer中有数据后,先将设备通道号写给FPGA中发送控制模块,然后再将429数据字写到FPGA的RAM中。

由于在测试ARINC429电子设备中,时常要求多路ARINC429总线同时传输数据。为了实现接口模块多路ARINC429总线同时工作,本设计采用了一个全局start/stop信号。当PC机传下start信号后,FPGA中各路的发送控制模块开始将RAM中数据取出并传输给移位寄存器。移位寄存器再将并行输入的32位429数据字串行输出给外围的发送调制电路。FPGA中时钟控制模块用来控制发送ARINC429数据字的速率。

因为FPGA输出信号是LVTTL电平,并不满足ARINC429数据总线的电气特性,所以必须加上发送调制电路对FPGA输出的LVTTL A和LVTTL B两路信号进行调制,以满足ARINC429数据总线的电气特性。

接收部分硬件设计

接收部分硬件设计框图如图4所示。接收部分主要作用是检测ARINC429总线上是否有数据,并当有数据时将并行的32位429数据字组装成并行的4个字节数据发送给PC机。

首先,PC机设置接收部分的传输速率,即设置FPGA中时钟控制模块输出的读控制时钟信号r_clk,它以16倍于传输速率进行采样。当LVTTL A和LVTTL B任一路为高电平,即为有效数据的开始。在FPGA中,同步字头接收模块负责这部分工作。当有效数据开始后,接收32个串行输入数据,并将数据发送给接收数据检测模块,同时data_en信号有效。接收数据检测模块检测到data_en信号,锁存32位429数据字。在对数据进行奇校验无误后,向USB接口芯片发送一个中断信号。

当USB接口芯片响应中断信号后,先判断是哪一路ARINC429总线数据,并将此路总线的通道号写入芯片的Buffer中。USB接口芯片再发送读信号读取FPGA中寄存器的429数据字,共4个字节。本设计采用双缓冲Buffer方式来存储接收到的429数据字。这种设计方式能有效提高接口模块传输数据的稳定性和准确性。

接收解调电路主要负责将ARINC429总线输入的电平解调为FPGA可接收的LVTTL电平。

接口模块软件设计

接口模块软件由USB-ARINC429仪器驱动程序、USB驱动程序和USB固件程序等三部分组成。USB-ARINC429仪器驱动程序主要将应用程序与驱动程序之间的通讯协议以及应用程序与硬件之间的数据传输命令进行封装。仪器驱动程序在Visual C++6.0下开发,可以提供给应用程序显式或隐式调用。在本文中不详细介绍仪器驱动程序的开发过程。下面将介绍USB固件程序及驱动程序的设计。

USB固件程序设计

USB接口芯片是底层硬件的基础,是接口模块与PC机通信的硬件桥梁,良好的USB固件程序设计是接口模块能够稳定可靠工作的保证。USB固件程序设计结构如图5所示。

USB固件程序设计由主程序(Main.c),写数据程序(Function.c),读数据中断服务子程序(Isq)以及控制传输(Vendor)等四部分组成。

主程序Main.c主要负责USB接口芯片的初始化工作。主要有端口的初始化、中断的初始化、USB设备的列举和重列举等工作。Main.c的设计结构如图6所示。

写数据程序Function.c采用了USB接口芯片CY68013数据总线操作方式,将图3 Buffer中的ARINC429数据字写到FPGA的RAM中。

读数据中断服务子程序(Isq)主要负责接口模块读取ARINC429总线数据,并根据USB接口芯片的中断引脚来标记429数据字的通道号。

控制传输(Vendor)主要是灵活地控制接口模块的发送模式。接口模块共有单次发送、多次发送以及循环发送等三种发送模式。三种发送模式可以满足多种ARINC429数据发送需要。其中,多次发送模式和循环发送模式可以设定ARINC429数据字与数据字之间的字间隔,并可以设定一组ARINC429数据字的循环周期。这种设计方式体现了接口模块的灵活方便特性。

USB设备驱动程序设计

USB设备驱动程序是利用Compuware公司的DriverStudio 3.2开发的。DriverStudio 3.2主要用来开发Windows 2000和Windows XP的驱动程序。利用这个工具的开发向导,可以生成一个USB驱动程序框架。USB驱动程序设计简化结构如图7所示。

USB设备驱动程序基本由五部分组成,图4中显示了四部分。入口例程(DriverEntry Routine)、即插即用例程(PnP Routine)和卸载例程(Unload Routine)主要负责接口模块的内存资源分配和释放等工作。下面将详细介绍与接口模块数据传输关系紧密的分发例程(Distribute Routine)。

分发例程主要由Create,Read,Write,IOCTL以及Close等五部分函数组成。Close函数主要负责关闭设备句柄,调用卸载例程,并释放设备内存资源(这个函数在图中并未列出)。其它四部分与上层应用程序的接口函数分别为CreateFile,ReadFile,WriteFile和DeviceIoControl。

Create函数主要负责获取对接口模块进行操作的程序句柄,该句柄在即插即用例程中指定。

Read函数负责读ARINC429数据。当应用程序通过调用ReadFile发一个IRP到驱动程序时,驱动程序先检测读取数据长度是否大于已设定的端点传输最大字节。如大于,则仅分配长度为最大字节的内存空间;如小于或等于,则按该数据长度分配内存区。然后USB设备驱动程序再将此IRP向下传递给下层驱动程序,最后由底层驱动程序将ARINC429数据写到已分配的内存空间供应用程序读取,并返回一个函数值和已读取多少字节的变量给应用程序判断。Write函数操作与Read函数类似,只是传输方向相反。

IOCTL函数负责接口模块的控制命令传输。当需要指定接口模块发送模式或循环发送时的字间隔和帧周期时,应用程序通过调用DeviceIoControl发一个IRP给驱动程序。驱动程序收到此IRP时,将通过USB控制管道把接口模块控制命令传输给USB接口芯片。

结论

经测试表明,接口模块与现在市场上出售的多种429总线接口设备进行了多路429总线数据传输。本设计利用USB即插即用、FPGA可配置性等特点,方便了ARINC429总线与计算机之间的数据传输,并提高了接口模块数据传输的灵活性,这在对ARINC429电子设备的测试中有较高的实用价值。

关键字:USB  ARINC429总线  接口模块 引用地址:基于USB的ARINC429总线接口模块设计

上一篇:基于FPGA和AD1836的I2S接口设计
下一篇:SFI-4接口的数据处理

推荐阅读最新更新时间:2024-05-02 21:31

STM32开发笔记35:USB FS的枚举方法
单片机型号:STM32F401 FS是Full Speed的意思,指全速USB设备,在电路设计时,通过在DP接1.5K上拉电阻到电源的方法告知主机为全速USB设备,但是在具体使用时,还有问题存在,就是当单片机复位后,主机端虽然还能辨认当前USB设备,但是不能够直接使用,其原因在于USB设备重新启动后,需要完成一个枚举过程,以通知主机。 枚举的具体电路如下图所示,其原理很简单,系统上电后将DE引脚拉高,待USB初始化完毕后,将DE引脚拉低即可。 具体的头文件程序代码如下,建立DE引脚类,并在CUSB类中具体声明。 #ifndef USB_H_ #define USB_H_ #ifdef __cp
[单片机]
STM32开发笔记35:<font color='red'>USB</font> FS的枚举方法
基于USB的pH值控制器数据通讯的实现
1.引言:    在糖提炼过程中,糖厂澄清工段的 PH值控制对糖的纯度和生产成本起着决定性的作用。基于 ATMEL公司的 AT91M55800 的嵌入式控制器就是自动检测控制澄清工段的 pH值,克服了以往手工操作 pH值波动较大的缺点。 本文介绍的是 pH值控制器和上位机在现场的 pH值数据传输的实现,采用 USB通讯方式,主要因为 USB具有以下优点:    用户使用方便。设备自动识别,自动安装驱动程序和配置。 应用范围广。传输速率快,总线支持同步和异步传输方式。 灵活。支持不同速率的设备。 稳定。协议中包含错误检测,支持热插拔。 易于与 PC接口。支持即插即用。 成本低廉。 选用的
[嵌入式]
USB OTG技术及其在存储测试中的应用
  存储测试是在对被测对象无影响或影响在允许范围的条件下,在被测体或测试现场放置微型数据采集与存储测试仪,现场实时完成信息的快速采集与记忆,事后回收并由计算机处理和再现测试信息的一种动态测试技术。存储测试的主要技术特点是现场实时快速完成动态数据采集与存储记忆,特别是在多种恶劣环境和紧凑设计条件下完成动态参数测试,事后回收处理再现。传统的存储测试仪存在着如下不足:   (1)存储介质置于仪器内部,回读数据必须将整个仪器伺收。由于存储测试所面临的测试环境复杂,往往加装了复杂、笨重的防护体或置于掩体中,给仪器的拆卸回收造成了困难。而户外回读分析数据往往受条件所限难以续施。 (2)随着存储测试技术的发展,存储测试所面临的对豫和环境日趋复杂
[嵌入式]
基于音频接口的数据传输模块设计
    移动终端操作系统应用软件功能强大,智能手机应用已超出通话的原始功能,各种移动应用的开发更充分体现了智能化、开放式的趋势。在移动应用中,如果要与外部设备交换信息,要通过专用的数据接口,但手机厂商的数据接口各不相同,外部设备难以兼顾,一些厂家限制数据接口的开放,或收取高昂的使用费,或对外设生产方有严格的资质要求,种种限制,制约了智能终端与外部设备的直接交流。 1 数据传输模块的结构设计     接口是智能终端系统与外界的连接电路,具有如下功能:(1)寻址能力。对送来的片选信号进行识别。(2)输入/输出功能。根据读/写信号决定当前进行的是输入操作还是输出操作。(3)数据转换功能。并行数据与串行数据的转换或两种不同数据格式之间的转
[嵌入式]
USB-HOST实时数据采集嵌入式模块的实现
摘要:提出利用SL811HS和8位单片机实现USB-Host实时数据采集嵌入式模块。该系统的数据传输,遵守大规模存储协议和USB 1.1协议规范,可作为嵌入式设备的数据输入输出模块。它以文件的形式,与Slave端的USB移动存储器进行数据传输。 关键词:SL811HS USB-HOST 大规模存储协议 USB1.1 引言 随着数据采集系统、工控行业和嵌入式用户对移动存储的需求越来越大,传统的通过软盘、串行口(RS232/RS485)或以太网等传输数据的方式已不能满足当前数据存储和交换的需求。如何在嵌入式模块中实现USB移动存储已成为急需解决的问题。 本文提出利用SL811HS和8位单片机实现USB-HOST嵌入式模块的一
[应用]
STM32 USB DFU设备固件升级 工程讲解
说到STM32 USB的UDF,其实就是我们常说的IAP( In Application Programming )在应用编程。IAP有很多方法,我之前就用过串口IAP,网络IAP。而这里我们使用的是USB IAP,就是通过USB更新代码。所以这里有必要线了解IAP。 IAP是In Application Programming的首字母缩写,IAP是用户自己的程序在运行过程中对User Flash的部分区域进行烧写,目的是为了在产品发布后可以方便地通过预留的通信口对产品中的 固件 程序进行更新升级。 通常在用户需要实现IAP功能时,即用户程序运行中作自身的更新操作,需要在设计固件程序时编写两个项目代码,第一个项目程序不执行
[单片机]
USB Type-C的11个误解你需要了解一下
USB Type-C 和 PD 很复杂 使用可插入电源或设备的通用联接器时,协商哪个设备为哪个设备供电似乎使产品设计人员和消费者生畏。但是,产品的复杂性可以根据产品设计者的需要而有所不同。对于仅支持Type-C 的设备,一个集成电路(IC)即可用于执行此协商和联接。对于更为复杂的特性,可以实施供电协议(PD)。要实现 USB-C PD 合规性,必须遵循一系列严格的准则。产品认证之前必须接受 USB-IF 监管委员会的审核。使用认证IC供应商的固件可简化方案设计。 USB Type-C 和 PD 很贵 为了检测、连接和协商通信,从 USB 2.0 转向USB-C 好像比较昂贵。对于基本 USB-C 功能,可以使用状态机
[物联网]
<font color='red'>USB</font> Type-C的11个误解你需要了解一下
第29章 STM32F429的系统bootloader之USB DFU方式固件升级
29.1 初学者重要提示 学习本章节前,务必优先学习第28章。 本章用到的相关软件和文档下载:http://www.armbbs.cn/forum.php?mod=viewthread&tid=96573 。 软件STM32CubeProg和DfuSe都支持USB DFU,但是两个软件不能都安装使用,因为这两个软件的USB驱动不同,导致工作在系统bootloader模式的板子通过USB线接到电脑端时,只有一个软件的驱动被识别。 DfuSe是老版的USB DFU软件,不推荐大家使用了。建议使用STM32CubeProg,此软件实现了之前的DfuSe,STLINK小软件和Flashloader三合一,并且支持外部EEPRO
[单片机]
第29章 STM32F429的系统bootloader之<font color='red'>USB</font> DFU方式固件升级
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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