DSP的USB数据传输系统设计 .docx

上传人:C****o 文档编号:13052067 上传时间:2022-04-27 格式:DOCX 页数:16 大小:68.41KB
返回 下载 相关 举报
DSP的USB数据传输系统设计 .docx_第1页
第1页 / 共16页
DSP的USB数据传输系统设计 .docx_第2页
第2页 / 共16页
点击查看更多>>
资源描述

《DSP的USB数据传输系统设计 .docx》由会员分享,可在线阅读,更多相关《DSP的USB数据传输系统设计 .docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、精品名师归纳总结封面可编辑资料 - - - 欢迎下载精品名师归纳总结作者: PanHongliang仅供个人学习基于 DSP 的USB数据传输系统设计摘 要:数字信号处理器 DSP 在高速运算上有着不行比拟的优势,但数字信号处理的数据量庞大 ,需要一种特殊便利、快捷的接口实现与运算机的数据传输。在CT 图像重建系可编辑资料 - - - 欢迎下载精品名师归纳总结统设计中 ,提出一种基于 DSP 和USB 的高速数据传输方案 ,该方案接受 CYPRESS的CY7C68001作为 USB 收发把握芯片 ,并使用 TI 的高性能 DSP 芯片 TMS320C5416作为微处理器把握芯片 ,利用两者的速

2、度优势 ,通过 C 语言编写通信程序,实现了 DSP 与PC 机之间的高速数据传输 ,从而使得大量图像数据能够快速、实时的储备、处理。关键词:CT 图像重建。 DSP 。 USB 。数据传输0 引 言由于 DSP 芯片的不断进展 , 以及它处理数据速度快、处理数据量大的优势, 已经广泛应用到数字信号处理的许多领域。在CT 图像重建系统中 ,DSP 处理的数据需要上传到 PC 机进行储备、显示或进行数据分析等 , 这就产生了 PC 机和DSP 的数据传输问题。 USB总线具有传输速度高 , 以及即插即用等特点 , 得到越来越广泛的应用 , 利用 USB 总线实现 DSP和 PC 机的通信 , 从

3、而解决图像信号的实时传输问题。 Cypress 公司生产的 CY7C68001通用 USB 2. 0接口把握器是基于应用层编程的接口器件 , 使用简洁 , 开发便利。在此 , 以 TMS320C5416为例, 争辩如何使用 CY7C68001对 TMS32OC5416进行 USB 接口设计 , 实现 DSP和 PC机通信, 将 DSP处理过的图像信号实时传到运算机中。1 DSP与 USB接口的硬件设计TMS320C5416是 TI的高性能 32 位定点 DSP ,内核接受超长指令字 VL IW体系结构 , 有 8 个功能单元、 64 个 32 b通用寄存器。一个时钟周期同时执行8 条指令, 主

4、频可达 1 GHz , 处理性能高达 8 000 MIPS , 支持 8/ 16/ 32/ 64 b的数据类型。 CY7C68001用来连接微处理器或 DSP 的 DMA从装置 , 内部不含微处理器。支持高速 480 Mb/ s或全速 12 Mb/ s USB数据传输。供应USB 2.0 协议要求的全部4 种传输方式 把握传输、中断传输、批量传输和同步传输 ,可以中意用户对各种类型数据传输的需求。1. 1接口的硬件设计在该设计方案中 , CY7C68001 通过 EMIFB 与 TMS320C5416进行异步通信 , 各个引脚的连接如图 1 所示。 DSP把握 CY7C68001完成 DSP与

5、 PC 之间的异步通信。 CY7C68001的相关引脚在接口中的作用 :IN T : 说明 CY7C68001有数据将要被 读出 , 或者 有中 断大事发 生。 READY: 通知 TMS320C5416可 以对CY7C68001进行读写。 FLA GA , FLA GB , FLA GC : 反应由 FAIFOADR2 :0 选择的 FIFO 的状态。 FLA GD : 为片选信号。 SLOE 为 CY7C68001驱动数据总线。 SL RD : 并口读有效信号 , 在 SL RD 有效且同步通信时 ,FIFO指针在每个IFCL K 的上升沿递增。 PKTEND :总是高电平 , 将当前的缓

6、冲区提交给USB 。FD 15 :0 :数据总线。 FIFO 2 : 0 :供应与 TMS320C5416接口的FIFO 的址选择。图 1TMS320C5416与 CY7C68001 接口可编辑资料 - - - 欢迎下载精品名师归纳总结1. 2接口的拜望CY7C68001供应应DSP 两种软件接口 :(1) 命令接口 : 用来拜望 CY7C68001寄存器、 End2point0缓冲器及描述表。(2) FIFO数据接口 : 用来拜望 4 个1 KB 的FIFO中的数据。通过编程直接作为FIFO 支配给EP2 ,EP4 ,EP6 ,EP8。这两个外部接口均可以通过同步或异步方式进行拜望。在此均接

7、受异步的方式进行拜望, 命令口的命令字如下 :在表1 中,A/ D用于的址 /数据的选择 , 当其为 0时, 表示本操作为数据读或写。当其为 1 时, 表示本操作为的址写。 R/ W 用于读/写操作的选择 , 当其为 0 时, 进行写, 当其为 1 时, 进行读。 A 5 :0 用于的址 /数据的选择 , 当Bit7 = 0 时,D 3 :0 为数据半字节。 D 5 :4 为未用, 命令字为 8 位, 故命令字数据分二次读出或写入。当 Bit7 = 1时,D 5 :0 包含将要寻址的命令寄存器的址。2 USB软件设计USB 的软件设计包括三方面 : 固件设计、驱动程序设计和主机端应用程序设计。

8、2. 1固件设计全部基于微把握器及外围电路功能设备的正常工作都离不开固件的参与, 固件的作用就是帮忙硬件工作。没有固件的参与和把握, 硬件设备无法实现预期的功能。 USB 设备也不例外 , 必需编写固件程序来帮忙硬件完成 USB 的通信任务。由于接受不带 MCU内核的 USB接口芯片 ,USB 的应用层协议应当通过对TMS320C5416的编程来实现 ,USB 固件的加载必需靠 DSP 的把握 CY7C68001来完成。在 CCS中用C 语言完成固件程序的编写 , 程序流程图如图 2 所示。依据程序流程图 , 固件设计思路如下 :(1) 初始化工作。包括设置一些特殊功能寄存器的初值, 以实现所

9、需的设备属性或功能 , 例如: 配置端口、使能端点、开中断。该设计中, 使CY7C68001工作于异步FIFO 模式, 将4 KB 的FIFO 对应到两个端点 Endpoint ,即Endpoint2 和Endpoint6。(2) 帮忙硬件完成设备的重新列举过程。包括模拟设备的断开与重新连接, 对接收到的设置包进行分析判定 , 从而对主机的设备请求做出适当的响应, 完成主机对设备的配置任务。(3) 对中断的处理。 CY7C68001有6 个中断源 , 可以分别通过中断使能对寄存器的各位进行设置。一旦中断大事发生,CY7C68001 的IN T引脚就被置低 , 并且置中断使能寄存器的相应位 即中

10、断使能寄存器同时充当中断标志寄存器, 中断使能寄存器具有读写属性 。当中断发生时 , 中断标志寄存器的状态字映射到FD7 :0 。中断发生后 ,DSP 对CY7C68001简洁的一次读操作即可猎取中断信息, 识别中断源并进行相应处理。相对于中断标志寄存器的读操作,其他CY7C68001寄存器的读操作通常要先发送一次请求 , 并且收到 READ响Y 应后, 才可以读取数据。(4) 数据的接收与发送。在读数据时, 应第一判定 CY7C68001的FIFO2 是否为空, 假如不为空 , 才将数据读进来。在写数据时 , 仍要判定要写的数据个数是否为512 B 的整倍数 , 假如不是 , 就使用PKTE

11、ND信号来标识数据包的终止。 EP2 和EP6 分别对应存放 USB需要上传与接收的数据。其中 , EP2为OU T 型, 负责从主可编辑资料 - - - 欢迎下载精品名师归纳总结机接收数据。 EP6 为IN 型,负责向主机发送数据。 EP2 和EP6 均接受批量BUL K传输方式 , 这种传输方式具有数据牢靠 , 传输速率高等特点 , 特殊适合大批量数据传输。部分关键代码如下 :DSP 读端点 2 中的数据 :if FifoStatus & SX2_EP2EF . = SX2_EP2EF/确定FIFO2 是否为空EP2Data = 3 unsinged volatile 3 USB_FIFO

12、2/将端点 2 中的数读出DSP 向EP6 中写入数据 :if FifoStatus & SX2_EP2EF . = SX2_EP2EF/确定FIFO6 是否已满unsigned int i。for i = 0。 i length - 1。 i + + /先写入 length - 1个数据3 USB_FIFO6 = data i 。if length %512/如最终一个包不是 512 B 的整数倍使用 PKTEND信号3 unsigned volatile int 3 USB_ FIFO6 _ END = data num - 1 。else3 unsigned volatile int 3

13、 USB_ FIFO6 = data num -1 。2. 2驱动程序在Windows 平台下,USB 驱动程序由三部分组成 :USB 设备驱动程序、 USB 总线驱动程序和 USB主把握器驱动程序。它们必需遵循 Win32 驱动程序模WDM。其中 ,Windows 操作系统已经供应了处于驱动程序栈底的USB主把握器驱动程序和 USB 总线驱动程序 USBD. SYS 。USB设备的驱动程序主要是通过调用USBD. SYS来实现PC 机与USB 总线的数据交换。 USB 驱动程序主要完成以下功能:(1) 发觉、配置、关闭 USB 设备。通过一系列有关即插即用 Plug and Play的派遣函

14、数来完成。例如 Ezusb _ PnPAddDevice , Ezusb _ DispatchPnp 等函数。(2) 驱动程序与应用函数的接口。像Ezusb _Creat ,Ezusb_Close 等函数。应用程序调用 Ezusb_Create 后, 返回惟一的 Windows 句柄后, 才能调用驱动程序的其他函数 , 完成驱动程序对 CY7C68001的一系列操作和数据传送。应用程序通过调用 API 函数CreateFile 来实现对 Ezusb_Create 的拜望。(3) 把握与数据传送接口。这是驱动程序的主要部分。它是Windows 的异步I/ O操作。应用程序使用标准 Win32AP

15、I 函数Device IoCont rol 来执行这样的操作。在驱动一方 , 这个DeviceIoCont rol 调用被转化成一个带IRP_MJ _DEVICE_CON TRO功L能码的 IRP。像读取与写入 FIFO 数据、 endpoint0 的操作均是通过异步 I/ O的方式来完成的。2. 3 主机应用程序USB 主机应用程序是运算机中完成特定功能的程序 , 其关键是实现从 USB外设读取或发送特定数量的数据、 USB标准设备请求和特定的命令等。另外 , 可以对数据做进一步的处理 , 如: 储备、显示、快速傅里叶变换等。主机应用程序的编写使用 VC 编译环境中的 API 函数实现。应用

16、程序的编程方法与串口编程类似。第一必需查找设备 , 调用Win32 函数CreateFilea 打开设备的句柄。然后调用 Win32 函数DeviceloCont rol 就可以进行数据读写和把握操作。最终关闭设备句柄。在 VC+ + 6. 0中用C+ + 编写简洁的上位机测试程序 , 得到测试结果如图 3 所示。可编辑资料 - - - 欢迎下载精品名师归纳总结图3数据传输测试结果3USB软件的实现算法#include #include epphal.h #include d12ci.h #include mainloop.h #include usb100.h #include chap_9

17、.h #include protodma.h/*/ USB protocol function pointer arrays/* code void *StandardDeviceRequestvoid =get_status, clear_feature, reserved, set_feature, reserved, set_address, get_descriptor, reserved, get_configuration, set_configuration, get_interface, set_interface, reserved, reserved, reserved,

18、reserved 。code void *VendorDeviceRequestvoid =reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved, reserved,可编辑资料 - - - 欢迎下载精品名师归纳总结reserved, reserved,read_write_register, reserved,reserved, reserved 。/*/ Public static data/* extern EPPFLAGS bEPPflags 。extern uns

19、igned long ClockTicks 。extern unsigned char idata GenEpBuf 。extern IO_REQUEST idata ioRequest 。CONTROL_XFER ControlData。code char * _NAME_USB_REQUEST_DIRECTION =Host_to_device, Device_to_host 。code char * _NAME_USB_REQUEST_RECIPIENT =Device, Interface, Endpoint0, Other 。code char * _NAME_USB_REQUEST

20、_TYPE =Standard, Class,Vendor, Reserved 。code char * _NAME_USB_STANDARD_REQUEST = GET_STATUS,CLEAR_FEATURE,RESERVED, SET_FEATURE, RESERVED, SET_ADDRESS, GET_DESCRIPTOR, SET_DESCRIPTOR,可编辑资料 - - - 欢迎下载精品名师归纳总结GET_CONFIGURATION, SET_CONFIGURA TION, GET_INTERFACE, SET_INTERFACE, SYNC_FRAME 。void help_d

21、evrequnsigned char typ, unsigned char reqtyp = 5 。iftyp = USB_STANDARD_REQUEST printfRequestType=%s,Request=%s.n,_NAME_USB_REQUEST_TYPEtyp,_NAME_USB_STANDARD_REQUESTreq。else ifbEPPflags.bits.verboseprintfRequestType=%s,bRequest=0x%x.n,_NAME_USB_REQUEST_TYPEtyp,req。extern unsigned long ClockIsr 。unsi

22、gned char far *privateBuffer 。unsigned long dmaBuffer 。unsigned long ioBuffer 。 / V2.1unsigned short ioSize, ioCount 。 / V2.1 void init_timer0void/* Interrupt Control Unit */* Enabled interrupts in Interrupt Enable Register * GLOBAL INTERRUPT MUST BE ENABLED FOR ANY OTHER* INTERRUPT TO WORK.*/*GLOBA

23、L INTERRUPT DISABLED ALL INTERRUPTSARE DISABLED*/*External interrupt 0*/*Priority Level = 0*/*Timer 0 interrupt*/*Priority Level = 0*/ void init_special_interruptsvoidioport unsigned int port3002 。可编辑资料 - - - 欢迎下载精品名师归纳总结void init_portport3002=0xff 。/*SerialPort */*Mode= 1 /8-bit UART SerialPort Int

24、errupt= Disabled*/*Receive= Enabled*/*Auto Addressing= Disabled*/ void init_serialvoidvoid on_exitvoiddisconnect_USB 。void mainvoidBOOL in_loop = TRUE。init_port 。init_serial 。init_timer0 。init_special_interrupts 。printfnPDIUSBD12 evaluation board firmware V2.2.n。printfCopyright c Philips Semiconduct

25、ors, 1998.n。printfRe-connect PDIUSBD12 evaluation board to USB.n。reconnect_USB 。/* Main program loop */ while in_loop fn_usb_isr 。if bEPPflags.bits.bus_reset DISABLE 。bEPPflags.bits.bus_reset = 0。ENABLE 。printfBus reset.n 。 / if bus resetif bEPPflags.bits.suspend DISABLE 。bEPPflags.bits.suspend= 0。E

26、NABLE 。suspend_change。printfSuspend change.n 。 / if suspend changeif bEPPflags.bits.setup_packet可编辑资料 - - - 欢迎下载精品名师归纳总结DISABLE 。bEPPflags.bits.setup_packet = 0 。ENABLE 。control_handler 。 / if setup_packet ifbEPPflags.bits.setup_dma DISABLE 。bEPPflags.bits.setup_dma = 0 。ENABLE 。setup_dma。 / if setu

27、p_dma / Main Loop on_exit 。void suspend_changevoidvoid stall_ep0voidD12_SetEndpointStatus0, 1 。D12_SetEndpointStatus1, 1 。void disconnect_USBvoid/ Initialize D12 configurationD12_SetModeD12_NOLAZYCLOCK|D12_CLOCKRUNNING,D12_SETTOONE| D12_CLOCK_12M。void connect_USBvoid/ reset event flags DISABLE 。bEPP

28、flags.value = 0 。ENABLE 。/ V2.1 enable normal+sof interruptD12_SetDMAD12_ENDP4INTENABLE | D12_ENDP5INTENABLE。/ Initialize D12 configuration D12_SetModeD12_NOLAZYCLOCK|D12_CLOCKRUNNING|D12_SOFTCONNECT,D12_SETTOONE | D12_CLOCK_12M。void reconnect_USBvoidunsigned long clk_cnt 。disconnect_USB 。可编辑资料 - -

29、- 欢迎下载精品名师归纳总结printfWait for 1 second .n。forclk_cnt=0 。clk_cnt0x100 。clk_cnt+ 。connect_USB 。void init_unconfigvoid/unsigned char i。D12_SetEndpointEnable0 。/* Disable all endpoints but EPP0. */void init_configvoidD12_SetEndpointEnable1 。/* Enable generic/iso endpoints. */void single_transmitunsigned

30、char * buf, unsigned char lenif len len ControlData.wLength = len 。ControlData.pData = pRomData 。if ControlData.wLength = EP0_PACKET_SIZE D12_WriteEndpoint1, ControlData.pData, EP0_PACKET_SIZE。ControlData.wCount += EP0_PACKET_SIZE。DISABLE 。bEPPflags.bits.control_state = USB_TRANSMIT。ENABLE 。可编辑资料 -

31、- - 欢迎下载精品名师归纳总结else D12_WriteEndpoint1, pRomData, ControlData.wLength。ControlData.wCount += ControlData.wLength。 DISABLE 。bEPPflags.bits.control_state = USB_IDLE。ENABLE 。可编辑资料 - - - 欢迎下载精品名师归纳总结void setup_dmaif.ioRequest.bCommand & 0x80 bEPPflags.bits.dma_disable = 1 。 / V2.1, x86 only可编辑资料 - - - 欢

32、迎下载精品名师归纳总结D12_SetDMAD12_ENDP4INTENABLE | D12_ENDP5INTENABLE。setup_io。return。bEPPflags.bits.dma_disable = 0 。 / V2.1/dma_start&ioRequest 。DISABLE 。bEPPflags.bits.dma_state = DMA_RUNNING。ENABLE 。single_transmit0, 0 。ifioRequest.bCommand & 0x1D12_SetDMAD12_BURST_16|D12_DMAENABLE| D12_DMA_INTOKEN。elseD

33、12_SetDMAD12_BURST_16 | D12_DMAENABLE。/ setup_io setup buffer address for I/O mode Main endpoints transfer,/ it only works on PC evaluation kit. void setup_iounsigned long offset 。/unsigned char far *fp 。/unsigned short seg, off 。offset = unsigned longioRequest.bAddressH4 。/off = ioBuffer + ioCount&

34、0xf。/fp = MK_FPseg, off 。DISABLE 。bEPPflags.bits.dma_state = DMA_RUNNING。ENABLE 。single_transmit0, 0 。ifioRequest.bCommand & 0x1 ifioSize 64 /D12_WriteEndpoint5, fp, 64。ioCount += 64 。else /D12_WriteEndpoint5, fp, ioSize。ioCount += ioSize 。可编辑资料 - - - 欢迎下载精品名师归纳总结void control_handlerunsigned char ty

35、pe, req。type=ControlData.DeviceRequest.bmRequestType& USB_REQUEST_TYPE_MASK。req = ControlData.DeviceRequest.bRequest & USB_REQUEST_MASK。help_devreqtype, req 。 / print out device request if type = USB_STANDARD_REQUEST*StandardDeviceRequestreq 。else if type = USB_VENDOR_REQUEST *VendorDeviceRequestreq

36、 。可编辑资料 - - - 欢迎下载精品名师归纳总结else4结 语stall_ep0 。可编辑资料 - - - 欢迎下载精品名师归纳总结在CT 图像重建系统中 , 高性能的 DSP 芯片具有高速的数据处理才能 , 利用设计的USB 接口, 能够快速便利的实现实时传输。经测试 , 该设计的 USB 接口传输速度可达 35 Mb/ s以上, 具有较高的有用价值和良好的应用前景 , 而且对于使用其他微处理器开发基于 CY7C68001的USB 2. 0接口也有很好的借鉴作用。参 考 文 献1 美 Texas Inst rument s Incorporated. TMS320 C5416系列DSP

37、 的CPU与外设 M .北京: 清华高校出版社 ,2007.2 袁海强, 徐宏海, 李娟.基于CY7C68001的数据采集系统 USB 接口设计 J . 2021 ,37 2 :48250.3 TEXAS INSTRUMENTS MARCH. TMS320C6000 EMIFto USB InterfacingUsing Cypress EZ2USB SX2 Z.2004.4 陈刚, 张帅.基于DSP 和USB 2. 0高速数据传输系统的设计 J .长沙通信职业技术学院学报 ,2007 ,6 4 :73276.5 万佑红, 冯炜.基于DSP的USB数据传输方法争辩与实现 J .运算机工程与设计

38、,2007 ,28 12 :2 89622 897 ,2 901.6 王成儒, 李英伟. USB 2. 0原理与工程开发 M. 北京: 国防工业出版社,2004.7 戴小俊, 丁铁夫, 郑喜凤.基于DSP和USB的数据采集系统的设计 J .电子技术应用 ,2007 1 :84286.8 微红昀, 张志俊, 朱宗晓. DSP 高速数字语音系统的 USB 接口设计 J .中南民族高校学报 ,2007 ,26 1 :40243.9 北京合众达公司 . SEED2DEC5416用户指南 Rev. B Z.2005.10 北京合众达公司 . SEED2DECxxxx 系列模板 USB驱动程序架构与使用说

39、明 Z.2005.版权申明本文部分内容,包括文字、图片、以及设计等在网上搜集整可编辑资料 - - - 欢迎下载精品名师归纳总结理。版权为潘宏亮个人全部This article includes some parts, including text, pictures, and design. Copyright is Pan Hongliangs personal ownership.用户可将本文的内容或服务用于个人学习、争辩或观看,以及其他非商业性或非盈利性用途,但同时应遵守著作权法及其他相关法律的规定,不得侵害本网站及相关权益人的合法权益。除此以 外,将本文任何内容或服务用于其他用途时,须

40、征得本人及相关权益人的书面许可,并支付酬劳。Users may use the contents or services of this article for personal study, research or appreciation, and other non-commercial or non-profit purposes, but at the same time, they shall abide by the provisions of copyright law and other relevant laws, and shall not infringe upon t

41、he legitimate rights of this website and its relevant obligees. In addition, when any content or service of this article is used for other purposes, written permission and remuneration shall be obtained from the person concerned and the relevant obligee.转载或引用本文内容必需是以新闻性或资料性公共免费信息为使用目的的合理、善意引用,不得对本文内容原意进行曲解、修可编辑资料 - - - 欢迎下载精品名师归纳总结改,并自负版权等法律责任。Reproduction or quotati

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁