嵌入式爱好者

嵌入式爱好者 门户 知识库 查看内容

AM3354 关于usb工作原理的部分介绍

2018-1-2 14:21| 发布者: 飞凌-peacelove| 查看: 1950| 评论: 0

类目:  >  知识库     文档编号: 156

USB接口的种类
USB1.0;USB1.1;USB1.2;USB2.0;USB3.0
1.0和1.1速度是一样的,分为两种工作模式:慢速和全速;2.0为高速

335x cpu手册关于usb的读写:
当任何USB控制器承担主机的作用时,USB需要通过其VBUS线向连接的设备提供5V电源。为了实现这一任务,USB控制器需要使用能够提供5V电源的外部电源逻辑(或电荷泵)。 USB_DRVVBUS用作控制信号,以使能/禁止此外部电源逻辑,从而导通或禁用VBUS线上的电源。 USB_DRVVBUS上的控制是自动的,由USB控制器。只要正确的硬件连接和软件初始化到位,控制应该对用户是透明的。当控制器处于会话中时,USB控制器在承担主机角色时将USB_DRVVBUS信号驱动为高电平。当假设器件的作用时,控制器将USB_DRVVBUS信号驱动为低电平,禁止外部电荷泵/电源逻辑;因此,在VBUS线路上不驱动电源(在这种情况下,功率预期由外部主机提供)。注意,两个USB都是自供电的,并且设备不依赖于由外部源提供的VBUS线上的电压主机用于控制器操作时承担设备的角色。 VBUS上的电源用于识别主机的存在。它还用于为D +线上的上拉电源上电.USB PHY将连续监视VBUS上的电压,并将状态报告给USB控制器。
由于USB控制器是双重角色控制器,能够承担主机或设备的角色,必要的上拉/下拉电阻不能存在于器件外部。这些上拉/下拉电阻器存在于器件内部,在PHY内部更具体,并且被启用和禁用基于控制器假定允许动态硬件配置的角色。当承担主机的作用时,数据线由PHY使能内部拉低15KOhm电阻。当假设器件的作用是在D +上需要1.5Kohm的上拉电阻线自动启用,以表示外部主机作为FS设备的USB功能(HS在复位总线条件期间协商操作)。
非索引端点控制/状态寄存器空间。这些区域是存储器映射的专用端点寄存器,驻留在用于USB0的偏移1500h到16FFh和用于USB1的1D00h到1EFFh。偏移量1500h至150Fh的寄存器属于端点0;在偏移1510h到151Fh的寄存器属于端点1 ...最后在偏移16F0h到16FFh的寄存器属于USB0的端点15。类似地,在偏移量1D00h至1E0Fh处的寄存器属于端点0;在偏移1D10h到1D1Fh的寄存器属于端点1 ...,最后寄存器在偏移1DF0h到1DFFh属于用于USB1的端点15.这允许用户/固件直接从其独特空间访问端点寄存器区域,索引区域或通过编程相应的索引寄存器从代理空间。
注:控制和状态寄存器/区域适用于给定端点的Tx和Rx。那是,端点1 Tx和端点1 Rx寄存器占用相同的寄存器空间。有关USB控制器寄存器的详细信息,请参见第16.5节。
每个USB模块支持总共32K字节的FIFO RAM来动态分配FIFO到所有端点。每个端点需要一个FIFO与其相关联。每个寄存器有一组端点可用于FIFO分配,不包括端点0. FIFO配置寄存器是索引的寄存器,不能直接访问;配置通过访问代理寄存器进行。的地址为140Eh或1C0Eh的INDEX寄存器必须设置为相应的端点。换句话说,端点FIFO配置寄存器没有非索引区域。
将FIFO空间分配给不同的端点需要对每个Tx和Rx端点进行编程具有以下信息:

USB控制器主机和外设模式操作
USB2.0 OTG控制器确定其工作模式的程序(usb控制器假设a主机或外设的角色)在USB 2.0控制器进入会话时启动。 USB 2.0控制器在它感测到USBx_VBUSIN引脚上的电压(> = 4.4V)时处于会话中控制器设置其DEVCTL [SESSION]位字段或固件设置DEVCTL [SESSION]位;假设它将作为主机运行。当DEVCTL [SESSION]位置1过来又由USBx_ID引脚(h / w选项)或MODE寄存器的IDDIG位域控制(s / w选项)。如果发现iddig信号的状态为低(IDDIG被编程时,控制器将开始感测Iddig信号的状态,反为“0”),则USB2.0控制器将承担主机的作用,当它发现iddig信号为高电平时(IDDIG为编程为'1'),那么它将承担设备的角色。注意iddig是一个内部信号可以通过固件从专用寄存器驱动为高或低。
当USB控制器确定其作为主机的角色时,它会将USBx_DRVVBUS引脚驱动为高电平,以使能外部电源逻辑,从而开始提供所需的5V电源(必须≥4.4V,但要考虑电缆上的电压降 建议在4.75V附近)。 然后,USB2.0控制器将等待USBx_VBUSIN的电压变为高电平。 在100 ms之后,如果看不到USBX_VBUSIN引脚上的电压在Vbus有效范围(> = 4.4V)内,则会产生Vbus错误中断。 假设USBX_VBUSIN的电压电平在Vbus有效范围内,则USB 2.0主机控制器将等待设备连接; 也就是说它看到其数据线USB0 / 1_DP / DM之一被拉高。

当假定外设的角色时,假定固件已将POWER [SOFTCONN]位置1,并且USBx_ID引脚悬空(h / w选项)或USBx模式寄存器IDDIG位字段被编程为'1'(s / w选项),外部主机在USBx_VBUSIN线路上供电,然后USB2.0控制器将设置DEVCTL [SESSION]位,指示控制器进入会话。不是电压的USBx_VBUSIN引脚必须在Vbus有效范围内(即大于或等于4.4V)。当控制器 进入会话,它将强制USB2.0控制器检测iddig信号的状态。一旦它感觉到iddig信号为高电平,它将使能其1.5K欧姆上拉电阻来表示外部主机,它是一个FullSpeed器件。请注意,即使在作为高速外设运行时; USB控制器必须先进行作为全速,然后过渡到高速。然后USB2.0控制器将等待a来自外部主机的复位信号。然后,如果高速选项被选择,它将协商高速操作,如果其请求已被主机接受,则将使其精度为45欧姆终端电阻(以停止信号反射)在其数据线和禁用1.5Kohm电阻。
在这一点上,控制器然后可以保持活动(并且因此能够检测何时恢复信令发生在USB上),或者应用可以安排通过停止其时钟来禁用控制器。然而,如果时钟不是,则控制器将不能够检测USB上的恢复信令运行。如果是这种情况,将需要外部硬件来检测恢复信令(通过监视)DM和DP信号),以便可以重新启动控制器的时钟.恢复信令 - 当总线上发生恢复信令时,首先到控制器的时钟必须是必要时重新启动。然后控制器将自动退出挂起模式。如果恢复中断是使能,将产生中断。启动远程唤醒 - 如果软件要在控制器处于启动状态时启动远程唤醒挂起模式,它应该将POWER [RESUME]位设置为1.软件应该保留此位置位在将其复位为0之前约10 ms(最小2ms,最大15 ms)。注意:当软件启动远程唤醒时,不会产生恢复中断。复位信号 - 当总线上发生复位信号或总线条件时,控制器执行以下操作:
•将FADDR寄存器清零
•将INDEX寄存器清零
•刷新所有端点FIFO
•清除所有控制器控制/状态寄存器
•产生复位中断
•启用核心级别的所有中断。
如果POWER寄存器(位5)中的HSENA位置1,则控制器还会尝试协商高速运行。是否选择高速操作由POWER的HSMODE位指示寄存器(位4)。当应用软件接收到复位中断时,它应该关闭所有打开的管道并等待公共汽车点查端点0是核心的主控制端点。 软件需要处理可以通过端点0发送或接收的所有标准设备请求。这些在通用串行总线规范,修订版2.0,第9章中描述。这些设备请求的协议涉及不同数量和类型的事务 请求/命令。 为了适应这一点,软件需要采取状态机方法来命令解码和处理。
USB外围设备接收的标准设备请求可以分为三类:
零数据请求(其中所有信息包括在命令中;不需要附加数据),写请求(其中命令将跟随附加数据)和读请求(其中设备需要发送数据 回到主机)。本节讨论软件必须执行以处理这些不同类型的设备请求的操作序列。 注意:与任何标准设备请求相关联的安装程序包应包含一个8字节命令。 任何包含8字节以外的命令字段的设置数据包将被控制器自动拒绝。



已解决

未解决

只是看看

最新评论

QQ|小黑屋| 飞凌嵌入式 ( 冀ICP备12004394号-1 )

GMT+8, 2025-5-4 10:04

Powered by Discuz! X3.4

© 2001-2013 Comsenz Inc.

返回顶部