微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 模拟电路设计 > 基于DSP的USB接口设计

基于DSP的USB接口设计

时间:09-23 来源:互联网 点击:

1 引言

  通过DSP 处理的数据往往要传输给PC 机进行存储和再处理,那么就必须解决DSP 与 PC 机之间的高速通信问题。本设计方案以德州仪器(TI)的C5000 系列DSP 芯片TMS320VC5416为微处理器,利用Cypress公司提供的USB2.0接口芯片CY7C68001 实现了USB2.0 从机接口设计,从而使PC机与DSP 通过USB2.0 接口实现高速双向地传输数据。

  2 TMS320VC5416 与CY7C68001 EZUSBSX2硬件接口设计

  系统方案采用PC机作为上位机,负责USB总线上检测到设备接入并进行枚举、识别的过程,并且可以通过在PC机上运行应用程序来控制数据的传输。USB芯片作为USB设备端,连接DSP与上位机的数据交换。DSP用于实现USB协议,通过DSP编程实现DSP数据通过USB接口与PC机通信,且USB芯片的描述符写入及各种命令状态的处理均通过DSP编程实现。

  TMS320VC5416 是TI 的一款16bit 定点高性能DSP,由于VC5416的功耗低、性能高,其分开的指令和数据空间使该芯片具有高度的并行操作能力,在单周期内允许指令和数据同时存取,再加上高度优化的指令集,使得该芯片具有很高的运算速度,同时该芯片本身具有丰富的片内存储器资源以及多种片上外设,因此在工程界得到了广泛的应用。

  Cypress 公司的CY7C68001 EZ-USB SX2 是一款高性能、使用方便的USB2.0 接口芯片,满足USB2.0 协议,可工作在高速(480Mbps)或全速(12Mbps)模式下,提供一个控制端点用于处理USB设备的请求以及四个可配置端点用于传输控制和数据信号,这四个端点共享一个4KB的FIFO空间,具备标准的8位或16位外部主机接口,可无缝连接多种标准微处理器,比方说DSP、ASIC和FPGA等,并可根据需求设置为同步或异步接口,片内集成锁相环(PLL),该芯片广泛应用于DSL调制解调器、MP3、读卡器、数码照机、扫描仪、打印机等设备。

  系统的硬件接口设计如图1、图2所示,两者通过数据、地址总线以及读、写信号线等进行通信,CY7C68001的片选信号连接至TMS320VC5416 的I/O空间片选信号上,CY7C68001 的FIFO扩展在VC5416 的I/O 空间上。

  

  

  电源部分采用一片1117 将5V 转为3.3V供给CY7C68001EZ-USB SX2,模拟地与数字地之间采用磁珠连接,复位部分采用RC电路设计,且芯片资料上介绍有典型值100KΩ和0.1μF。

  3 接口操作原理

  CY7C68001 有两个外部接口:

  (1) 命令接口:用来访问CY7C68001 寄存器、Endpoint 0缓冲器,以及描述表。

  (2) FIFO数据接口:用来访问4个1K字节的FIFO中的数据。

  这两个外部接口均可以通过同步或异步的方式进行访问。

  本设计采用异步的方式进行访问。根据图3 的地址分配,利用TMS320VC5416 的三根高位地址线(A11、A12、A13)连接CY7C68001 的FIFOAD0/1/2,用以选择FIFO2、FIFO4、FIFO6、FIFO8以及命令接口,其地址表如图3所示。CY7C68001的地址线FIFOADR[2:0]为100B 时,选中CY7C68001 的命令口(Command)。通过CY7C68001的命令口,可以访问37个寄存器、Endpoint 0缓冲器(64个字节FIFO)和描述表(500个字节FIFO)等,对这些寄存器进行读写方式采用二次寻址方式,即首先通过命令口将要寻址的寄存器的子地址和操作类型(读或写)写入,然后再通过命令口将数据读出或写入相应的寄存器。

  

写入命令口的内容称为命令字,命令字包含要寻址的寄存器的子地址,或要写入寄存器的数据的高4位或低4位。读命令口必须要跟在给命令口写读命令字之后,读出的为相应寄存器的8位数据。所以,寄存器的写操作由3 个步骤组成:

  

  4 USB 接口的软件设计

  USB接口的软件设计由两部分组成:一是在PC机Windows中运行USB 2.0 Utility 工具,是一个Windows 图形用户界面软件,提供CY7C68001 与Windows 操作系统的接口程序,使得CY7C68001的开发变得简单。二是在在DSP中运行嵌入式应用程序代码,提供硬件的驱动,用来管理CY7C68001进行不同方式的数据处理,从而实现USB2.0 传输协议。

  4.1 USB 接口的软件设计流程

  USB接口的软件设计,DSP端代码大致包括DSP芯片初始化(vc5416_init 函数)、USB芯片初始化(sx2_init 函数)、USB芯片配置程序( s x 2 _ s e t u p 函数) 以及USB 芯片数据读写程序(sx2_processdata 函数),程序流程如图4 所示。

  DSP芯片初始化(vc5416_init函数)主要负责设置VC5416的工作频率,配置SWCR以及SWWSR寄存器,另外本应用系统采用一个GPIO引脚作为68001的复位信号,所以还需要对其进行相关设置。

  

USB芯片初始化(sx2_init函数)主要负责清除Buffer缓冲区以及使能VC5416 的外部中断INT1 ,待初始化结束后发出READY中断,此时DSP将描述符写入68001,进行枚举过程,待枚举通过后发出ENUMOK中断,枚举方式可以采用外部EEPROM通过I2C总线上电后从外部导入描述符,也可

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

网站地图

Top