微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于TMS320C6416的USB数据传输系统设计

基于TMS320C6416的USB数据传输系统设计

时间:11-27 来源:互联网 点击:
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)的派遣函数来完成。例如Ezusb_PnPAddDevice(),Ezusb_DispatchPnp()等函数。

(2)驱动程序与应用函数的接口。像Ezusb_Creat(),Ezusb_Close()等函数。应用程序调用Ezusb_Create()后,返回惟一的Windows句柄后,才能调用驱动程序的其他函数,完成驱动程序对CY7C68001的一系列操作和数据传送。应用程序通过调用API函数CreateFile()来实现对Ezusb_Create()的访问。

(3)控制与数据传送接口。这是驱动程序的主要部分。它是Windows的异步I/O操作。应用程序使用标准Win32API函数DeviceIoControl()来执行这样的操作。在驱动一方,这个DeviceloControl()调用被转化成一个带IRP_MJ_DEVICE_CONTROL功能码的IRP。像读取与写入FIFO数据、endpoint0的操作均是通过异步I/O的方式来完成的。

2.3 主机应用程序

USB主机应用程序是计算机中完成特定功能的程序,其关键是实现从USB外设读取或发送特定数量的数据、USB标准设备请求和特定的命令等。另外,可以、对数据做进一步的处理,如:存储、显示、快速傅里叶变换等。主机应用程序的编写使用VC编译环境中的API函数实现。应用程序的编程方法与串口编程类似。首先必须查找设备,调用Win32函数CreateFilea()打开设备的句柄;然后调用Win32函数DeviceloControl()就可以进行数据读写和控制操作;最后关闭设备句柄。在VC++6.0中用C++编写简单的上位机测试程序,得到测试结果如图3所示。



3 结 语

在CT图像重建系统中,高性能的DSP芯片具有高速的数据处理能力,利用设计的USB接口,能够快速方便地实现实时传输。经测试,该设计的USB接口传输速度可达35 Mb/s以上,具有较高的实用价值和良好的应用前景,而且对于使用其他微处理器开发基于CY7C68001的USB 2.0接口也有很好的借鉴作用。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top