(1)电平模式
某些微控制器系统使用低电平有效中断。当采用这种配置时,MAX3420E采用一个开漏极晶体管驱动INT引脚至地,由于引脚只能驱动低电平,因此,需要在INT引脚和逻辑电源之间接一个上拉电阻,该模块支持多个芯片的INT引脚输出(每个均为开漏输出)连接在一起,并使用单个上拉电阻。由于任何一个芯片输出都可将引脚拉低,因此这种逻辑有时也称为“线或”。对于这种类型的系统,可设置INTLEVEL为1。
(2)边沿模式
MAX3420E的INT引脚可以驱动边沿有效的中断系统,此时,微控制器在其中中断输入脚上将检查0到1或者1到0跳变,INTLEVEL为0是MAX3420E的缺省模式。SPI主控制器通过第二个POSINT位设置边沿极性,POSINT为1时,MAX3420E为悬挂中断输出一个0到1的跳变。POSINT为0(缺省值)时,MAX3420为悬挂中断输出一个1到0的跳变。
需要说明的是:如果一个IRQ位置位,而其对应的IEN位清零,则IRQ将不会影响INT输出引脚,但是,中断仍处于悬挂状态,永远可以读取IRQ位以获得其状态,可向对应的寄存器位写1,并将IRQ位清零。
悬挂中断(IRQ位是1)的IEN位出现0到1跳变时将产生中断。
INT引脚可连接至微控制器的中断系统,此外,微控制器可以轮询INT引脚,以确定MAX3420E是否有中断处于悬挂状态,最适合轮询的模式是电平模式(INTLEVEL=1),这是因为在边沿模式中,INT引脚输出的脉冲可能太窄,微控制器无法探测到(参考下面的讨论)。请注意,电平模式需要在INT引脚和V1之间连接一个上拉电阻。
INT引脚状态与波形
◇ 电平模式
图2所示为电平模式下的MAX3420E的INT引脚波形。INT引脚静态为高电平(上拉至VL)。假设图中两个中断的IEN位均置为1,全局IE位也置1,那么将发生一个中断请求,使MAX3420E INT引脚置低,实际上,尽管MAX3420E中断输出引脚被称为INT引脚,它有时也是负极性(例如在电平模式下)。
SPI主控制器完成中断服务后将向IRQ位写入1,并将其清零,并使INT引脚返回至静态高电平。(a)和(b)之间的间隔是中断置位其IRQ位和SPI主控制器清除IRQ位之间的时间,当系统产生另一个中断请求,会将INT引脚拉低,而当第一个中断请求处于悬挂状态时,系统可能产生第二个中断请求,而此时INT电平没有变化,因此至少有一个中断处于悬挂状态(实际上,此刻有两个中断处于悬挂状态。)
当SPI主控制器完成一个中断服务向IRQ位写入1并将其清零后,由于仍有一个中断处于悬挂状态,INT引脚将保持低电平,此后SIP主控制器处理完剩下的中断请求,并向IRQ位写入1,在将其清零,此后由于没有中断处于悬挂状态,因此,INT引脚将返回至静态高电平。
这种逻辑可以很好地处理INT引脚轮询,如果MAX3420E的任何部分需要服务,并且其中断已被使能,那么INT引脚将变为低电平,在微控制器清除最后一个悬挂IRQ位之前,INT引脚一直保持低电平。
◇ 边沿模式
图3所示为两种极性边沿模式下MAX3420E的INT引脚波形,极性由POSINT位控制。该波形与电平模式相似,但有两处不同,在两种条件下,INT引脚将产生边沿跳变:第一是一个IRQ位变为有效状态(其IRQ触发器产生0到1跳变),此时处理器将清除一个IRQ位(向其写入1),其他IRQ处于悬挂状态,第二个条件是在确保还有中断需要服务时,处理器能够检测到边沿跳变。
除了产生边沿跳变外,与电平模式一样,INT引脚也具有有效和无效状态,INT引脚的无效状态取决于POSINT位设置的边沿极性,在这一点上,边沿模式与电平模式相似,察看INT引脚的状态就可以知道是否有中断处于悬挂状态,当在负极性边沿模式下如果没有悬挂中断,INT引脚为高电平,如果有悬挂中断,则为低电平,而在正极性边沿模式下,如果没有悬挂中断,INT引脚为低电平,如果有悬挂中断,则为高电平。
INT引脚的有效状态意味着至少有一个中断处于悬挂状态,无效状态是指没有中断处于悬挂状态,假设中断已被使能,那么,系统将出现以下事件;
(1)产生一个中断请求时,MAX3420E INT引脚出现一个边沿跳变,边沿的极性取决于POSINT位的设置,由于中断仍处于悬挂状态,INT引脚保持其有效状态。
(2)SPI主控制器完成中断服务后,并向IRQ位写入1,并将其清零。MAX3420E INT引脚返回至无效状态,图中(a)和(b)之间的间隔(1)是产生中断和SPI主控制器清除IRQ位之间的时间。
(3)产生另一个中断请求时,MAX3420E INT引脚产生一个边沿跳变,并保持其有效状态。
(4)当第一个中断请求处于悬挂状态时,系统又将产生第二个中断请求,由于MAX3420E INT引脚必须产生另一个边沿跳变。因此,该引脚将在无效和有效状态之间产生跳变脉冲,从而提供正确的边沿极性,在MAX3420E中,该脉冲的宽度固定为10.67μs,由于还有中断处于悬挂状态,INT引脚可保持在有效状态。
(5)SPI主控制器完成一个悬挂中断服务后,向其IRQ位写入1,将其清除。与第(d)步一样,INT引脚产生另一个边沿跳变。
(6)SPI主控制器处理完剩下的中断请求,并向其IRQ位写入1,将其清除。由于此时已没有中断处于悬挂状态,因此,INT引脚返回至无效状态。
中断寄存器
表1是MAX3420E寄存器控制位,其中阴影部分可用于控制USB中断系统。MAX3420E具有两类USB中断,可由表1中阴影部分的寄存器控制,中断位分为两类:一是位于EPIRQ(R11)和EPIEN(R12)寄存器的端点控制,二是位于USBIRQ(R13)和USBIEN(R14)寄存器的USB控制,全局IE位在CPUCTL寄存器中。
中断请求位BAV
该器件的三个缓冲区就绪(BAV)IRQ位可用于指示是否可以将SPI主控制器装入一个IN端点FIFO,芯片复位或者IN数据由端点缓冲区成功地发送给主机后,MAX3420将置位这些IRQ位,此后该IRQ将通知SPI主控制器缓冲区可以装入新数据。
与所有的MAX3420E IRQ位一样,也可以通过写入1来三个清除BAV IRQ位,但是千万不要这样做,相反,应通过写入IN端点的字节计数寄存器来清除BAV IRQ位,这是因为MAX3420E要使用一个IN端点的BAV中断请求位作为锁定机制。
事实上,上述机制可以确保SPI主控制器和MAX3420E的串行接口引擎(SIE)不会同时使用端点缓冲区。例如,如果清除BAV位,然后以两条单独指令装入字节计数器。那么当您更新字节计数寄存器时,可能已经开始了数据包传输,从而导致数据出错。