ZHCSPR9 December 2023 AFE782H1 , AFE882H1
PRODUCTION DATA
这些器件有一个中断请求 (IRQ) 可以将发生的各种事件告知主机控制器。IRQ 块启动的中断在内部通过状态寄存器进行报告,在外部通过 IRQ 引脚进行报告(如果已启用该功能),或在 ALARM 引脚上进行报告(如果条件来自 ALARM_STATUS 寄存器)。图 8-39 显示了 IRQ 方框图。
有三个寄存器可以生成中断:GEN_STATUS、MODEM_STATUS 和 ALARM_STATUS。这些寄存器各有一个相应的 STATUS_MASK 寄存器。该屏蔽寄存器可以控制哪些事件会触发中断。在屏蔽寄存器中写入 1 会屏蔽或禁止事件触发中断。在屏蔽寄存器中写入 0 允许事件触发 IRQ。默认情况下会屏蔽所有位。某些状态位是粘滞位。除非条件仍然存在,否则读取相应的寄存器会清除粘滞位。
IRQ 通过 CONFIG.IRQ_LVL 配置为边沿敏感或电平敏感。将该位设置为逻辑 1 可启用电平敏感功能(默认)。在边沿敏感模式下,IRQ 信号是同步脉冲,宽度为一个内部时钟周期 (813ns)。在电平敏感模式下,IRQ 被置位,并且只要条件存在就保持置位状态。IRQ 条件消失后,通过读取相应的状态寄存器来清除该条件。如果是粘滞位,则在条件仍然存在时试图清除该位将无法清除该位。
CONFIG.IRQ_POL 决定了 IRQ 的有效电平。逻辑 1 会将 IRQ 配置为高电平有效。
使用边沿敏感的 IRQ 信号时,同步和边沿检测存在一个时钟周期延迟。在 307.2kHz 时钟条件下,该延迟最高可达 3.26μs。对于电平敏感模式,延迟约为 10ns 至 20ns。
大多数状态位在设计中具有两个版本。第一个版本是在状态置为有效时创建的边沿事件。该信号用于生成边沿敏感的 IRQ。这种边沿检测可以防止多个状态事件相互阻塞。第二个版本是状态位的粘滞版本。该信号在状态位被置为有效时被置位,并在读取相应的状态寄存器时被清除(只要状态条件不再存在)。信号 GEN_IRQ、MODEM_IRQ 和 ALARM_IRQ 由相应寄存器中状态位的逻辑“或”结果驱动。
如果取消屏蔽某个状态位且该位的粘滞版本已置为有效,并且 IRQ 为电平敏感,则一旦取消屏蔽该位,就会触发中断。如果 IRQ 为边沿敏感,则必须在取消屏蔽该位后发生状态事件才能将中断置为有效。
FIFO 标志不具有粘滞性;因此,可以触发 IRQ,但在输出端发送状态信息时可以将状态标志置为无效。例如,如果 FIFO_U2H_LEVEL_FLAG 被取消屏蔽并且 FIFO_U2H 级别降至设置的阈值以下,则 IRQ 将触发。如果器件配置为输出 UBM IRQ 消息,并在 IRQ 之后但 UBM 捕获 IRQ 状态之前在 UARTIN 上接收到一个 HART 数据字节,则 IRQ 状态和数据信息将回读为全零。如果使用 UBM IRQ 模式,请等到 IRQ 消息在 UARTOUT 上完全发送后再将数据置于 UARTIN 上。