⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 usb协议基础及s3c2410 usb控制器.htm

📁 usb2.0中文说明,结合s3c2410芯片,详细介绍了有关寄存器和配置,接口端点等
💻 HTM
📖 第 1 页 / 共 4 页
字号:
            部分并不因为使用什幺样的接口方式而有所改变(如早期的摄像头皆采用 ECP 的并口增强模式来进行图像数据的传输,而现在几乎都是 USB 
            接口)。因而本文的重点是阐述 USB 外设接口的部分,即 USB Device Microcontroller ( 
            USB器件微控制器)。<BR>USB总线是以差模驱动的方式来进行数据传输的,但在资料包发送之前, USB 协议规定必须使用 NRZI 
            的编码方式来对资料进行编码。当然,在 USB 外设中,用于译码的器件对外设来说也是必不可少的。 NRZI 
            的编码协议其实很简单,它采用的是逢“1”保持,逢“0”跳变的原则(图9-22),而 NRZI 
          的译码则采用相反的操作。<BR></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center><IMG height=91 
            src="USB协议基础及S3C2410 USB控制器.files/422.gif" width=477></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center>图9-22 NRZI数据编码<BR></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=left>为保证数据流中有足够的信号变化, USB 协议规定了 Bit stuffing 
            (加填充位)的原则,即如果信号流中连续出现六位以上的资料“1”,则每隔六位,必须插入一个“0”,然后才进入NRZI编码。图9-23是一串原始资料及其加填充位后和 
            NRZI 编码后的资料格式对比。</DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center><IMG height=141 
            src="USB协议基础及S3C2410 USB控制器.files/423.gif" width=420></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center>图9-23 原始资料和加填充位后及NRZI编码后的资料格式对比</DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>SIE (Serial interface Engine)是 USB 
            外设最重要的硬件组成部分之一,它主要由四部分组成:<BR>1) 硬件上用来完成 NRZI 编/译码和加/去填充位操作的,NRZI/Bit 
            Buffing 和NRZO/Bit Unstuffing 的部分。<BR>2) 硬件上产生资料的 CRC 校验码并对资料包进行 CRC 
            校验的 CRC check &amp; Generator 部分。<BR>3) 用来将并行资料转化成 USB 串行资料的并/串转换部分( 
            Packet Encode ),将主机发送的 USB 资料包转化成可以识别的并行资料的串/并转换部分( Packet Decode 
            )。<BR>4) 检测和产生 SOP (即每个资料包的同步字段)和 EOP 信号的部分。<BR>USB 
            外设使用一段代码来存储关于该外设工作的一些重要信息,这被称为 USB 的协议层( Protocol Layer 
            ),它不仅存储了诸如厂家识别号、该外设所属的类型(是 HUB 还是 
            Function,是低速还是高速设备)、电源管理等常规信息,更重要的是还存储了外设的设备类型、器件配置信息、功能部件的描述、接口信息等,其存储方式都采用特征字( 
            Descriptors )的方式。 USB 主机通过在外设的协议层和主机之间建立Endpoint 
            0信道、采用控制传输的方式对这些信息进行存取。特征字采用 USB 协议所规定的结构和代码排列(关于特征字的详细信息请参阅 USB 
            协议标准)。协议层是一台 USB 外设能够被主机正确识别和配置,并正常工作的前提。可以说,协议层是一台 USB 外设的固件( 
            Firmware )中心。<BR>我们知道,资料采样率因采样精度和使用的不同场合而不同,如对于音频应用,就可以采用 22.05kHz 或 
            44.1kHz 的采样率,而这个时钟并不和 USB 标准时钟对应。因而在实际应用中,为保证采集到的资料无丢失地打包和传送,必须在 SIE 
            和数据采集部件(对诸如音箱或打印机等外设则为资料消耗部件)之间设立 FIFOs,以便对资料进行缓存。对于采用块传送和同步传送的外设而言, 
            FIFOs 的作用显得尤为重要。例如一台采用同步传输的 USB 数字摄像机(现在市场上有很多这种类型的产品),我们假设它的 CCD 为 
            400×300像素,那幺为保证资料正确地压缩、传输和接收,直到以后的解压缩及处理,在动态采集中,FIFOs至少要存储一帧图像,即要求 
            FIFOs 有 400 × 300 = 12KB的容量。<BR>在 USB 外设中,用于实现和 USB 线缆无缝连接的 USB 
            传输接收部分( Transreceiver )是必不可少的,它不仅要在电气和物理层面上实现和 USB 
            线缆的连接,而且要完成对资料包的差模驱动或分离的操作。<BR>以上我们简述了 USB 外设接口的硬件组成,那幺在完成 USB 
            数据传输的过程中,这些硬件又是如何配合工作并和位于主机的软硬件交互,以完成数据传输的呢?<BR>前面已经提到, USB 
            总线采用总线列举的方法来标记和管理外设所处的状态,当一台 USB外设初次连接到 USB 
            系统中后,通过8个步骤来完成它的初始化:<BR>1) USB 外设所连接的 HUB ( ROOT HUB 或扩展 HUB 
            )检测到所连接的 USB 外设并自动通知主机,以及它的端口状态的变化,这时外设还处于禁止( Disabled )状态。<BR>2) 
            主机通过对 HUB 的查询以确认外设的连接。<BR>3) 现在,主机已经知道有一台新的 USB 外设连接到了 USB 
            系统中,然后,它激活( Enabled )这个 HUB 的埠,并向 HUB 发送一个复位( Reset )该埠的命令。<BR>4) 
            HUB 将复位信号保持 10ms ,为连接到该埠的外设提供 100mA 
            的总线电流,这时该外设处于上电状态,它的所有寄存器被清空并指向默认的地址。<BR>5) 在外设分配到唯一的 USB 
            地址以前,它的默认信道均使用主机的默认地址。然后主机通过读取外设协议层的特征字来了解该外设的默认信道所使用的实际的最大资料有效载荷宽度(即外设在特征字中所定义的在 
            DATA0 资料包中数据域位的长度)。<BR>6) 主机分配一个唯一的 USB 地址给该外设,并使它处于 Addressed 
            状态。<BR>7) 主机开始使用 Endpoint 0 信道读取外设的器件配置特征字,这会花去几帧的时间。<BR>8) 
            基于器件配置特征字,主机为该外设指定一个配置值,这时,外设即处于配置( Configured )状态了,它所有的端点( Endpoint 
            )这时也处于配置值所描述的状态。从外设的角度来看,这时该外设已处于准备使用的状态。<BR>在一台外设能被使用之前,它必须被配置。“配置”即主机根据外设的配置特征字来定义器件的配置寄存器,以便规定外设的所有 
            Endpoint 
            的工作环境。如某信道所采用的数据传输方式,该外设所属的器件“类”(Class)、“子类”(SubClass)等,从而通过基于主机的 
            USB 系统软件或客户软件对外设进行控制。当一台 USB 外设配置好以后,即会进入到挂起 ( Suspend 
            )状态,直到它开始被使用。<BR>必须指出的是,一台 USB 外设一旦配置好,它的每一个特定的信道只能使用一种数据传输方式。 
            Endpoint 0 信道只能采用控制传送的方式,主机通过 Endpoint 0 来传送标准的 USB 
            命令,完成诸如读取器件配置特征字、控制外设对资料的采集、处理和传送等任务,并可以通过Endpoint 
            0来检测和改变外设所处的状态(如对外设的远程唤醒、挂起和恢复等)。<BR>对于一台采用同步传输的数字摄像机来说,数据传输的过程如下:<BR>(1) 
            应用软件( CSW )在内存中开辟资料缓冲区,并通过标准 USB 命令字向外设发出资料请求(IRPs)。<BR>(2) 主机 USB 
            系统软件通过对该 IRPs 的翻译形成 Token 资料包发送到外设,这时主机进入等待状态。<BR>(3) 外设对资料包进行 NRZI 
            译码和 Bit Unstuffing 操作及 CRC 校验,确认后接收主机 PID 字段中所包含的命令并开始采集资料。<BR>(4) 
            采集到的并行资料首先进入 FIFOs ,并通过并/串转换部件形成串行脉冲。<BR>(5) 
            根据器件配置寄存器的要求对资料进行符合条件的分割,配置资料包的 PID 字段等以形成原始资料包。<BR>(6) 通过 CRC 
            校验产生器对每一个资料包生成 CRC 校验码字段, SOP &amp; EOP 
            信号产生器为该资料包加入同步字段头和资料包结束符。<BR>(7) 数据包的 NRZI 编码和 Bit Stuffing 
            操作。<BR>(8) 使用收发器( Transreceiver )将数据流驱动到 USB 线缆上。<BR>(9) 主机控制器将 USB 
            资料转化成为普通资料送到资料缓冲区以进行资料的进一步处理。如果是控制传输、块传输或中断传输方式,在资料被成功传送后,主机还会向外设发送 
            ACK 的握手资料包作为响应。</TD></TR></TBODY></TABLE>
      <TABLE height=503 cellSpacing=0 cellPadding=0 width="90%" align=center><!--DWLayoutTable-->
        <TBODY>
        <TR>
          <TD vAlign=top 
            height=82>图9-24简单描绘了异步数据传输的请求和传送过程(在同步传输中没有Handshake部分)。</TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center><IMG height=85 
            src="USB协议基础及S3C2410 USB控制器.files/424.gif" width=437></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center>图9-24 异步数据传输的请求和传送过程</DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=left>至此,我们已从几个方面较详细地介绍了 USB 系统的软硬件构成及 USB 的数据传输协议。USB 
            可以说是开辟了计算机外设接口的新纪元。它把人们从繁杂的联机、不同的接口标准和恼人的中断冲突中解放出来;<BR>使“PnP”和“热插拔”这样的特性不再只是口号;它大大扩展了计算机可连接的外设数目;它的智能电源管理有效地降低了手持计算机的电源损耗。USB 
            正在成为市场的热点,越来越多的外设生产厂家将自己的产品转向 USB 接口。而 USB 2.0 协议的推出,无疑对 USB 
            技术的发展起到了推波助澜的作用。<BR>在如鼠标、键盘、手写板或是游戏杆等人机交互的应用场合:如扫描仪、数码相机、移动存贮设备、数字摄像机等数据输入应用场合,USB 
            无疑是替代传统串/并口的最佳接口方式,它们使得 USB 的优点得到了充分发挥。<BR>二、S3C2410 内置USB1.1 
            Device控制器<BR>S3C2410 内置的 USB Device 控制器具有一下特性:<BR>(1) 完全兼容 USB1.1 
            协议<BR>(2) 支持全速(Full Speed)设备<BR>(3) 集成的 USB 收发器<BR>(4) 
            支持Control、Interrupt 和 Bulk传输模式<BR>(5) 5 个具备 FIFO 的通讯端点<BR>(6) Bulk 
            端点支持DMA操作方式<BR>(7) 接收和发送均有 64Byte 的FIFO<BR>(8) 
            支持挂起和远程唤醒功能<BR>下图(图9-25)是 USB 控制器的内部逻辑示意图<BR></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center><IMG height=428 
            src="USB协议基础及S3C2410 USB控制器.files/425.gif" width=516></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center>图9-25</DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=left>三、S3C2410 USB 内部控制寄存器简介:<BR>FUNC_ADDR_REG :USB 
            设备地址寄存器(见图9-26)<BR>FUNCTION_ADDR :CPU 将由 USB 
            主机分配的器件地址写入该字段<BR>ADDR_UPDATE :当 CPU 写入新的地址后,置该位来更新 FUNCTION_ADDR 
            字段中的值<BR></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center><IMG height=103 
            src="USB协议基础及S3C2410 USB控制器.files/426.gif" width=516></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center>图9-26</DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=left>PWR_ADDR :电源管理控制寄存器(见图9-27)<BR>SUSPEND_EN 
            :使能SUSPEND模式<BR>SUSPEND_MODE :当设备进入 SUSPEND 状态时,由 USB 
            控制器设置<BR>MCU_RESUME :由 CPU 设置 进入 RESUME 状态<BR>USB_RESET :当 USB 
            主机发出复位(RESET)命令后,由CPU设置<BR>ISO_UPDATE :只用于 ISO 传输模式<BR></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center><IMG 
            src="USB协议基础及S3C2410 USB控制器.files/427.gif"></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center>图9-27</DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=left>EP_INT_REG : Endpoint 中断标志寄存器(见图9-28) </DIV>
            <DIV align=left></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center><IMG height=433 
            src="USB协议基础及S3C2410 USB控制器.files/428.gif" 
width=516><BR></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center>图9-28</DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=left>USB_INT_REG :USB中断标志寄存器(见图9-29)</DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center><IMG height=266 
            src="USB协议基础及S3C2410 USB控制器.files/429.gif" width=516></DIV></TD></TR>
        <TR>
          <TD class=text2 vAlign=center>
            <DIV align=center>图9-29</DIV></TD></TR></TBODY></TABLE>
      <TABLE height=49 cellSpacing=0 cellPadding=0 width="90%" align=center><!--DWLayoutTable-->
        <TBODY>
        <TR>
          <TD vAlign=top>EP_INT_EN_REG :Endpoint 中断使能寄存器(见图9-30)</TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center><IMG height=166 
            src="USB协议基础及S3C2410 USB控制器.files/430.gif" width=516></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center>图9-30</DIV></TD></TR>
        <TR>
          <TD vAlign=top>INT_MASK_REG :USB 中断屏蔽寄存器(见图9-31)</TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center><IMG height=96 
            src="USB协议基础及S3C2410 USB控制器.files/431.gif" width=516></DIV></TD></TR>
        <TR>
          <TD vAlign=top>
            <DIV align=center>图9-31 </DIV></TD></TR>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -