MAX3420E中断系统引言MAX3420E可与任何SPI主控制器相连,构成全速USB外设器件。尽管由MAX3420管理底层USB信令,但是需要处理USB事件时,SPI主控制器必须参与处理。MAX3420的INT引脚指示有中断发生,SPI主控制器读取14个中断请求位,确定需要服务的中断。主要由这些中断请求(IRQ)位确定MAX3420E的工作过程。注意:SPI主控制器可以是微控制器、DSP、ASIC或者任何具备SPI端口的器件,并能提供SCLK信号。本文档使用的术语“SPI主控制器”和“微控制器”含义相同。MAX3420E中断逻辑图1所示为MAX3420E中断逻辑。阴影部分是可通过SPI访问的寄存器位。IRQ位每一个中断源都有一个用于锁存服务请求的触发器。触发器的输出即为IRQ,它出现在MAX3420E寄存器中。IRQ位提供两种功能:读取一个IRQ位,将返回IRQ触发器的状态。写入一个“1”至IRQ位,将清除IRQ触发器,写入“0”至IRQ位,不改变触发器状态。可以在任意时刻读取IRQ位,它反映了IRQ触发器的状态。按照上面第2条,写入1而不是0来清除所选的IRQ位,这一过程不需要读-修改-写周期。举例说明,假设MAX3420E的IRQ位与普通的寄存器位一样,写1置位,写0清除。现在,我们想要清除USBIRQ寄存器的URESIRQ位。图2所示为实现该操作的代码。由于SPI主控制器通过写1来清除一个MAX3420EIRQ位,而写0不改变其他寄存器位,因此SPI主控制器可以直接写入位屏蔽值来清除URESIRQ位。所以,图2中的最后三条语句可以由图3中的单条语句替代。IEN位14个MAX3420E中断的每一个都有相应的中断使能(IEN)位。IEN位和IRQ触发器输出进行“与”操作,决定是否向INT引脚传送中断请求(图1)。14个IRQ触发器通过门控电路后,进行“或”操作,形成一个内部中断请求信号,传送至中断引脚逻辑模块。注意,无论IEN位的状态如何,IRQ位都指示中断悬挂状态。这样,即使中断不触发INT引脚,固件仍可以检查该悬挂中断。如果您的程序需要检查一个IRQ寄存器“是否悬挂中断”,一个简单的方法是读取IRQ和IEN寄存器,对它们进行“与”操作,检查现在指示“等待和被使能的IRQ”位。零值表示没有使能的中断处于悬挂状态。IE位SPI主控制器通过IE位使能或者禁止INT引脚。由于该位影响到所有的中断,因此通常称之为全局中断使能。不论IRQ或者IEN位的状态如何,当IE=0时,INT引脚无效。中断引脚逻辑两个寄存器位INTLEVEL(参考下面的讨论)和POSINT控制INT引脚的工作方式。在设置IE=1之前,应先设置这两个配置位。电平模式,INTLEVEL=1某些微控制器系统使用低电平有效中断。采用这种配置时,MAX3420E采用一个开漏极晶体管驱动INT引脚至地。由于引脚只能驱动为低电平,因此,需要在INT引脚和逻辑电源之间接一个上拉电阻。该模式支持多个芯片的INT引脚输出(每个均为开漏输出)连接在一起,并使用单个上拉电阻。由于任何一个芯片输出都可将该引脚拉低,因此这种逻辑有时也称为“线或”。对于这种类型的系统,设置INTLEVEL=1。边沿模式,INTLEVEL=0(缺省值)MAX3420EINT引脚也可以驱动边沿有效的中断系统,此时微控制器在其中断输入引脚上检查0-1或者1-0跳变。这是MAX3420E的缺省模式,INTLEVEL=0。SPI主控制器通过第二个POSINT位设置边沿极性。当POSINT=1时,MAX3420E为悬挂中断输出一个0-1跳变。当POSINT=0(缺省值)时,MAX3420E为悬挂中断输出一个1-0跳变。在图1中,请注意以下几方面:如果一个IRQ位置位,而其对应的IEN位清零,则IRQ不会影响INT输出引脚。但是,中断仍处于悬挂状态。永远可以读取IRQ位以获得其状态,可向对应的寄存器位写1,将IRQ位清零。悬挂中断(IRQ位是1)的IEN位出现0-1跳变时将产生中断INT引脚可连接至微控制器的中断系统。此外,微控制器可以轮询INT引脚,以确定MAX3420E是否有中断处于悬挂状态。最适合轮询的模式是电平模式(INTLEVEL=1),这是因为在边沿模式中,INT引脚输出的脉冲可能太窄,微控制器无法探测到(参考下面的讨论)。请注意,电平模式需要在INT引脚和VL之间连接一个上拉电阻。INT引脚波形电平模式图4所示为电平模式下的MAX3420EINT引脚波形。INT引脚静态为高电平(上拉至VL)。假设图中两个中断的IEN位置为1,全局IE位置为1,那么将出现以下事件。(下面标有字母的...