MAX3420E可与任何SPI主操控器相连,以构成全速USB外设器材。虽然一般都由MAX3420来办理底层USB信令,可是需求处理USB事情时,SPI主操控器有必要参加处理,当MAX3420的INT引脚指示有中止发生时,SPI主操控器将读取14个中止恳求位,以确认需求服务的中止,一般情况下,主要由这些中止恳求(IRQ)位确认MAX3420E的作业进程,在挑选器材时,SPI主操控器可所以微操控器、DSP、ASIC或具有SPI端口的其他器材,并应能供给SCLK信号。
MAX3420E的中止逻辑
◇ IRQ位
图1所示为MAX3420E中止逻辑。暗影部分是可经过SPI拜访的寄存器位,图中有一个IRQ位,实际上,每一个中止都有一个用于锁存服务恳求的触发器。触发器的输出即为IRQ,它呈现在MAX3420E寄存器中,IRQ位供给两种功用:一是读取一个IRQ位,然后回来IRQ触发器的状况;二是写入一个“1”至IRQ位,以铲除IRQ触发器,而写入“0”至IRQ位,则不改动触发器状况。
事实上,能够在恣意时刻读取IRQ位,它反映了IRQ触发器的状况,当依照写入1而不是0来铲除所选的IRQ位时,这一进程不需求读-修正-写周期,假定MAX3420E的IRQ位与一般的寄存器位相同,即写1置位,写0铲除,那么,铲除USBIRQ寄存器的USESIRQ位的操作代码如下:
#define rUSBIRQ 13 //register 13
#define bmURESIRQ 0x08 //URESIRQ is bit4,bm means“bit mask”
unsigned char dum;
dum=rreg(rUSBIRQ); //read the register
dum=dum&—bmURESIRQ; //chear one bit
wreg(Rusbirq,dum); //write it back
由于SPI主操控器可经过写1来铲除一个MAX3420E IRQ位,而写0则不改动其他寄存器位,因而,SPI主操控器可直接写入位屏蔽值以铲除URESIRQ位。这样,上述代码中的最终三条句子便可由下面的单条句子所代替:
wreg(rUSBIRQ,bmURESIRQ);//1 cheras an IRQ bit,0 leaves it alone
◇ IEN位
14个MAX3420E中止的每一个都有相应的中止使能(IEN)位,IEN位和IRQ触发器输出进行“与”操作,可决定是否向INT引脚传送中止恳求。14个IRQ触发器经过门控电路后再进行“或”操作,也会构成一个内部中止恳求信号,并传送至中止引脚逻辑模块。
实际上,不管IEN位的状况怎么,IRQ位都指示中止悬挂状况,这样,即便中止不触发INT引脚,固件仍能够查看该悬挂中止,假如您的程序需求查看一个IRQ寄存器“是否悬挂中止”,比较简单的办法是读取IRQ和IEN寄存器,并对它们进行“与”操作,然后查看“等候和被使能的IRQ”位,零值表明没有使能的中止,体系处于悬挂状况。
◇ IE位
SIP主操控器经过IE位来使能或许制止INT引脚,由于该位影响到一切的中止,因而一般称之为大局中止使能,不管IRQ或许IEN位的状况怎么,当IE为0时,INT引脚均无效。
可用两个寄存器位INTLEVEL(参阅下面的评论)和POSINT来操控INT引脚的作业方式,在设置IE为1之间,应先设置这两个装备位。其操作如下:
(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位,然后以两条独自指令装入字节计数器。那么当您更新字节计数寄存器时,或许现已开端了数据包传输,然后导致数据犯错。
责任编辑:gt