TRM手册中给出了所有的寄存器配置,在 slave fifo模式或者 GPIF模式等,所以对于用到的各种寄存器配置需要查看此手册,当然还可以配合着应用手册《AN61345》.

  1.主机操作

  对于USB2.0的设备来说,是不能作为主机,主动发送数据或者接收数据的,如下面的描述。

2. 方向控制

   OUT意味着 主机到设备,IN是设备到主机,这里注意以下,若是工作在slave fifo模式下,FPGA与 EZ-USB通信,最后传递给上位机,应该是工作在IN模式(输入模式)。

  3.事务处理方式

  令牌包,数据包,握手包。

   4.枚举

   (1)首先是主机发送 get descriptor device指令请求给地址0;

   (2)设备响应请求,发送ID给主机得到确认;

   (3)主机发送地址请求,此地址是设备特有的;

   (4)主机再发送其他额外的设备信息get descriptor device;

  其实上述的这些响应,EZ-USB内部会自动完成,只需了解其机制即可。

   4.1重枚举

   当第一次插入设备,需要安装驱动,等下次再插入设备时,会自动被识别,这就是重枚举过程。

  

   5.EZ-USB架构

  6.端点缓冲配置方式

  手册中有介绍,ENDPOINT buffer一共就有12种配置方式,如下所示:

   对照两个图可以看出,端点缓冲区的设置是与CPU部分进行通信的,包括缓冲区大小,几个缓冲区,输入和输出,以及缓冲模式(bulk,control,同步模式,中断模式)

   7.SLRD,SLWR,FLAGABC,SLOE,SLCS几个信号讲解

 

    上图中,FPGA与CY7C68013A进行通信,工作在slave fifo模式,其中我们只需用到FPGA对CY进行写操作。所以对于写入情况手册中有给出如下情况:

   在写入数据时,是伴随着ifclk时钟频率下,在上升沿进行采样,且此时SLWR为低电平,SLCS为低电平。

   flagABC,其中A代表空,B代表满,C代表可编程,FPGA可以通过这几个信号来判断CY是写满还是读空。

  SOLE是输出使能信号,高电平使能。

  SLRD是读出信号,如下图所示:

   SLRD也是低电平有效,并且SLCS金额SLOE也是低电平时在ifclk时钟频率下开始读出数据,由于FPGA与CY通信只是写入情况,用不到读出,所以可以直接将SLOE,SLRD直接拉高。

  8.电源管理模式

  主要有suspend,resume,idle,wakeup模式

  8.1晶振时钟源寄存器设置,默认值是1.

  8.2 唤醒控制

   wakeup引脚的优先权是通过WUPOL和WU2POL来设置的,DPEN使用来设置D+的使能,WUEN使能wakeup引脚,WU2EN使能WU2引脚。通过设置上述参数,就可以进入到wakeup中断。有上述可以看出,有三种中断源可以使CY进入到中断模式,1)wakeup(WUEN),2)D+(DPEN),3)WU2(WU2EN),进入中断后,8052就会推出idle模式。

  9.复位

     复位有三种方式:硬件复位(低电平有效),CPU复位(由EZ-USB的逻辑控制),USB总线复位。

   10.端点介绍

   端点2.4.6.8可以进行配置。通过下图的寄存器进行配置。

  对于每个buffer缓冲器的数据大小通过以下寄存器进行设置   。

  11.自动指针

  自动指针会当每个字节发送过来后自动增加。

  其他参看博客连载18的内容

USB2.0学习笔记连载(十九):EZ-USB TRM手册重要部分介绍的更多相关文章

  1. USB2.0学习笔记连载(九):USB设备驱动的安装

    在第一次插入USB设备时(笔者用的是自己做的USB最小系统来测试),插入电脑后,在设备管理器中会显示 未知设备,如下图所示: 点击右键,选择属性,在详细信息中可以看到硬件ID以及PID等,如下图所示. ...

  2. USB2.0学习笔记连载(十八):keil实现寄存器的配置及相关函数讲解(二)

    其实之前也有提及过,Cypress公司提供的官方文件和应用手册真的可以解决很多问题.做的也很人性化,操作也及其简单,几乎只要在 TD_int()里面配置一些常用的参数即可,其他都可以不用操作. 作为一 ...

  3. USB2.0学习笔记连载(一):CY7C68013特性简介

    上一篇博客已经给出了整个视频板卡架构,那么对于USB接口部分需要着重理解和学习. 对于目前来说,若是利用FPGA去模拟USB2.0内核,难度还是挺大的,整个状态的收发都不好控制.现在目前都在使用桥接芯 ...

  4. USB2.0学习笔记连载(十七):keil实现寄存器的配置及相关函数讲解(一)

    首先要实现对寄存器的配置,可以参考手册<Development kit  User Guide>,如下图所示: 此文件包含在 文件中.上述的应用文档详细介绍了如何利用KEIL实现对固件程序 ...

  5. USB2.0学习笔记连载(六):USB2.0硬件设计需要注意事项

    笔者在设计USB2.0时找到了一个官方给的硬件设计正确设计指南,其中有些内容还挺nice的.不单单只是USB的设计,其中有些思想可以应用到其他的场合中. 对于USB2.0而言,全速状态下可以达到480 ...

  6. USB2.0学习笔记连载(三):通用USB驱动程序解析

    对于USB驱动的开发,读者可以使用Windows DDK.DriverStudio等多种开发工具来实现USB的驱动,但是驱动程序的开发过程都比较复杂,而且很容易致使USB主机内存泄露而死机.那么对于笔 ...

  7. USB2.0学习笔记连载(二):USB基础知识简介

    USB接口分为USB A型.USB B型.USBmini型.USBmicro型.USB3.0其中每种都有相应的插座和插头. 图1 图2 上图是USBA型接口,图1为插座,图2为插头.插座指向下行方向, ...

  8. USB2.0学习笔记连载(十四):USB驱动安装及固件程序的编写

    在之前的博客中已经讲过,驱动程序最核心的两个文件,一个是xxx.sys文件,一个是xxx.inf文件,主机是寻找xxx.inf文件. 在下面的文件中有相关关于USB驱动的说明.对于用户来说,xxx.s ...

  9. USB2.0学习笔记连载(十):关于WIN8及以上系统哈希值问题

    笔者上一篇博客讲解了关于驱动的安装,笔者使用的系统是win8.1系统,那么对于win8系统及以上系统,会对外部设备,没有在windows系统中进行签名过的,都是不允许在windows系统中进行安装的, ...

随机推荐

  1. 有关google的appengine部署服务器的简单教程

    以下的内容都是看这个网址:https://developers.google.com/appengine/. 1.既然是google的东西.当然就要注册一个google的账号吧. (记得注册后要顺便把 ...

  2. Atitit 软件体系的进化,是否需要一个处理中心

    Atitit 软件体系的进化,是否需要一个处理中心 1.1. 进化树上是没有主干的..1 1.2. ,软件进化的行为1::主要就是给新的应用编写新的程序.1 1.3. ,软件进化的行为2::软件的维护 ...

  3. Vivado+FPGA:如何使用Debug Cores(ILA)在线调试(烧录到flash里可以直接启动)

    在Vivado下在线调试是利用ILA进行的,Xilinx官方给出了一个视频,演示了如何使用Vivado的debug cores,下面我根据这个官方视频的截图的来演示一下: 官方的视频使用的软件版本为2 ...

  4. Pycrypto与RSA密码技术笔记

    密码与通信 密码技术是一门历史悠久的技术.信息传播离不开加密与解密.密码技术的用途主要源于两个方面,加密/解密和签名/验签 在信息传播中,通常有发送者,接受者和窃听者三个角色.假设发送者Master想 ...

  5. 使用JSR-303进行后台数据校验

    一.在SringMVC中使用 使用注解 1.准备校验时使用的JAR validation-api-1.0.0.GA.jar:JDK的接口: hibernate-validator-4.2.0.Fina ...

  6. 如何在 Linux 上设置密码策略

    https://linux.cn/article-2518-1.html 用户帐号管理是系统管理员最重要的工作之一.而密码安全是系统安全中最受关注的一块.在本教程中,我将为大家介绍如何在 Linux ...

  7. linux系统查毒软件ClamAV

    安装方法: 长久使用参考: http://www.cnblogs.com/kerrycode/archive/2015/08/24/4754820.html#undefined 临时使用参考: htt ...

  8. nginx源码分析:module机制

    根据nginx官方文档,添加一个module的介绍,当我们需要添加一个module时,需要以下操作: 1.为该module新建一个目录. 2.添加一个config文件,一个module核心代码源文件. ...

  9. Android getWindow().setFlags方法

    //设置窗体全屏 getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams ...

  10. MySQL5.7 利用keepalived来实现mysql双主高可用方案的详细过程

    Reference:  http://blog.csdn.net/mchdba/article/details/51377989 服务器准备 Keepalived:192.168.13.15 Keep ...