应用笔记 3597

MAX3420E常见问题


摘要 : 本应用笔记列出了SPI™接口外设控制器MAX3420E的常见问题(FAQ)。

  1. 一般问题
    1. 什么是MAX3420E?
    2. MAX3420E包含微处理器吗?
    3. MAX3420E能够提供什么样的封装?
    4. MAX3420E提供无铅封装吗?
  2. USB问题
    1. MAX3420E支持何种USB速率?
    2. MAX3420E符合USB规范吗? 具体是哪个版本?
    3. MAX3420E支持多少个端点?
    4. MAX3420E为什么不支持同步传输?
    5. 我可以在自供电外设中使用MAX3420E吗?
    6. 我可以在总线供电的外设中使用MAX3420E吗?
    7. MAX3420E与USB连接需要什么样的外部电路?
    8. 能够推荐一款3.3V稳压器吗?
    9. CONNECT位起什么作用?
  3. 接口问题
    1. 微处理器是怎样与MAX3420E连接的?
    2. SPI接口为3、4或者5线。这是什么意思?
    3. MAX3420E支持何种SPI时钟模式?
    4. 我的CPU使用2.5V电源,但是MAX3420E使用3.3V VCC电源。我需要外部电平转换器吗?
    5. MAX3420E的INT引脚起什么作用?
    6. MAX3420E支持低电平有效的线或中断吗? 支持边沿有效中断吗?
    7. MAX3420E SPI接口的最大速率是多少(SCLK最大频率)?
    8. MAX3420E SCLK频率有下限吗?
    9. 我有一个8引脚微处理器,它的IO引脚中有5个需要连接至MAX3420E。我怎样分配IO呢?
    10. 我需要为GPIN引脚加外部上拉电阻吗?
    11. 我可以使用SPI接口引脚驱动光耦吗?
    12. VBCOMP引脚的作用是什么? 它为MAX3420E供电吗?
  4. 编程问题
    1. 我的固件如何与MAX3420E进行通信?
    2. 怎样设置MAX3420E,来处理USB枚举?
    3. 怎样编程实现BULK IN传输?
    4. 当固件装载IN FIFO时,此时收到USB IN请求,会出现什么情况?
    5. 怎样知道何时需要装载IN FIFO?
    6. 如果出现了USB传输错误,情况会怎样? 我需要编写代码来处理这一错误吗?
    7. 怎样编程实现BULK OUT传输?
    8. INTERRUPT传输的情况如何?
    9. 怎样编程实现SETUP传输?
    10. 我需要设置USB数据触发吗?
    11. 通过向MAX3420E中断请求位写“1”以对其清零。这是反向操作吗?
    12. 有什么编程提示吗?
  5. 主机软件问题
    1. 我的Windows应用软件怎样与MAX3420E进行通信?
    2. Maxim提供定制Windows驱动程序吗?
    3. Maxim提供什么样的实例代码?
    4. 我想设计一个基于MAX3420E的设备,但是不符合标准Windows类。应如何获取Windows驱动程序?
    5. MAX3420E与USB “串口桥接”芯片相比,结果如何?
    6. 采用MAX3420E的优缺点是什么?
  6. 其他问题
    1. 我的固件能够确定我使用的芯片版本吗?
    2. MAX3420E最新的版本号是多少?

  1. 一般问题
    1. 什么是MAX3420E?
      MAX3420E是一个USB全速(12Mbps)外设控制器,内置收发器和处理具体底层USB信令的USB串行接口引擎(SIE)。

    2. MAX3420E包含微处理器吗?
      不包含。MAX3420E为方便与微处理器、DSP和ASIC连接而设计。它可以向任何系统增加USB功能,而不必更换处理器或者开发工具。

    3. MAX3420E能够提供什么样的封装?
      MAX3420E可提供两种封装。32引脚TQFP (7mm x 7mm封装尺寸)封装,由于带有封装引线,非常适合样机开发和实现较短的生产周期。24引脚TQFN封装(5mm x 5mm封装尺寸,焊盘在封装下面)适用于大批量紧凑型产品。

    4. MAX3420E提供无铅封装吗?
      是的。

  2. USB问题
    1. MAX3420E支持何种USB速率?
      MAX3420E作为外设支持USB全速(12Mbps)工作模式。

    2. MAX3420E符合USB规范吗? 具体是哪个版本?
      MAX3420E符合USB 2.0规范,可全速工作。

    3. MAX3420E支持多少个端点?
      MAX3420E包括四个端点:
      • EP0,双向CONTROL端点,64字节FIFO。
      • EP1,OUT BULK或者INT端点,2 x 64字节双缓冲FIFO。
      • EP2,IN BULK或者INT端点,2 x 64字节双缓冲FIFO。
      • EP3,IN BULK或者INT端点,64字节FIFO。
      通过这些端点,可以构建支持通用USB驱动程序的USB外设,例如人机接口设备(HID)、大容量储存、图象传输协议(PTP)和打印机等。

    4. MAX3420E为什么不支持同步传输?
      同步传输需要快速接口和大容量缓冲,这些均与MAX3420E的设计目标(能够以任意速率运行的SPI接口低成本器件)不符。需要同步带宽的大部分应用实际上可以由BULK或者INTERRUPT传输完成。这是因为系统中USB设备所能提供的大部分同步带宽,BULK/INT传输通常也能提供。

    5. 我可以在自供电外设中使用MAX3420E吗?
      当然可以。实际上,MAX3420E为支持自供电应用而整合了专门的特性。例如,自供电应用中外设需要知道设备什么时候插入到一个上电的USB端口。MAX3420E的VBCOMP (VBUS比较器)引脚连接至VBUS,并与内部比较器相连,该比较器在插入USB端口时提供一个中断请求(VBUSIRQ),与USB端口断开连接时提供另一个中断请求(NOVBUSIRQ)。MAX3420E还有另一个功能,当探测到VBUS断开时,可置位VBGATE (VBUS控制)位,自动断开D+上拉电阻。这也是USB规范所要求的。

    6. 我可以在总线供电的外设中使用MAX3420E吗?
      是的。在总线供电应用中,一个3.3V稳压器与USB连接器的VBUS引脚相连。当外设插入到USB端口时,稳压器为芯片和SPI主控制器供电。因此,MAX3420的VBCOMP引脚不需要接VBUS。在这种情况下,VBCOMP输入可以用作额外的通用输入。必须要注意,确保该引脚的输入信号符合MAX3420 Electrical Characteristics表中给出的门限要求。

    7. MAX3420E与USB连接需要什么样的外部电路?
      MAX3420E需要一个3.3V VCC。总线供电外设需要一个3.3V稳压器将VBUS引脚(4.4V至5.25V)的电压转换为3.3V。此外,MAX3420E还需要一个外部晶振(并联谐振,12MHz ±0.25%),每个引脚的负载电容连接至地,在D+/D-输出之间需串连两个电阻(33Ω,1%),还需要一个USB “B”型连接器。

    8. 能够推荐一款3.3V稳压器吗?
      MAX6349TL比较合适。它可提供3.3V、150mA输出,具有上电复位(POR)电路,可直接与MAX3420E的RES#引脚连接。在USB外设这样的热插拔设计中,良好的外部POR电路非常重要。

    9. CONNECT位起什么作用?
      MAX3420E在D+引脚和VCC之间有一个可开关控制的1500Ω上拉电阻。CONNECT位控制该开关的状态。该开关允许总线供电的外设完成初始化后再与USB相连。根据USB规范的要求,在没有VBUS的情况下,它还允许自供电外设断开上拉电阻上的VCC

  3. 接口问题
    1. 微处理器是怎样与MAX3420E连接的?
      微处理器完成SPI主控制器的功能,使用3、4或者5线接口与MAX3420E相连。某些微控制器含有硬件SPI,但是大部分没有。对于后一种情况,可以通过位模拟方式利用通用IO引脚实现SPI主控制器。

    2. SPI接口为3、4或者5线。这是什么意思?
      最简单的SPI接口包括三条线:SS# (从机选择)、SCLK (串行时钟)和MISO (双向MISO/MOSI数据配置)。由于该接口不使用INT引脚,控制微处理器需要查询两个中断请求寄存器来确定MAX3420E什么时候需要服务。

      通过设置控制位(FDUPSPI,全双工SPI),使MOSI和MISO数据出现在不同引脚上,可实现4线接口。最后,一个INT (中断输出)引脚可连接处理器的中断系统。

    3. MAX3420E支持何种SPI时钟模式?
      SPI模式通常以(x,y)的形式表示,其中一个变量是时钟极性CPOL,另一个是时钟相位CPHA。MAX3420E不需要模式位,可工作在模式(0,0)或者(1,1)下。这些模式的唯一区别是无效SCLK电平:(0,0)为低电平,(1,1)为高电平。MAX3420E SPI接口有两个基本要求:
      • 提供给MAX3420E的MOSI数据必须在第一个SCLK上升沿之前有效。
      • 在时钟上升沿采样SPI输入数据,在SCLK下降沿输出数据。
      应该对这些模式多加注意—某些微处理器的数据资料并不支持(0,0)和(1,1)模式。设置时钟模式时,最好验证一下上面两点。请参见MAX3420E数据资料MAX3420E编程指南中的SPI实例波形。

    4. 我的CPU使用2.5V电源,但是MAX3420E使用3.3V VCC电源。我需要外部电平转换器吗?
      不需要。MAX3420E包含内部电平转换器。由VL引脚对内部逻辑供电,作为SPI和IO引脚信号的逻辑参考电压。对于2.5V接口,需将VL引脚接2.5V电源。VL引脚能够工作在1.7V至3.6V电压范围内。如果控制器使用3.3V电源,将VL接至VCC

    5. MAX3420E INT引脚起什么作用?
      MAX3420E需要服务时,INT引脚变为有效状态。USB外设工作期间,这些情况包括到达SETUP、IN或者OUT封包,以及总线复位、挂起和恢复等总线事件。在系统中使用该引脚时,由于不需要通过SPI接口查询中断请求位,因此可以减少SPI的流量。

    6. MAX3420E支持低电平有效的线或中断吗? 支持边沿有效中断吗?
      MAX3420E通过INTLEVEL控制位可支持两种中断类型。设置INTLEVEL=1时,INT输出引脚为开漏极、低电平有效输出,适合线或应用。该模式需要一个外部上拉电阻与VL连接。设置INTLEVEL=0 (默认值)时,INT引脚为边沿有效输出,带有一个推挽输出驱动器。在边沿模式下,通过POSINT位将边沿极性设置为上升沿或者下降沿。

    7. MAX3420E SPI接口的最大速率是多少(SCLK最大频率)?
      VL等于或者大于2.5V时,SCLK信号可以高达26MHz。对于较低的VL电压,数据资料给出了SCLK最大频率需要降低多少。

    8. MAX3420E SCLK频率有下限吗?
      没有。该时钟可无限期地保持高电平或低电平。同样,SS#为高电平时,MAX3420E将忽略SCLK的转换。

    9. 我有一个8引脚微处理器,它的IO引脚中有5个需要连接至MAX3420E。我怎样分配IO呢?
      MAX3420E有四个通用输出(GPOUT3-0)和四个通用输入引脚(GPIN3-0),通过IOPINS寄存器R20进行设置和读取。这填补了用于实现SPI接口的微控制器引脚,并增加了额外的引脚。

    10. 我需要为GPIN引脚加外部上拉电阻吗?
      不需要。GPIN引脚内部上拉至(典型值为20kΩ) VL

    11. 我可以使用SPI接口引脚驱动光耦吗?
      可以。MAX3420E输出具有足够大的驱动电流,可通过串联电阻驱动光耦的LED。请参考数据资料了解确切的驱动规格。输出缓冲器一开始就面向光隔离进行了设计,因此MAX3420E的SPI接口非常适合构建电气隔离USB。

    12. VBCOMP引脚的作用是什么? 它为MAX3420E供电吗?
      不。VBCOMP引脚不对MAX3420E的任何部分供电。它只连接至一个内部比较器,以探测是否连接了VBUS

  4. 编程问题
    1. 我的固件如何与MAX3420E进行通信?
      MAX3420E有21个寄存器,可通过从机SPI接口进行访问。SPI主控制器首先发送一个命令字节,设置寄存器地址和方向,然后传输一个或多个数据字节。

    2. 怎样设置MAX3420E,来处理USB枚举?
      做为外设,MAX3420E只需响应来自主机(通常是PC)的命令即可。

    3. 怎样编程实现BULK IN传输?
      当有数据需要发送给主机时,先装载IN FIFO,然后写入特定端点的字节计数寄存器。由于IN FIFO的长度为64字节,一次可以装入64个字节。数据装入之后,将装入到IN FIFO的字节数写入IN端点的BYTECOUNT寄存器。写入字节计数寄存器使进行USB传输的端点“准备就绪”。MAX3420E将完成后面的工作。接下来收到针对该设备地址的IN请求时,准备好的端点将FIFO数据发送至主机。

    4. 当固件装载IN FIFO时,此时收到USB IN请求,会出现什么情况?
      MAX3420E注意到了这一问题。它采用一个NAK (否定应答)握手信号,即以IN FIFO“未准备好”自动响应IN请求。该握手信号通知USB主机端点忙,主机应稍后以另一个IN请求进行尝试。

    5. 怎样知道何时需要装载一个IN FIFO?
      MAX3420E为IN端点提供中断请求位,即IN3BAVIRQ、IN2BAVIRQ和IN0BAVIRQ,其中“BAV”表示“缓冲可用”。设备复位后,或者IN FIFO数据已成功传输并得到主机响应后,MAX3420E逻辑将置位IN端点的BAVIRQ位。上电时,BAVIRQ位置位,指示IN FIFO可以进行装载。这些是复位时仅有的置1寄存器位,其他位均设置为0。

    6. 如果出现了USB传输错误,情况会怎样? 我需要编写代码来处理错误吗?
      不需要。MAX3420E替您处理这些情况。如果MAX3420E接收到来自主机的错误条件,当主机重试IN传输时,MAX3420E自动重发相同的数据。MAX3420E还自动处理其他错误校验,例如数据触发等。某些USB错误(例如,用户在数据传输过程中拔掉电缆)需要由固件进行处理。

    7. 怎样编程实现BULK OUT传输?
      当主机发送OUT数据时,MAX3420E将字节存储在一个OUT端点FIFO中。传输完成并验证没有错误后,MAX3420E触发特定端点的“DAV” (数据可用)中断请求位。这将提示SPI控制器读取FIFO字节。SPI控制器首先读取OUT FIFO字节计数寄存器,确定64字节FIFO中有多少可用字节。然后,它通过重复读OUT FIFO寄存器来读取相应数量的字节。最后,SPI控制器清零OUT DAV IRQ位,为另一次传输“重新做好准备”。

    8. INTERRUPT传输的情况如何?
      中断传输的情况与BULK传输相同。区别仅在于枚举期间返回主机的设备描述符怎样进行说明。

    9. 怎样编程实现SETUP传输?
      USB主机采用CONTROL传输向MAX3420E发送一个SETUP封包以及用作USB“操作码”的8个字节。MAX3420E在8字节FIFO中存储这些字节,然后触发Setup数据可用中断请求。SPI主控制器读取位于寄存器地址R4 (SUDFIFO)的8个SETUP字节,从这些字节中得到USB的操作命令,并进行相应的操作。操作完成后,SPI主控制器将ACKSTAT位(ACK表示应答,STAT表示状态阶段)设置为高,以通知MAX3420E应答CONTROL传输的状态阶段。

    10. 我需要设置USB数据触发吗?
      不需要。在USB传输期间,MAX3420E自动处理这些触发。需要固件干预的唯一情况是主机在多配置设计(这种情况极少见)中设置新的配置。针对这一目的,MAX3420E提供了寄存器位来清除端点触发。

    11. 通过向MAX3420E中断请求位写“1”以对其清零。这是反向操作吗?
      看起来象是反向操作,但这却是最有效的方法来清除寄存器位。响应一个典型的中断请求时,SPI主控制器读取一个中断请求寄存器(USBIRQ或者EPIRQ),并利用不同的屏蔽位进行检查,以确定中断源。例如,测试SUDAVIRQ中断请求时,固件读取R11 (EPIRQ),将读取结果和00100000 (SUDAVIRQ位是第5位)进行与操作。程序一般会采用标识符来表示00100000,如bmSUDAV。一旦检测到IRQ位等于1,固件便可以将屏蔽值写回寄存器(SUDAVIRQ = bmSUDAV),只对需要清零的位清零。不改变写零的IRQ位。

    12. 有什么编程提示吗?
      当使用SPI全双工模式时,第一个寄存器访问操作应设置FDUPSPI位为1,以便为后面的访问正确设置接口。

  5. 主机软件问题
    1. 我的Windows®应用软件怎样与MAX3420E进行通信?
      Windows应用软件通过驱动程序与PC的USB主机控制器进行通信。驱动程序可以是Windows自带的,也可以是定制的。Windows包含标准设备类驱动程序,例如人机接口设备(HID)和大容量存储设备等。如果您的固件支持这些标准设备之一,则您的用户不需要安装定制驱动程序。

      如果您设计的设备不符合Windows标准设备类,那么USB设备第一次插入时,终端用户必须安装定制驱动程序。

    2. Maxim提供定制Windows驱动程序吗?
      不提供。

    3. Maxim提供什么样的实例代码?
      Maxim网站的USB Enumeration Code (and More) for MAX3420E提供实现HID应用的实例C代码。该实例代码模拟一个PC键盘,当按键按下时,将文本输入到任何可接收文本的Windows应用程序(例如,记事本)中。应用程序符合标准HID类,不需要定制Windows驱动程序即可正常运行。不论您的目标应用程序怎样,该实例代码的大部分是USB的“样板文件”,可以用作您应用程序的起始代码。

    4. 我想设计一个基于MAX3420E的设备,但是不符合标准Windows类。应如何获取Windows驱动程序?
      有两种选择:
      • 自己编写Windows驱动程序。这比较复杂,难度大,仅建议专家使用。
      • 购买通用驱动程序。一般由USB驱动程序和访问驱动程序的C函数库构成。驱动程序应与您设备描述符中的VID (供应商ID)和PID (产品ID)匹配。
      Microsoft在即将发布的“Vista”版Windows中,会为USB提供通用BULK驱动程序。

    5. MAX3420E与USB “串行桥接”芯片相比,结果如何?
      USB串行桥接芯片采用其USB端口与PC连接,但是对于运行在PC上的应用程序而言,它是一个虚拟COM端口。需要采用由芯片供应商提供的定制驱动程序来实现这一COM至USB的转换。采用这种方法,与串行(COM)端口(例如超级终端)进行通信的Windows应用程序可以与通过USB连接的设备通信。

      这种方法的优势在于不需要枚举固件或者主机驱动程序。缺点体现在性能、灵活性和支持方面:
      • 性能:由于桥接方法是仿真一个串行端口,最大可用带宽大约为1Mbps,远远低于USB的12Mbps速率。
      • 灵活性:串行USB桥接芯片是通过硬件连线来仿真串口设备。无法实现标准Windows类设备(例如HID)或定制设备类型。
      • 支持:采用这种芯片设计产品时,您的用户需要安装配套的驱动程序。由于是定制驱动程序,不能保证与今后的操作系统版本兼容。如果您选择了这种方法,应确定在您的产品使用期限内,供应商承诺提供驱动程序支持。

    6. 采用MAX3420E的优缺点是什么?
      缺点是MAX3420E的控制器需要固件,Maxim不提供定制Windows驱动程序。但Maxim提供实例固件,以说明如何做到符合标准Windows设备类(HID),从而使用Windows自带的驱动程序。

      采用MAX3420E的优点体现在性能、灵活性和支持方面。
      • 性能:MAX3420E SPI端口(与控制器的接口)运行速率可高达26MHz。如果控制器支持较高的SPI时钟速率,MAX3420E能够提供最大12Mbps的全速带宽USB传输。
      • 灵活性:采用MAX3420E时,设备特性完全由自己的固件决定。因此可构建任何类型的USB设备。
      • 支持:一旦操作系统本身支持通用USB (BULK)传输,对串行USB桥接芯片的需求会越来越少。

  6. 其他问题
    1. 我的固件能够确定我使用的芯片版本吗?
      是的。只读寄存器R18包含版本号。

    2. MAX3420E最新的版本号是多少?
      关于最新版本的数据资料和勘误表,请参考MAX3420E QV