中断由中断标志寄存器、中断屏蔽寄存器和邮箱中断级别寄存器控制。
(1)全局中断标志寄存器CANGIF0/CANGIF1(Global Interrupt Flag Registers)
这些寄存器可以使CPU确定中断源的位置。
如果中断发生,则置位相应中断标志位。是否置位全局中断标志位取决于CANGIM寄存器中的GIL位。如果置位该位,全局中断将CANGIF1寄存器的位置位,否则,将把CAN-GIF0寄存器的位置位。这也适用于中断标志位AAIF和RMLIF。这些位的设置取决于CANGIM寄存器对应的GIL位。
不论CANGIM寄存器中相应屏蔽位的状态如何,都将置位以下位:MTOFn、WDIFn、BOIFn、TCOIFn、WUIFn、EPIFn、AAIFn、RMLIFn及WLIFn。
对于任何邮箱,仅当相应的邮箱中断屏蔽位(在寄存器CANMIM中)置位时,才置位GMIFn位。如果所有中断标志位都已清除,而置位了一个新的中断标志位,当置位相应的中断屏蔽位时,激活中断输出。中断将保持激活状态直到清除中断标志(CPU向对应的位写入1或者取消引起中断的条件来清除中断标志)。GMIFx(x=0~1)标志位必须通过向CANTA寄存器或CANRMP寄存器(取决于邮箱的配置)对应的位写入1来清除,而不能在CANGIFx寄存器中清除。在清除了一个或多个中断标志位后,还有一个或多个中断标志位仍然被置位时,将产生一个新的中断。中断标志位通过向对应的位域写入1来清除。如果置位GMIFx,则邮箱中断向量MIVx表示引起GMIFx置位的邮箱序号。在多于一个邮箱中断悬挂的情况下,总是将最高邮箱中断向量分配到该中断。
CANGIF0寄存器的位分布如下:
CANGIF1寄存器的位分布如下:
位31~18、位7~5,保留位。
位17,MTOF0/1:邮箱超时标志位。该位在标准模式(SCC)下无效。
●1:有一个邮箱没有在指定的时间帧内发送或接收信息。
●0:没有邮箱发生超时的情况。
位16,TCOF0/1:时间标志定时器溢出标志位。
●1:时间标志定时器的最高有效位MSB从0变为1。
●0:时间标志定时器的最高有效位MSB为0。
位15,GMIF0/1:全局邮箱中断标志位。仅在CANMIM寄存器的相应邮箱中断屏蔽标志位置位时,该位才置位。
●1:有一个邮箱成功发送或接收信息。
●0:没有发送或接收信息。
位14,AAIF0/1:发送终止应答中断标志位。
●1:终止发送请求。
●0:没有终止发送。
位13,WDIF0/1:拒绝写中断标志位。
●1:CPU对邮箱的写操作不成功。
●0:CPU对邮箱的写操作成功。
位12,WUIF0/1:唤醒中断标志位。
●1:在局部掉电模式下,该标志位表示模块脱离了休眠模式。
●0:该模块仍然在休眠模式或正常工作模式。
位11,RMLIF0/1:接收信息丢失中断标志位。
●1:至少有一个接收邮箱发生了溢出,且MILn寄存器中对应的位清零。
●0:没有丢失信息。
位10,BOIF0/1:总线关闭中断标志位。
●1:CAN模块进入总线关闭模式。
●0:CAN模块处于总线开启模式。
位9,EPIF0/1:错误无效中断标志位。
●1:CAN模块进入错误无效模式。
●0:CAN模块不处于错误无效模式。
位8,WUF0/1:警告级别中断标志位。
●1:至少有一个错误计数器达到警告级。
●0:没有错误计数器达到警告级。
位4~0,MIV0/1寄存器的位4~0:邮箱中断向量。在标准模式下仅位3~0有效。该向量表示将全局邮箱中断标志位置位的邮箱的序号。保持该向量直到清除对应的MIFn位或有一个更高优先级的邮箱中断发生,然后显示最高中断向量。邮箱31具有最高优先级。在标准模式,邮箱15具有最高优先级,不能识别邮箱16~31。如果CANTA/CANRMP寄存器中没有置位标志位而且也清除了GMIF1或GMIF0,则该值是不确定的。
(2)全局中断屏蔽寄存器CANGIM(Global Interrupt Mask Register)
中断屏蔽寄存器的设置与中断标志寄存器一样。如果置位一个位则使能相应的中断。该寄存器受EALLOW保护。
位31~18、位15及位7~3,保留位。
位17,MTOM:邮箱超时中断屏蔽位。
●1:使能。
●0:禁止。(www.daowen.com)
位16,TCOM:时间标志定时器溢出屏蔽位。
●1:使能。
●0:禁止。
位14,AAIM:发送终止应答中断屏蔽位。
●1:使能。
●0:禁止。
位13,WDIM:拒绝写中断屏蔽位。
●1:使能。
●0:禁止。
位12,WUIM:唤醒中断屏蔽位。
●1:使能。
●0:禁止。
位11,RMLIM:接收信息丢失中断屏蔽位。
●1:使能。
●0:禁止。
位10,BOIM:总线关闭中断屏蔽位。
●1:使能。
●0:禁止。
位9,EPIM:错误无效中断屏蔽位。
●1:使能。
●0:禁止。
位8,WLIM:警告级中断屏蔽位。
●1:使能。
●0:禁止。
位2,GIL:中断TCOF、WDIF、WUIF、BOIF、EPIF和WLIF的全局中断的级别。
●1:所有全局中断都映射到ECANI1NT中断。
●0:所有全局中断都映射到ECAN0INT中断。
位1,I1EN:中断1使能
●1:如果置位相应屏蔽位,则该位将使能全局中断ECAN1INT上的所有中断。
●0:禁止中断ECANI1NT上的所有中断。
位0,I0EN:中断0使能。
●1:如果置位相应屏蔽位,则该位将使能全局中断ECAN0INT上的所有中断。
●0:禁止中断ECAN0INT上的所有中断。
GMIF在CANGIM中没有对应的位,因为各邮箱在CANMIM寄存器中都有各自的屏蔽位。
(3)邮箱中断屏蔽寄存器CANMIM(MailboxInterruptMaskRegister)
每一个邮箱都有一个中断标志位。根据邮箱的配置不同,这个中断可以是一个接收或发送中断。邮箱中断屏蔽寄存器受EALLOW保护。
位31~0,MIM[31:0]:邮箱31~0的中断屏蔽位。上电后所有的中断屏蔽位都清零,且禁止中断。这些位屏蔽各自邮箱的中断。
●1:邮箱中断使能。如果成功发送信息(在发送邮箱的情况下)或接收到没有出现任何错误的信息(在接收邮箱的情况下),则将产生一个中断。
●0:禁止邮箱中断。
(4)邮箱中断级别寄存器CANMIL(MailboxInterruptLevelRegister)
根据邮箱中断优先级寄存器的设置,32个邮箱中的每一个都可以在两个中断(ECAN0INT或ECAN1INT)之一上产生中断。这也适用于AAIFx和RMLIFx标志位。
位31~0,MIL[31:0]:邮箱中断优先级寄存器。这些位使能选择邮箱的中断优先级。
●1:在中断1(ECAN1INT)产生邮箱中断。
●0:在中断0(ECAN0INT)产生邮箱中断。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。