新闻中心

EEPW首页 > 嵌入式系统 > 设计应用 > 基于CY7C68013的USB2.0数据传输模块设计

基于CY7C68013的USB2.0数据传输模块设计

作者:时间:2009-11-13来源:网络收藏

  3 系统软件设计

  3.1GPIF接口模式

  FX支持3种接口方式:端口、Slave FIFOs和可编程接口GPIF。

  在“端口”模式下,所有I/O引脚都可作为8051的通用I/O口。在“从FIFO”模式下,外部逻辑或外部处理器直接与FX2端点FIFO相连。在这种模式下,GPIF 不被激活,这种模式下,外部主控端既可以是异步方式,也可以是同步方式,并可以为FX2 接口提供自己的独立时钟。“GPIF主控”接口模式使用PORTB 和PORTD构成通向四个FX2端点FIFO(EP2、EP4、EP6和EP8)的16位数据接口。GPIF 作为内部的主控制器与FIFO直接相连, 并产生用户可编程的控制信号与外部接口进行通信。GPIF使用内部时钟。用户将波形文件程序存在内部RAM的程序存储区中。

  根据系统需要,设计中采用GPIF接口模式将CY7C68013设为FIFO READ和SINGLE READ两种模式, 让GPIF中的端点FIFO与通信中端点缓冲直接建立连接, 数据的传送不再需要CPU 的参与。 根据外部测试电路的要求,适用于不同测试环境预设电路的CPLD编程信号,根据实际的测试信号的频率采用不同的采样频率,设定不同的触发电平,使用单次写模式可以完成编程数据的输出。针对的测试数据采用FIFO多次读模式,实现数据的批量传输。设计中采用48M晶振,由于静态存储器的在使能信号(OE)的上升沿后推地址(Adr),而数据在总线上的保持时间至少需要85ns,因此在波形设计中数据有效时间应该为4个时钟周期,才能够满足地址有效的要求。静态存储器读操作时序图如图2所示。

  

  3.2固件程序设计

  固件是指存储在接口芯片或微控器中的代码,用于控制硬件系统运行,各种标准请求的处理,以及USB闲置模式的电源管理服务,实现主机与外设之间的通信和数据传输。主要是根据系统需求设计相应的程序框架图。 公司为FX2 固件开发提供了一个固件库和固件框架,都是在KeilC51集成开发环境下开发的,固件库提供了一些常量、数据结构、函数来简化用户对芯片的使用。C 语言环境, 同时保留了汇编代码高效、快速的特点,将代码在KeilC51环境中进行编译。编译通过后,将固件代码下载到USB单片机中,就可以实现GPIF多字节读等操作。在程序起始时,固件架构会执行下列步骤:

  (1)首先,设置所有的内部状态变量。

  (2)然后,调用用户的初始设置函数TD_Init()。待返回后固件架构就会设置USB接口成为未配置的状态,并且使能中断。

  (3)接下来,在1秒的间隔内开始重新设备列举(ReNumerate)设备,并直到设置(SETUP)封包收到端点0为止。

  (4)一旦SETUP封包被检测到,固件架构就会启动与PC主机合作的工作分配器。而这个工作分配器就会顺序重复执行下列的工作:

  ①调用用户函数TD_Poll()。

  ②判断标准设备请求是否决定。如果已决定,它将解析所收到的命令请求并加以响应。

  ③判断USB核心是否己经报告了USB中止(suspend)事件。

  用户需要编写TD_Poll()中的代码完成特定的功能,判断USB设备枚举的状态决定每次出发FIFO波形文件的次数,数据短包的处理方式等,实现数据的读取。



关键词: USB Cypress

评论


相关推荐

技术专区

关闭