用EZ-USB实现TMS320C6X与主机数据传输
时间:11-25
来源:互联网
点击:
3.1 CY7C68013的固件程序规划
固件程序框架通过几个不同的功能模块,实现了一个简单的互操作任务执行器,首先,通过调用用户的初始化函数TD_Init(),初始化所有内部状态变量,之后,程序框架将USB口初始化为未配置状态,并且使能中断,以1s为时间间隔开始重新列举(renumerate)设备,直到端点0收到设置包为止,一旦检测端点0受多一个设置包,固件框架程序就启动执行一个互操作的任务分配器,按照给定的顺序重复执行下面的任务:调用函数TD_Poll(),判断是否有标准设备请求等待处理,确定USB核是否报告了USB挂起事件。
主要固件配置如下:
1)配置异步从FIFO(Asynchronous Slave FIFO)模式,接口驱动采用内部的48M赫兹的时钟源。
2)EndPoint4和EndPoint8作为双向传输的管道,分别对应缓冲FIFO4和FIFO8存放USB需要接收与下传的数据,它们均采用批量(BULK)传输方式,相对于其他USB2.0定义的传输方式具有数据可靠、传输速率高等特点,是最常用的传输方式。
3)设置FIFO4、FIFO8为自动方式,即在数据传输过程中无需CY7C68013的8051内核参与,以保证持续、高速、有效的数据传输。
EZ-USB FX2芯片定义了几个特殊寄存器,以辅助固件程序相应设备请求,并向主机传送数据,当设备收到设置包时,USB核会自动将设置数据放入8字节的SETUPBUF缓冲区中,用户只须从中读取设置数据,进行分析来判断请求的类型即可。
方案中部分设备请求代码如下:
读取缓冲区中第2字节由PA[0:1]发送至DSP,作为命令类型标志(00为下传,01为上传,10为处理);同时PA3口提供外部中断触发信号的上升沿。
固件就绪后通过Cypress公司提供的工具Control Panel加载至EEPROM中,当需要修改固件时,就可以在不改动硬件的情况下将主机上修改好的固件重新下载一次。
3.2 上位机流程
主机应用程序与操作系统相互作用,利用PC丰富的资源,实现显示验证,提高系统的可操作性,当操作系统认为有新设备接入时,就会自动调用相应的设备驱动。另外,该软件需要一个图形用户界面来控制所用的函数,这里采用VC++6.0来编制应用程序,首先调用CreateFile()打开USB接口设备,获得设备的句柄hDevice,然后计算机通过调用DeviceIoControl()函数向外设发出。部分程序如下:
myRequest的8个成员变量对应固件配置SETUPBUF缓冲区中8字节的(SETUPDAT)数据,其中value的值表示了主机向DSP发送的命令类型(00/01/10),使DSP配合完成接收,处理及上传的系统过程。
每次调用DeviceIoControl函数传输的数据量仅为1KB。为了满足大数据量或者整帧图像数据传输的要求,需要循环调用DeviceIoControl()函数,以下载数据流的过程为例,循环体中的代码如下:
buffer是主机发出数据块的头指针;pBy为每次下传数据块的首地址,是随着循环变量i递增的值。同样,上传数据的过程中也有类似的存储操作。
4 系统测试
利用图像序列对此主从式联机系统进行测试。
触发PC机上的界面控件(PA(0:1)=00),下载10幅经不同程序噪声污染的同一内容的图像,DSP检测到通用外部中断口EXT_INT6的信号(对应USB芯片的PA3)读入数据读取命令类型,将10帧图像数据存入SDRAM空间,之后,上位机继续发出处理命令,DSP检测到PA[0:1]=10对存储的多帧图像数据进行累加平均,从而提高图像的信噪比,在收到上传命令(PA[0:1]=01)时,DSP将处理完成的图像回送至PC机显示。
结语
本文详细介绍了通过TMS32C6713的EMIF扩展USB接口的硬件连接、USB2.0固件程序和应用程序的开发以及基于这种通信模式的小型联机系统的构成。经实际验证,系统运行可靠,是一种比较好的高速数据传输与处理的解决方案。
固件程序框架通过几个不同的功能模块,实现了一个简单的互操作任务执行器,首先,通过调用用户的初始化函数TD_Init(),初始化所有内部状态变量,之后,程序框架将USB口初始化为未配置状态,并且使能中断,以1s为时间间隔开始重新列举(renumerate)设备,直到端点0收到设置包为止,一旦检测端点0受多一个设置包,固件框架程序就启动执行一个互操作的任务分配器,按照给定的顺序重复执行下面的任务:调用函数TD_Poll(),判断是否有标准设备请求等待处理,确定USB核是否报告了USB挂起事件。
主要固件配置如下:
1)配置异步从FIFO(Asynchronous Slave FIFO)模式,接口驱动采用内部的48M赫兹的时钟源。
2)EndPoint4和EndPoint8作为双向传输的管道,分别对应缓冲FIFO4和FIFO8存放USB需要接收与下传的数据,它们均采用批量(BULK)传输方式,相对于其他USB2.0定义的传输方式具有数据可靠、传输速率高等特点,是最常用的传输方式。
3)设置FIFO4、FIFO8为自动方式,即在数据传输过程中无需CY7C68013的8051内核参与,以保证持续、高速、有效的数据传输。
EZ-USB FX2芯片定义了几个特殊寄存器,以辅助固件程序相应设备请求,并向主机传送数据,当设备收到设置包时,USB核会自动将设置数据放入8字节的SETUPBUF缓冲区中,用户只须从中读取设置数据,进行分析来判断请求的类型即可。
方案中部分设备请求代码如下:
读取缓冲区中第2字节由PA[0:1]发送至DSP,作为命令类型标志(00为下传,01为上传,10为处理);同时PA3口提供外部中断触发信号的上升沿。
固件就绪后通过Cypress公司提供的工具Control Panel加载至EEPROM中,当需要修改固件时,就可以在不改动硬件的情况下将主机上修改好的固件重新下载一次。
3.2 上位机流程
主机应用程序与操作系统相互作用,利用PC丰富的资源,实现显示验证,提高系统的可操作性,当操作系统认为有新设备接入时,就会自动调用相应的设备驱动。另外,该软件需要一个图形用户界面来控制所用的函数,这里采用VC++6.0来编制应用程序,首先调用CreateFile()打开USB接口设备,获得设备的句柄hDevice,然后计算机通过调用DeviceIoControl()函数向外设发出。部分程序如下:
myRequest的8个成员变量对应固件配置SETUPBUF缓冲区中8字节的(SETUPDAT)数据,其中value的值表示了主机向DSP发送的命令类型(00/01/10),使DSP配合完成接收,处理及上传的系统过程。
每次调用DeviceIoControl函数传输的数据量仅为1KB。为了满足大数据量或者整帧图像数据传输的要求,需要循环调用DeviceIoControl()函数,以下载数据流的过程为例,循环体中的代码如下:
buffer是主机发出数据块的头指针;pBy为每次下传数据块的首地址,是随着循环变量i递增的值。同样,上传数据的过程中也有类似的存储操作。
4 系统测试
利用图像序列对此主从式联机系统进行测试。
触发PC机上的界面控件(PA(0:1)=00),下载10幅经不同程序噪声污染的同一内容的图像,DSP检测到通用外部中断口EXT_INT6的信号(对应USB芯片的PA3)读入数据读取命令类型,将10帧图像数据存入SDRAM空间,之后,上位机继续发出处理命令,DSP检测到PA[0:1]=10对存储的多帧图像数据进行累加平均,从而提高图像的信噪比,在收到上传命令(PA[0:1]=01)时,DSP将处理完成的图像回送至PC机显示。
结语
本文详细介绍了通过TMS32C6713的EMIF扩展USB接口的硬件连接、USB2.0固件程序和应用程序的开发以及基于这种通信模式的小型联机系统的构成。经实际验证,系统运行可靠,是一种比较好的高速数据传输与处理的解决方案。
DSP 总线 USB Cypress 收发器 CPLD MCU 电路 电压 电源管理 相关文章:
- F1aSh存储器在TMS320C3X系统中的应用(11-11)
- 基于PIC18F系列单片机的嵌入式系统设计(11-19)
- DSP在卫星测控多波束系统中的应用(01-25)
- 基于PCI总线的双DSP系统及WDM驱动程序设计(01-26)
- 利用Virtex-5 FPGA实现更高性能的方法(03-08)
- DSP与单片机通信的多种方案设计(03-08)