0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于DSP实现USB芯片的固件程序流程和设计

电子设计 来源:单片机及嵌入式系统应用 作者:李强,伍坚,姚冬 2020-07-10 07:50 次阅读

USB接口(Universal Serial Bus)是一种通用的高速串行接口。它最主要的特点是高速传输特性,可以很好地解决海量数据在嵌入式系统与PC机之间的互传问题;同时USB接口还具有热插拔、速度快(具有3种数据传输模式,即低速、全速、高速;最快可达480 Mbps)和扩展性好(最多可以连接127个USB设备)等特点,从而使得USB接口得到了广泛的应用。

1、USB芯片CY7C68013介绍

CY7C68013属于Cypress公司的FX2系列产品,是Cypress公司生产的第一款USB2.0芯片

CYTC68013是一个带增强型MCS51内核和USB接口的单片机,完全遵从USB2.O协议,可提供高达480 Mbps的传输率;内部集成PLL(锁相环),最高可使5l内核工作在48MHz;对外提供两个串口,可以方便地与外部通信;片内拥有8 KB的RAM,可完全满足系统每次传输数据的需要,无需再外接RAM。由于芯片内部没有ROM,一旦USB设备断开与PC的连接,程序代码将无法保存,需要每次在PC机接入USB设备后,重新下载。另外,CY7C68013支持一种“E2PROM引导方式”,即先将固件下载到片外E2PROM中,当每次USB设备通电后,FX2自动将片外E2PROM中的程序读入芯片中。

CY7C68013与外设有主/从两种接口方式:可编程接口GPIF和Slave FIFO。可编程接口GPIF是主机方式,可以通过软件编写读/写控制时序,灵活方便,几乎可以与所有8/16位接口的控制器、存储器和总线实现无缝连接。Slave FTFO是从机方式,外部控制器可以像对待普通FIFO一样对芯片内的多个缓冲区进行读/写;S1ave FIFO方式也可以灵活配置,以适应不同的需要。

2、硬件设计思想

USB数据传输流程如图l所示。

基于DSP实现USB芯片的固件程序流程和设计

工作流程可分为两个部分:芯片初始化部分和数据传输部分。

2.1 芯片初始化部分

本部分是适用于任何USB传输过程中的芯片初始化部分。当USB接口接入PC后,首先进行PC的设备搜索,从USB端获得设备的VID/PID,以及USB芯片的工作方式;然后PC机通过得到的VID/PID获取设备的驱动,保证设备的工作。与此同时,USB芯片上电开始,MCU开始从E2PROM中获取MCU的工作状态、采用的工作模式、数据传输方式、所用到传输方式端点的大小以及传输方向,并对接口器件进行相应芯片寄存器的初始化。实现内容因具体芯片而异,因此确定接口器件后再说明寄存器初始化的方法。

2.2 数据传输部分

不同器件相接实现方式不同,在此以CY7C68013与DSP6416 HPI接口数据传输实现为例,介绍数据传输流程。

首先,简单地介绍一下DSP611 6 HPI接口。HPI是一个并行端口,通过HPI可以直接访问DSP的存储空间,也可以通过DMA/EDMA控制器实现对DSP存储空间的访问。HPI口可以提供16/32位的数据接口,通过主机或者CPU访问HPI控制寄存器(HPIC)来确定HPI接口的数据带宽。

确定了DSPHPI作为USB的接口器件,DSPHPI接口的初始化如下:对于DSP,为了满足数据的正常传输,需要对HPIC寄存器进行设置,即设置字长,初始化时假设DSP向主机发送中断和Ready信号。因为没有用到HPT的地址线,因此不需要设置HPIA寄存器。此时DSP已经做好了接收或发送数据的准备。

为了满足与HPI接口读/写时序的无缝连接,此处采用了GPIF传输模式。流程如下:

当数据PC端发送时,USB收发机将收到的信号发送给CY7C68013,USB芯片接收到数据后先存放在端点寄存器里,等到数据放满数据缓存区时,USB芯片启动GPIF,将数据送入DSP。当DSP接收到数据后会对HPIC控制器进行设置,发送给USB中断信号,提示收到数据包,即完成1次PC→DSP传输。

当数据从DSP端发送时,HPIC寄存器发送中断至USB芯片,USB芯片做好接收数据的准备;然后HPI将数据送入USB芯片,等数据缓存区放满l024字节后,将数据通过USB发送至PC机接收端。

3、硬件电路的设计与实现

如前所述,接口电路方面USB为了满足HPI接口的读/写时序采用GPIF方式。

3.1 CY7C68013与HPI接口电路

CY7C68013与HPT接口电路原理图如图2所示。

这里需要说明的有如下几点:

①HHWIL主要用来区分第1个/第2个Halfword的传输,且仅在半宁传输时出现。由于主机没有数据线和地址线复用的情况,因此在这里将HAS置高电平。

HDSl、HDS2作为数据选通信号,主要用于主机寻址HPI周期内控制数据传输,在本次工作中没有用到,而为了调试方便,保留了HDSl和HDS2,通过高低电平控制它们的变化。由于HDSl、HDS2和HCS在片内是组合为一个低有效的HSTROBE信号,其组成关系如下:

HSTROBE=NOT(HDSl XOR HDS2)OR HCS所以HDSl置低电平,HDS2置高电平,利用HCS的信号变化控制HPI读/写初始化。

②HCNTL[1:O]主要用来控制当前访问的是HPI的哪个寄存器。在HP1初始化时完成HPIC寄存器的控制信息。HPID寄存器主要实现数据传输时数据的读取/写入。此处没有用到HPI的地址操作,因此HPIA作为地址寄存器不需要送入控制信息。

③HD[15:O]对应于PB[7:o]、PD[7:0]接口,由于为半字传输方式,因此在这里需要将HD5置低电平,以满足芯片复位时HD5为低电平。

3.2 固件调试部分

固件程序流程图如图3所示。

(1)初始化部分

该部分用来确定整个过程采用的方式,确定端点的传输方式、方向和缓存区的大小,设置HPI接口的HPIC寄存器以及设备的枚举。本设计采用的是GPIF传输方式,端点选择的是批量传输。采用的端点是EP2和EP6。EP2传输方向为OUT,缓存区大小为1024字节;EP6传输方向为IN,缓存区大小为l024字节;通过对HPIC的操作确定HPI的工作方式以及HPID的数据传输方式。编写GPIF数据中断函数和USB设备描述符。

(2)GPIF波形部分

GPIF波形采用Cypress公司提供的GPIF Designer来实现。GPIF Designer通过简单形象的界面解决了复杂程序表示的GPIF时序设计问题。与DSP HPI接口相符合的读、写时序如图4和图5所示。

(3)中断产生时GPIF数据传输

在程序中实现每当缓存区数据达到l024字节或为最后一包数据时,自动进行数据传输。下面的程序是EP2将数据发送到DSP端的程序:

EP6将从DSP收到的数据传给主控端的程序如下:

4、总 结

本文以CY7C68013和DSP HPI接口为例描述了USB芯片的固件程序流程和设计思想。通过采用GPIF模拟了HPI接口的读/写时序,实现了DSP与USB的无缝连接。


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • dsp
    dsp
    +关注

    关注

    544

    文章

    7682

    浏览量

    344356
  • 芯片
    +关注

    关注

    447

    文章

    47788

    浏览量

    409102
  • usb
    usb
    +关注

    关注

    59

    文章

    7432

    浏览量

    258087
收藏 人收藏

    评论

    相关推荐

    采用PDIUSBD12的USB系统固件程序设计

    在外围设备上很容易实现更高级的USB功能。 3PDIUSBD12固件程序的编写 USB设备启动流程
    发表于 04-20 14:33

    采用PDIUSBD12的USB系统固件程序设计

    在外围设备上很容易实现更高级的USB功能。 3PDIUSBD12固件程序的编写 USB设备启动流程
    发表于 04-27 11:02

    使用 PDIUSBD12的 USB 系统固件程序设计

    摘要:在设计 USB 系统的过程中,固件程序的编写是非常重要的一个环节,它直接影响到开发产品的数据传输速度。以 Phillips 公司的 USB 控制
    发表于 04-27 11:40

    使用 PDIUSBD12的 USB 系统固件程序设计

    摘要:在设计 USB 系统的过程中,固件程序的编写是非常重要的一个环节,它直接影响到开发产品的数据传输速度。以 Phillips 公司的 USB 控制
    发表于 05-17 11:09

    采用PDIUSBD12的USB系统固件程序设计

    在外围设备上很容易实现更高级的USB功能。 3PDIUSBD12固件程序的编写 USB设备启动流程
    发表于 06-03 10:56

    采用PDIUSBD12的USB系统固件程序设计

    在外围设备上很容易实现更高级的USB功能。 3PDIUSBD12固件程序的编写 USB设备启动流程
    发表于 07-19 11:17

    采用PDIUSBD12的USB系统固件程序设计

    在外围设备上很容易实现更高级的USB功能。 3PDIUSBD12固件程序的编写 USB设备启动流程
    发表于 09-30 11:42

    采用PDIUSBD12的USB系统固件程序设计

    在外围设备上很容易实现更高级的USB功能。 3PDIUSBD12固件程序的编写 USB设备启动流程
    发表于 11-22 14:11

    DSPUSB接口芯片固件程序开发

    DSPUSB接口芯片固件程序开发
    发表于 10-08 15:18

    采用DSP平台实现USB接口设计

    采用的是不带MCU内核的USB接口芯片,所以关于USB1.1协?规范的实现都必须靠DSP(TMS320C2XX)控制PDIUSBD12
    发表于 06-19 05:00

    基于USB接口的固件升级程序

    为了升级便携式设备的固件,开发一种基于USB接口的固件升级程序,使得操作方便,快捷。介绍固件文件的生成,搜寻升级设备的系统路径,下载设备的二
    发表于 12-29 17:45 69次下载

    基于USBDSP的指纹识别系统的设计实现

     摘要:介绍一种以高速的DSP芯片TMS320VC5402为平台对指纹图像进行实时处理的指纹识别系统,用USB接口芯片与主机进行通信。介绍了系统的硬件、
    发表于 03-11 17:39 782次阅读
    基于<b class='flag-5'>USB</b>与<b class='flag-5'>DSP</b>的指纹识别系统的设计<b class='flag-5'>实现</b>

    TMS320F2407A DSP芯片USB接口实现

    摘要:介绍了TMS320F2407A DSP芯片USB接口的实现DSP与PC之间的高速通信一直是DS
    发表于 02-25 16:42 144次下载
    TMS320F2407A <b class='flag-5'>DSP</b><b class='flag-5'>芯片</b>的<b class='flag-5'>USB</b>接口<b class='flag-5'>实现</b>

    USB固件程序开发的实现

    本文实现USB固件程序的开发。该固件编写采用分层结构简洁且易于修改和测试,既增加了代码的可读性,又增加了
    的头像 发表于 03-07 13:47 8110次阅读
    <b class='flag-5'>USB</b><b class='flag-5'>固件</b><b class='flag-5'>程序</b>开发的<b class='flag-5'>实现</b>

    基于DSP芯片PC机之间的USB接口设计

    系统方案采用PC机作为上位机,负责USB总线上检测到设备接入并进行枚举、识别的过程,并且可以通过在PC机上运行应用程序来控制数据的传输。USB芯片作为
    发表于 06-19 15:17 1848次阅读
    基于<b class='flag-5'>DSP</b><b class='flag-5'>芯片</b>PC机之间的<b class='flag-5'>USB</b>接口设计