基于DSP平台的USB接口设计

发布者:SereneMeadow7最新更新时间:2011-01-04 来源: 单片机与嵌入式系统应用关键字:USB  DSP  PDIUSBD12  图像传输  接口设计 手机看文章 扫描二维码
随时随地手机看文章

  引言

  USB接口(Universal Serial Bus)是一种通用的高速串行接口。它最主要的特点是它的高速传输特性。USB1.1理论速度极限可以达到12Mb/s,USB2.0可达到 480Mb/s。这样,它可以很好解决大数据量的数据在嵌入式系统与PC机之间的互传问题;同时,它支持热插拔,并且最多同时支持127个外设,非常适合嵌入式系统的应用。

  本次设计是在一个已有的DSP图像采集嵌入式系统的基础上,为它配接上一个USB1.1的接口,以达到DSP图像采集系统高速地将图像数据回传到PC机中的目的。设计的要求主要有:

  ①在原有平台提供的接口基础上,加入一个低成本、高速度的USB接口;

  ②通过USB接口,实现PC机对DSP图像采集系统的操作与控制;

  ③实现图像数据在DSP摄像系统与PC机之间高速的双向传输。

  基于以上几点可以看出,本方案最主要的特点是成本低廉且传输速度高。

  1 硬件方案选择与设计

  1.1 方案选择

  对于基于DSP平台的USB接口设计,经过综合考虑了几种方案之后决定,采用一个不带MCU内核的USB接口芯片PDIUSBD12(成本非常低,一片PDIUSBD12的价格仅为20元),再加上简单的外围电路和时序调整电路。

  这种芯片仅仅完成USB底层的数据链路级交换,并提供给本地微控制器一个并行的接口,但是它并不完成协议层的工作。协议层的工作需要对微控制器编程,控制USB接口芯片来实现USB协议。所以,开发难度相对来说大一些,要做的编程工作也多一点。但是这套方案的成本非常低,而且由于直接用DSP作为微控制器,没有原单片机的瓶颈限制,所以可以实现很高的数据传输速率。该系统的原理框图如图1所示。

系统的原理框图

  由于PDIUSBD12的并行接口时序较慢,只能达到2MB/s。这个速度相对于DSP来说比较低,而且有些地方不是简单地在程序中加入延时就可以调整,所以需要一个时序调整电路来完成它们之间的配合。

  1.2 PDIUSBD12芯片

  PDIUSBD12芯片是由Philips公司推出的一种USB1.1接口芯片。它可以工作在5V或者3.3V的工作电压下;具有8位数据总线,且有完全自治的DMA传输操作。它还具有可控制的软件连接(SoftConnect)功能,可以保证在微控制器可靠完成初始化之后再连接上USB总线。另外,它还有一个LED驱动脚,可以外接LED来监测USB的枚举过程和数据传输过程。当USB接口枚举完成,并且成功配置以后,LED将会一直点亮;而在枚举过程以及USB数据通信过程中,LED只是有节奏地闪烁。

  PDIUSBD12只占用微控制器的两个地址资源。也就是说,它只有一根地址线。其中一个地址用来向芯片中写命令,另外一个地址用来向燕片中写数据或者从芯片中读取数据。

  PDIUSBD12一共有三组端点:端点0完成控制传输;端点1可以配置成中断传输;端点2是主要的数据传输端点。它有64B的缓冲区,如果加上它的双缓冲机制,就有128B的缓冲区;它可以配置成批量传输模式,或者同步传输模式。

  总的来说,PDIUSBD12是一款性能优异,价格相对软低的USB接口芯片。

  1.3 时序芯片

  为了降低成本、简化电路,本方案不使用DMA传输方式,而以TI公司的TMS320C2XX作为微控制器(使用20MHz晶振)。它的并口速度非常高,远远高于PDIUSBD12所要求的最高限制2MB/s。此处是硬件设计最关键的地方。

  经过详细的时序分析发现,大部分问题可以通过在DSP固件设计的加入延时,或者设置DSP的WSGR寄存器来解决。但是有一个问题,必须在硬件上加以解决。图2是DSP(TMS320C2XX)的写时序。

DSP

  图2中,参数th(W-D)是指在WE信号变高(无效)以后,所写的数据将仍然保持有效的时间。这个值最小为3ns,最大为14ns,所以所写的数据在WE信号无效以后还会维持有效,大约3~14ns(实际的延时介于这两个值之间)。

  图3是PDIUSBD12所要求的写时序。图中,参量tWDH是与DSP (TMS320C2XX)参量th(W-D)相对应的另外一个参量。这个参量反映了PDIUSBD12要求微控制器在向其中写数据时,所写的数据在WR信号无效之后,要继续保持有效的时间。这个参量最小值为10ns。也就是说,PDIUSBD12要求所写的数据最少要保持有效10ns(在WR无效之后)。

PDIUSBD12所要求的写时序

  由此可以看出,DSP(TMS320C2XX)的写时序不能可靠地保证满足 PDIUSBD12的要求,而且这个问题无法通过软件加延时的方法来解决,必须通过硬件来处理。经过分析对比,最后决定采用一个很简单但是后来事实证明非常有效的方法来调整它们之间的时序。那就是在DSP(TMS320C2XX)与PDIUSBD12的总线之间加一个双向缓冲器-74LS245。这个芯片可以在它们的时序之间引入一个延时。虽然这个延时并不可靠、但是由于DSP(TMS320C2XX)本身会在WR无效后,继续保持数据有效一段时间(前面已讲过),这要仅仅需要将延时适当延长一点就可以了。74LS245所造成的延时典型值为15ns,最小也为8ns。这样,加上原来DSP写时序的延时,就可以满足PDIUSBD12所要求的写时序了。

  另外由于加入74LS245所造成的对其它接口时序的影响,可以通过设置DSP(TMS320C2XX)的WSGR寄存器来消除,所以这个方案是可行的。(事实上,后来制造好的电路也证明了这个方案是完全可行的)

  对其余时序上的配合,经过仔细的计算与核对证明,也是完全可行的。在硬件上,哂方案还采用了一片GAL(16V8)来实现对PDIUSBD12芯片的片选,以及实现对它的软件和手动复位。硬件总体框图如图4所示。

  2 软件设计

  2.1 固件设计

  由于采用的是不带MCU内核的USB接口芯片,所以关于USB1.1协议规范的实现都必须靠DSP(TMS320C2XX)控制PDIUSBD12芯片来完成。固件的主要设计任务是:在DSP(TMS320C2XX)的平台上编写程序,以完成 USB1.1规范所要求的标准请求及用户根据产品需要自己定义的请求。

  为了不影响程序的执行效率,本方案采用中断方式完成固件的编写;同时,为了保证程序的模块化及良好的可移植性,在设计中采用分层结构进行固件的编写,如图5所示。

固件设计

  最下层是硬件接口层,完成硬件上PDIUSBD12与DSP(TMS320C2XX)的对接。主要是DSP(TMS320C2XX)向PDIUSBD12中写入数据或者命令,以及从中读取数据。

  中间层主要有两个模块,用来完成PDIUSBD12的命令接口和中断处理子程序。命令接口是指按照PDIUSBD12的命令格式,完成DSP对它的控制。它的基本命令格式是:DSP先向其中的命令地址写入某一条命令,接着从它的数据地址写入或者读出一系列的数据。中断处理子程序是判断中断的产生源,然后跳转到相应的处理子程序。这些子程序不做过多的处理,而仅仅是将命令数据读出然后置标志位,或者是将某些数据送出。

  最上层是主循环程序,以及对于USB1.1标准协议请求(这些请求主要是在USB1.1协议规范的第九章中定义的)和用户自定义请求的处理程序。主循环的主要工作是检查标志位。如果标志位被置位,则调用处理子程序,判断是标准请求还是用户自定义请求,然后调用相应的处理程序加以处理,完成请求。

  这样分层的好处是:主循环程序在检查标志位以外的时间可以进行其它工作,提高固件的运行效率。

  编程过程中,由于涉及了一些严格的接口时序配合问题,所以,整个固件的编写工作全部采用DSP(TMS320C2XX)的汇编语言;用的是CC2000编程开发工具。

  2.2 PC机软件的设计

  PC机的驱动程序由Philips公司提供。然后,用VC++6.0,通过调用API函数,编写PC的应用程序。这样即可实现PC机对DSP(TMS320C2XX)摄像系统的摄像控制以及图像的传输。

  主要使用的API函数是DeviceIOControl()、ReadFile()、 WriteFile()。其中DeviceIOControl()用于PC(主机)向DSP图像采集系统发送请求;ReadFile()和 WriteFile()分别用于从图像采集系统中读出数据以及向图像采集系统中写入数据。

  在设计过程中必须注意的问题是:由于USB接口是主-从方式的接口,它的一切传输过程都必须通过主机向外设发送请求后才可以开始,所以在使用ReadFile()、WriteFile()读写数据之前,必须先通过 DeviceIOControl()向图像采集系统发送请求。

  3 结果及分析

  设计方案完成后,在最后的测试当中,通过USB1.1接口,PC机与DSP系统的通信速率最高达到了580KB/s(4.6Mb/s)以上。这个速率指的是有效数据传输速率,不包括数据传输联络的头信息部分,所以这个速率还是比较令人满意的。现在,传输一张幅面为352×288像素的黑白图片(大小为99KB),耗时不到1s。如果实现动态的拍摄及显示,那么,整个系统每秒可以拍摄并完成显示 3~4幅不经压缩的幅画为352×288像素大小的黑白图片。

  测试结果表明,该系统运行可靠(已将程序烧写进片内Flash中),各项性能指标都已达到了最初的设计要求,能够很好地实现图像数据在PC机与DSP之间高速的双向传输。并且,这套USB接口方案只采用了1片PDIUSBD12接口芯片和1片 74LS245,器件成本只有20元左右,这个成本是比较低的。同时,由于采用了DSP作为控制器,所以它的通信速率可以很高;因此,可以说本方案达到了低成本,高速率的USB1.1接口设计要求。

关键字:USB  DSP  PDIUSBD12  图像传输  接口设计 引用地址:基于DSP平台的USB接口设计

上一篇:基于ARM7和CPLD的数字公交站亭系统设计
下一篇:用DSP实现增量式光电编码器的细分

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

USB入门系列之四 —— USB的线缆以及插头、插座
USB是一个标准的协议,因此对线缆、插头、插座等有严格的规范要求。     在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的 叫做标准的USB接头吧。后来OTG出现了,又增加了miniUSB接头。而miniUSB接头 则有5条线,多了一条ID线,用来标识身份用的。标准USB口只有A型和B型。其中每 一型又分为插头和插座,例如A型插头,A型插座等。我们平常电脑上用的那种插 座叫做A型USB插座,而相应的插头,叫做A型插头,例如U盘上那种。而像打印机 上面那个插座,则是B型插座(比较四方的,没电脑上面那种扁),相应的插头,就 是B型插头。也许你见过一头方一头扁的USB延长线,没错了,扁的那头就叫做A型 插头,
[嵌入式]
一种基于PCI总线和DSP技术的虚拟仪器设计
传统的虚拟仪器由一块基于PCI总线的直接利用A/D和D/A芯片构成的数据采集板卡和相应的软件组成,但随着计算机网络技术的迅速发展,越来越多的数据需要由计算机处理、存储和传输,由于通用计算机本身的特点,它们通常不适于进行实时性要求很高的数字信号处理,因此这种虚拟仪器不能满足现实应用对数据实时处理能力、数据传输能力以及数据管理能力所提出的越来越高的要求。 与此同时,随着数字信号处理器(DSP)性价比的不断提高,其应用领域飞速扩展,从而使基于PCI总线和DSP技术的新型虚拟仪器应运而生。 系统的基本框架 笔者设计的基于PCI总线和DSP技术的虚拟仪器的基本框架如图1所示。 整个系统是基于模块化的设计理念来实现的,该系统
[嵌入式]
STM32的USB设计-单片机程序篇
  首先,我们来看看usb的工作过程。   当usb设备接入到主机时,主机开始枚举usb设备,并向usb设备发出指令要求获取usb设备的相关描述信息,其中包括设备描述(device descriptor)、配置描述(configuration descriptor)、接口描述(interface descriptor)、端点描述(endpoint descriptor)等。这些信息是通过端点0(endpoint 0)传送到主机的。获取各种描述信息后,操作系统会为其配置相应的资源。这样主机就可以与设备之间进行通信了。   usb通讯有四种通讯方式控制(control)、中断(interrupt)、批量(bulk)和同步( sy
[单片机]
SolderStar全新的Neptune SL USB在Nepcon China 2007展会上登场
SolderStar公司于2007年4月24至27日在上海举行的Nepcon China 2007展会上 (展位编号 2G05),展出了全新的微型数据记录器Neptune SL USB,全面增强其炉温曲线测量工具的性能和功能,包括SolderStar PRO和WaveShuttle Pro。 全新的Neptune SL USB拥有业界最小的外形,仅为100mm x 50mm x 9mm,并采用独特的Smartlink (智能连接) 连接系统,为回流焊、波峰焊和连续炉温曲线测量提供了灵活的解决方案。 全新的数据记录器是业界首个直接设有USB连接的系统。其高速USB可轻易安装在现代化的 PC上,从而缩短数据下载时间,并为内部高温电
[新品]
ADI公司助力UTAS医疗设备提高护理质量
很少有技术开发人员会面临当今医疗设备制造商承担的如此巨大压力。设备性能或可靠性的一点点失误即意味着生与死之别,没有出错的余地。因此,医疗设备开发人员在选择系统关键元件时,遵循数字电子工业中某些最严格的标准——只有最好的元件才能胜任这一任务。 UTAS是一家病人监护和诊断用医疗设备提供商,主要供应在医疗机构和救助现场使用的各种心电图仪、病人监护仪、脉搏血氧饱和度仪和其它产品。医疗人员可以借助UTAS设备清晰地查看病人数据,使他们做出更及时、更有根据的病人护理决策。为了维护公司的声誉,保证交付的每个系统的质量,UTAS公司更是借助ADI公司的技术实力,确保全系列产品具有高性能的信号处理和鲁棒性能——UTAS最新推出的便携
[医疗电子]
STM32 USB 使用芯片内部flash模拟U盘
这次是实现一个使用STM32内部的flash模拟一个U盘。我使用的STM32芯片是STM32F103ZE,该芯片有512K的内部flash,本次工程,我准备用最后的400K空间来模拟一个U盘。本次的工程在之前用NAND或SD卡模拟U盘的工程基础上进行修改。 首次要做的是在外设库组中添加stm32f10x_flash.c文件,因为涉及到内部flash,所以必须添加此文件。接下去,需要修改的文件只有mass_mal.c和memory.c两个了。 先来讲讲memory.c,这个文件修改量很小。在函数的前面,我们可以看到有个:uint32_t Data_Buffer ;数组的定义,该数组的数组元素个数,跟大家所使用的存储器的块大小
[单片机]
iPhone 4充电器对比USB和电源插座谁更快
或许大家都有明显感觉到,用USB给iPhone充电与直接用充电器连接电源插座这两种方式采用的充电时间都有所不同。于是就有科技网站对iPhone 4的两种充电方式就充电时间进行了对比。   从图中我们看出,很显然,用USB给iPhone 4充满点所用的时间要比用电源充满电的时间长。而且二者差距非常之大,竟相差30分钟之久。也就是说,用USB充电需要多花23%的时间才能充满电。 另外,如果我们的iPhone已经完全没有电,我们都知道要给iPhone充入一点电量才能开机。那到底要充多久的电量呢?经过实践对比发现,使用电源插座充电,我们需要给iPhone 4充3分11秒的电才能开机,而使用USB,我们需要多花两分钟,也就是需要花4分
[手机便携]
基于USB总线和89C51单片机的数据采集系统设计
在工业生产和科学技术研究过程的各行业中,常常要对各种数据进行采集,现在常用的采集方式是在PC机或工控机内安装数据采集卡,如A/D卡及RS-422卡、RS-485卡。采集卡不仅安装麻烦,易受机箱内环境的影响,而且由于受计算机插槽数量和地址、中断资源的限制,不可能挂接很多设备。而通用串行总线(Universal Serial Bus,简称USB)的出现能很好地解决以上这些冲突。我们利用89C51单片机设计了基于USB总线的数据采集设备,并可与MAX485结合起来实现数据的远程采集。 系统硬件设计 USB数据采集系统硬件模块主要由串行A/D转换器、89C51芯片、USB接口芯片和多路模拟开关等组成。硬件总体结构框图如图1所示。
[应用]
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

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

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