本文介绍A2B系统中主机对中断的处理流程。
1、主运行中断
如主运行中断图所示,触发器(主IRQ引脚)是在主节点锁定锁相环到SYNC信号后或发现线路故障后断言的。
注意:MSTR_RUNNING (A2B_INTTYPE= 0xFF)是一个仅主用中断。
主运行中断
读取A2B_INTSRC和A2B_INTTYPE寄存器,继续发现从节点或处理线路故障。注意,对主A2B_INTTYPE寄存器的主机读将清除中断。
2、发现完成中断
如发现已完成中断图所示,触发器(主IRQ引脚)是在主节点看到从节点发现的响应之后断言的。DSCDONE (A2B_INTTYPE = 0x18)是一个仅主中断。
发现已完成中断示意图
读取A2B_INTSRC和A2B_INTTYPE寄存器,继续进行节点身份验证和发现过程。注意,对主A2B_INTTYPE寄存器的主机读将清除中断。
3、线路故障中断
如线路故障中断图所示,在发现过程中或发现后遇到线路故障后,会断言触发器(主IRQ引脚)。
线路故障中断
读取A2B_INTTYPE寄存器并进行线路诊断,如A2B系统调试中所述。
当收发器由于BP短接GND等严重故障而进入RESET状态时,没有向主机提示发生了这种情况。如果系统需要这样的功能,设计可以利用IRQ线上的终端电阻作为其活动极性的函数,由A2B_PINCFG.IRQINV位控制。当A2B_PINCFG.IRQINV = 0,当收发器连接到IRQ线时,一个上拉电阻将IRQ拉高当处于RESET状态时,三状态IRQ引脚。这个状态可以被主控制器看作是一个活跃的高边缘伪中断。主机读取A2B_INTSTAT和A2B_INTTYPE寄存器为0x00(重置值),这可以解释为收发器进入reset状态的事件。对于主控制器负边中断,当A2B_PINCFG.IRQINV = 1时,IRQ线上的下拉电阻具有相同的效果。
注意:设置A2B_CONTROL.MSTR位,主机控制器必须忽略之前的IRQ状态,IRQ引脚被驱动到非活动状态。
4、错误中断
如错误中断图所示,当遇到下列任何错误时,会断言触发器(主IRQ引脚)。
错误中断示意图
HDCNTERR=0x0
DDERR= 0x1
CRCERR= 0x2
DPERR= 0x3
BECOVF= 0x4* (Occurrence of Bit error count overflow interrupt, after
resetting the error counter (BECNT) once every
second, indicates bus issues )SRFERR= 0x5* (10 time occurrence without
interrupt status (INTSTAT)
being cleared between pending interrupts shall be
treated as bus lost condition/line fault)
SRFCRCERR=0x6 (Slave Only)
I2CERR= 0x19 (Master Only)
ICRCERR= 0x1A (Master Only)
读取A2B_INTTYPE寄存器并进行线路诊断,如A2B系统调试中所述。
5、通用IO引脚中断
如通用IO引脚中断图所示,当遇到下列任何错误时,会断言触发器(主IRQ引脚)。
通用IO引脚中断示意图
IO0= 0x10 (Slave only)
IO1= 0x11
IO2= 0x12
IO3= 0x13
IO4= 0x14
IO5= 0x15
IO6= 0x16
IO7= 0x17
读取A2B_INTTYPE寄存器并采取特定于应用程序的操作。