1 引言
近年来,随着数字信号技术的发展,需要处理的数据量越来越大,处理的速度也越来越快,因此具有高速性能dsp 芯片的应用得到了广泛重视。而通过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总线上电后从外部导入描述符,也可采用通过运行dsp程序从dsp导入到68001,本应用系统采用第二种枚举方式。
usb芯片配置程序(sx2_setup函数)是在命令通道(0节点)收到无法自动处理的上位机请求,68001向vc5416发出setup中断后执行的程序,此时vc5416 通过对setup寄存器连续执行八次读操作流程即可得到8字节请求,系统可以响应该请求或stall该请求。
usb 芯片数据读写程序(sx2_processdata 函数)即pc 机与usb从设备端遵照usb传输协议进行数据通信。
cy7c68001的地址fifoad[2:0]为100时,选中cy7c68001的命令接口。对于命令接口的读写要分两步进行,即在ready有效时,先通过命令接口写入要寻址寄存器的子地址和操作类型(读或写),之后,在ready再次有效时分两次读写命令接口,即可读写一个字节的数据。
4.2 中断服务程序设计要点
dsp使用一个外部中断引脚(int1)与cy7c68001的int脚相连,usb总线上产生一系列的活动,均会触发相应的中断,一旦中断产生,dsp 会从cy7c68001 的command 口中读取相应的值,来判断产生的是何种中断。
cy7c68001 ez-usb sx2 包括六个中断源:setup(收到来自于usb 上位机(pc)发送过来的set-up 包时产生的中断)、ep0buf(端点0 缓存可用时产生的中断)、flags(out 端点fifo的状态从空变为非空时产生的中断)、enumok(sx2枚举完成后产生的中断)、busactivity(sx2检测到总线活动时产生的中断)以及ready(sx2上电并且复位完毕后产生的中断),每一个中断源都可以通过置位或清除intenable寄存器中相应位来使能或禁止。
cy7c68001芯片采用中断缓冲机制,每次只会有一个中断源,其他中断源只有在上一个中断被读走后才会发出新的中断请求。
因此,当一个中断产生时,int引脚为低电平状态,同时中断状态位会置入命令接口,在进入中断程序后应先对中断源进行判断,首先判断是否是读寄存器所产生的中断,如果是则将数据准备好标志位置1然后返回,否则外部pc通过选通slrd/sloe信号从命令接口中读取中断状态位来判断产生的是何种中断,然后根据中断源进行相应操作,dsp读取中断状态位后自动清除中断标志位。
5 结束语
基于上述方法实现的usb接口电路,为dsp构筑与pc机之间的高速双向传输通路。通过硬件平台的搭建和软件程序的实现,验证了该接口电路可以满足高速信号处理的数据传输要求,并具有速度快和可靠性高等优点,相信随着嵌入式技术的发展以及基于usb2.0 协议的芯片的普遍应用,基于usb的接口技术将得到更加广泛的应用。
来源;电子工程网
如何学习C语言,C语言的知识框架
2019年Q3全球TWS耳机市场出货量3300万台 环比增长22%
水下LiFi应用
新能源汽车车身域控制器自动化测试
随身医疗装置Scanadu Scout推动无线个人医疗装置发展
基于DSP与PC机之间的高速通信设计
南卡和Beats蓝牙耳机哪个好?高性价比的蓝牙耳机测评
陶瓷电容器的介质老化与去老化方法
人工智能更多的是一种运用技术而不是代替人类
新松机器人智能制造项目落户绵阳
台端深知卡类连接器的市场展望偏弱力,开始推出新品力求转型
功率放大器在高校机械学院研究中的具体应用方向
Adobe Prelude发现的代码任意执行高危漏洞
声发射检测系统可对金属塑性变形和断裂进行准确监测
信号端口防护-USB3.0- ESD及插拔脉冲电压防护-优恩半导体
什么是IT、CT、OT?
2月全球TV出货增幅放缓,同比增长1.8%
声级计怎么使用_声级计的使用方法_声级计使用注意事项
国产手机正缓缓崛起,三星手机业务持续下滑
你对于智慧屏的认识是怎样的