基于TMS320C6713的USB数据传输系统设计
![h.JPG](http://m.amcfsurvey.com/editerupload/fetch/20130807/155122_3_0.jpg)
其中,通过Read_SX2reg()可判断FIFO中的数据是否被发送,若被发送,则FIFO寄存器标志为空,反之,标志为满。SX2_Fifo_Write()向相应的FIFO中写入传输数据。其中ENDPOINT6表示使用EP6端点进行发送,ping+pingcnt表示要发送数据的首地址,FifoLength为发送数据的长度。系统采用USB2.0进行数据传输,每个EP的FIFO缓冲大小为512 B,CY7C68001采用16位数据线与TMS320C613相连,故FifoLength大小设为256 B。
由于TMS320C6713通过EMIF的CE3存储空间可以外扩USB2.0接口,还需对。EMIF接口的CE3寄存器进行配置,将USB接口设为16位异步存储接口,设定读/写的建立时间(Setup)、促发时间(Strobe)、保持时间,使其满足CY7C68001的读/写时序要求。具体配置如下:
![i.JPG](http://m.amcfsurvey.com/editerupload/fetch/20130807/155122_3_1.jpg)
4 PC端应用程序
PC主机端需要编写USB设备驱动程序和应用程序。USB设备驱动程序主要通过调用微软的USBD.SYS来实现PC机于USB总线的数据交换,采用WDM(Windows Driver Mode)驱动程序进行编写,分为USB底层驱动程序和USB功能驱动程序。USB底层驱动程序由操作系统提供,USB功能驱动程序由设备开发者进行编写。
PC端应用程序采用VC++6.0编写应用程序,首先调用OpenDriver()打开USB接口设备,获得设备的句柄hDevice,之后调用Sx2SendVendor Req()函数向外设发出命令,读取USB配置,最后调用Sx2BulkdataTrans()进行数据传输,通过调用CFile类将接收到的数据存放在文件名为“Collection.txt”的文本文件中。程序使用多线程技术,使得应用程序将USB数据传输在后台进行处理,应用程序前台还可进行其他操作。
程序简单实现如下功能:当点击“Start Sample”按钮时,开始进行USB数据传输,点击“Stop Sample”按钮时,停止USB数据传输。采样的多通道数据在应用程序中进行图像显示,方便对数据的判断。
程序关键函数如下:
![j.JPG](http://m.amcfsurvey.com/editerupload/fetch/20130807/155122_3_2.jpg)
函数中myRequest的成员变量与DSP中断程序中SetupBuff缓冲区的 8 B数据相对应,Sx2SendVendotReq()通过调用Windows API函数Devi ceIoControl()向DSP中发送命令,DSP端程序需与之配合,返回相应的数据,完成读取USB配置。
![k.JPG](http://m.amcfsurvey.com/editerupload/fetch/20130807/155122_3_3.jpg)
通过对函数中bulkControl的成员变量pipenumber设置,确定PC主机端与CY7C68001的哪个端点进行数据传输,Sx2BulkdataTrans()也通过调用Windows API函数DeviceIoControl()向DSP中发送读/写数据命令,被传输的数据保存在buffer中。
评论