7.0 系统中断
7.1 中断系统概述
LAN9253 的系统中断为向量式可屏蔽中断,支持多中断源独立使能 / 禁用、中断状态单独查询与清零,中断输出引脚(IRQ)可配置极性和输出模式,适配不同主机的中断处理机制,同时中断可作为低功耗模式的唤醒源,实现功耗控制与事件响应的结合。
核心特性
- 支持16 个独立可配置中断源,覆盖 EtherCAT、以太网 PHY、电源管理、主机接口、通用定时器等全功能模块;
- 中断状态位为粘性位(置位后持续保持,需软件主动写 1 清零),避免短时间事件导致的中断丢失;
- IRQ 引脚支持推挽 / 开漏输出模式 、高 / 低电平有效极性,开漏模式下可线或连接,适配多器件中断信号共享场景;
- 提供独立的中断使能寄存器,可单独屏蔽某一中断源,不影响其他中断的正常触发;
- 低功耗模式下,使能的中断可直接触发唤醒流程,器件自动恢复正常工作并响应中断;
- 所有中断配置与状态均通过系统 CSR 寄存器实现,支持 HBI/SPI/SQI 直接访问,配置后立即生效。
7.2 中断源与分类
器件的 16 个中断源按功能模块分类,每个中断源对应独立的状态位和使能位,部分中断源为组合型(多个子事件触发同一中断位),子事件可通过对应功能模块的寄存器进一步识别。
所有中断源分为高优先级 和普通优先级,高优先级中断(如 EtherCAT 复位、硬件复位)将跳过屏蔽直接触发,普通优先级中断需使能后才可触发 IRQ 引脚。
7.2.1 中断源详细列表
下表为 16 个中断源的完整定义,包含对应功能、触发条件、优先级及关联章节,位序号与中断寄存器的位一一对应。
| 位序号 | 中断名称 | 功能归属 | 触发条件 | 优先级 | 关联章节 |
|---|---|---|---|---|---|
| 15 | RESERVED | 保留 | 无(写 0,读无定义) | - | - |
| 14 | ECAT_WDG_INT | EtherCAT | 同步管理器看门狗超时 / 触发 | 普通 | 11.0 EtherCAT |
| 13 | ECAT_FRAME_INT | EtherCAT | 接收到指向本器件的 EtherCAT 数据帧 / 命令帧 | 普通 | 11.0 EtherCAT |
| 12 | ECAT_RST_INT | EtherCAT | 检测到 EtherCAT 系统复位命令序列 | 高 | 6.2.2.7 |
| 11 | PHY_B_INT | 以太网 PHY | PHY B 端口发生链路状态变化 / 错误(Link Up/Down、接收错误) | 普通 | 10.0 以太网 PHY |
| 10 | PHY_A_INT | 以太网 PHY | PHY A 端口发生链路状态变化 / 错误(Link Up/Down、接收错误) | 普通 | 10.0 以太网 PHY |
| 9 | WKE_INT | 电源管理 | 检测到已使能的唤醒事件(除高优先级复位类) | 普通 | 6.3.1 |
| 8 | SPI_SQI_INT | SPI/SQI 客户端 | SPI/SQI 接口传输完成 / 错误 | 普通 | 9.0 SPI/SQI |
| 7 | HBI_INT | 主机总线接口 | HBI 接口传输完成 / 错误、总线超时 | 普通 | 8.0 HBI |
| 6 | GPT_INT | 通用定时器 | 通用定时器计数达到预设值(定时溢出) | 普通 | 14.0 定时器 |
| 5 | EEPROM_INT | EEPROM 接口 | EEPROM 读 / 写 / 擦除操作完成 / 错误 | 普通 | 12.0 EEPROM |
| 4 | GPIO_INT | 数字 I/O/GPIO | 配置为中断模式的 GPIO 引脚检测到电平跳变(上升沿 / 下降沿) | 普通 | 15.0 其他功能 |
| 3 | RST_PIN_INT | 硬件复位 | RST# 引脚检测到低电平复位信号 | 高 | 6.2.2.6 |
| 2 | PMT_ERR_INT | 电源管理 | 电源管理模块检测到电压异常 / 低功耗模式进入 / 退出失败 | 高 | 6.3.0 |
| 1 | SYS_ERR_INT | 系统核心 | 器件内部总线错误 / 寄存器访问错误 / 配置带锁存错误 | 高 | 5.0 寄存器映射 |
| 0 | INT_ALL | 中断总控 | 所有中断源总触发位(任意使能的中断置位时,该位自动置 1) | - | 7.3 中断寄存器 |
7.2.2 高优先级中断规则
高优先级中断为不可屏蔽中断,满足以下特性:
- 无需在中断使能寄存器中置位,触发后直接置位对应状态位并驱动 IRQ 引脚;
- 低功耗模式下,高优先级中断将强制触发唤醒流程,不受功耗等级限制;
- 中断状态位仍需软件写 1 清零,清零前将持续驱动 IRQ 引脚。
7.2.3 组合型中断源识别
对于组合型中断源(如 PHY_INT、WKE_INT),单个中断位对应多个子事件,需通过以下方式识别具体触发事件:
- PHY_INT:读取 PHY A/B 的状态寄存器(PHY_STS_x),查询链路状态位、错误状态位;
- WKE_INT:读取唤醒事件状态寄存器(WKE_STS),查询具体唤醒源位;
- SYS_ERR_INT:读取硬件配置寄存器(HW_CFG)的错误状态位,识别配置带 / 总线错误类型;
- GPIO_INT:读取 GPIO 中断状态寄存器,查询具体触发中断的 GPIO 引脚。
7.2.4 中断触发方式
所有中断源的触发方式均为边沿触发 ,部分源支持上升沿 / 下降沿可配置 (如 GPIO_INT、PHY 链路变化),其余源为固定边沿触发(如定时器溢出为上升沿、错误事件为下降沿),具体配置见对应功能模块章节。
7.2.5 中断与低功耗的联动
低功耗模式下,中断系统的工作规则:
- 仅已使能的中断源对应的检测电路保持工作,未使能的中断源电路断电;
- 普通优先级中断触发后,先执行唤醒流程,器件就绪(READY=1)后再驱动 IRQ 引脚;
- 高优先级中断触发后,立即驱动 IRQ 引脚,同时并行执行唤醒流程;
- 唤醒完成后,中断状态位保持置位,直至软件清零,确保主机能识别中断源。
7.2.6 中断抑制
部分场景下可通过寄存器位临时抑制所有普通优先级中断,高优先级中断不受影响:
- 置位中断配置寄存器(IRQ_CFG)的INT_MASK_ALL位,将屏蔽所有普通优先级中断的 IRQ 引脚驱动,状态位仍正常置位;
- 该位为临时屏蔽位,清 0 后将立即检测所有置位的状态位,若有未清零的,将重新驱动 IRQ 引脚。
7.2.7 时钟输出测试模式
为便于系统级调试,可将25MHz 晶体时钟映射到 IRQ 引脚,实现时钟输出测试,规则如下:
- 置位中断配置寄存器(IRQ_CFG)的IRQ_CLK_TEST位,IRQ 引脚将输出 25MHz 时钟,中断功能暂时禁用;
- 清 0 该位后,IRQ 引脚立即恢复中断输出功能,未清零的中断状态位将重新驱动引脚;
- 测试模式下,IRQ 引脚为推挽输出、高电平有效,不受原有配置影响;
- 该模式仅适用于调试,正常工作时需清 0,避免中断功能失效。
7.3 中断寄存器
中断系统的所有配置、状态、使能均通过3 个核心寄存器实现,均为 32 位,偏移地址在兼容模式和 EtherCAT 直接映射模式下不同,复位后所有位恢复默认值(除高优先级中断状态位)。
寄存器列表:
- 中断配置寄存器(IRQ_CFG):配置 IRQ 引脚模式、极性,设置中断抑制 / 测试模式;
- 中断状态寄存器(INT_STS):指示各中断源的触发状态,粘性位,写 1 清零;
- 中断使能寄存器(INT_EN):单独使能 / 禁用各普通优先级中断源,高优先级中断无对应使能位。
7.3.1 中断配置寄存器(IRQ_CFG)
- 兼容模式偏移地址:054h
- EtherCAT 直接映射模式偏移地址:3054h
- 位宽:32 位
- 类型:R/W(部分位为 RO)
- 核心功能:配置 IRQ 引脚的电气特性,设置中断全局抑制、时钟测试模式,无默认值的保留位写 0 读无定义。
| 位序号 | 位名称 | 功能描述 | 类型 | 默认值 |
|---|---|---|---|---|
| 31:8 | RESERVED | 保留位 | RO | - |
| 7 | IRQ_CLK_TEST | 时钟输出测试模式:1=IRQ 引脚输出 25MHz 时钟,禁用中断;0 = 恢复中断功能 | R/W | 0b |
| 6 | INT_MASK_ALL | 普通中断全局屏蔽:1 = 屏蔽所有普通优先级中断的 IRQ 驱动;0 = 正常触发 | R/W | 0b |
| 5:4 | RESERVED | 保留位 | RO | - |
| 3 | IRQ_POLARITY | IRQ 引脚极性:1 = 高电平有效;0 = 低电平有效 | R/W | 0b |
| 2 | IRQ_MODE | IRQ 引脚输出模式:1 = 开漏输出(需外接上拉电阻);0 = 推挽输出 | R/W | 0b |
| 1:0 | RESERVED | 保留位 | RO | - |
注:开漏输出模式下,IRQ 引脚为线或兼容,多个器件的 IRQ 引脚可直接连接,外接 10kΩ 典型值上拉电阻至 VDDIO。
7.3.2 中断状态寄存器(INT_STS)
- 兼容模式偏移地址:058h
- EtherCAT 直接映射模式偏移地址:3058h
- 位宽:32 位
- 类型:RO/W1C(读仅查看状态,写 1 清零,写 0 无效,高优先级位强制置位)
- 核心功能:指示各中断源的触发状态,任意中断源触发时,对应位置 1;位 0 为总触发位,自动随其他位置位 / 清零。
| 位序号 | 位名称 | 功能描述 | 清零方式 | 优先级 |
|---|---|---|---|---|
| 31:16 | RESERVED | 保留位(读 0,写无效) | - | - |
| 15 | RESERVED | 保留位 | - | - |
| 14 | ECAT_WDG_INT | EtherCAT 看门狗中断状态 | W1C | 普通 |
| 13 | ECAT_FRAME_INT | EtherCAT 帧接收中断状态 | W1C | 普通 |
| 12 | ECAT_RST_INT | EtherCAT 复位中断状态 | W1C | 高 |
| 11 | PHY_B_INT | PHY B 端口中断状态 | W1C | 普通 |
| 10 | PHY_A_INT | PHY A 端口中断状态 | W1C | 普通 |
| 9 | WKE_INT | 唤醒事件中断状态 | W1C | 普通 |
| 8 | SPI_SQI_INT | SPI/SQI 接口中断状态 | W1C | 普通 |
| 7 | HBI_INT | 主机总线接口中断状态 | W1C | 普通 |
| 6 | GPT_INT | 通用定时器中断状态 | W1C | 普通 |
| 5 | EEPROM_INT | EEPROM 接口中断状态 | W1C | 普通 |
| 4 | GPIO_INT | GPIO 引脚中断状态 | W1C | 普通 |
| 3 | RST_PIN_INT | RST# 引脚复位中断状态 | W1C | 高 |
| 2 | PMT_ERR_INT | 电源管理错误中断状态 | W1C | 高 |
| 1 | SYS_ERR_INT | 系统核心错误中断状态 | W1C | 高 |
| 0 | INT_ALL | 中断总触发位:1 = 任意使能 / 高优先级中断置位;0 = 所有中断位清零 | 自动清零 | - |
关键规则
- INT_ALL 位:为只读自动位,无需软件操作,所有其他中断位清零后,该位自动清 0;
- 清零顺序:建议先读取寄存器识别中断源,再对对应位写 1 清零,避免误清零未处理的中断;
- 高优先级位:即使中断全局屏蔽(INT_MASK_ALL=1),高优先级中断触发后仍会置位对应位,屏蔽解除后立即驱动 IRQ;
- 背对背访问:写入该寄存器后,需遵守 5.4 节时序要求,等待至少 180ns 再进行读操作,避免读取过时状态。
7.3.3 中断使能寄存器(INT_EN)
- 兼容模式偏移地址:05Ch
- EtherCAT 直接映射模式偏移地址:305Ch
- 位宽:32 位
- 类型:R/W(高优先级中断对应位为 RO,写 0 无效)
- 核心功能:单独使能 / 禁用普通优先级中断源,1 = 使能(触发后驱动 IRQ),0 = 禁用(仅置位状态位,不驱动 IRQ);高优先级中断无使能位,强制使能。
表
| 位序号 | 位名称 | 功能描述 | 类型 | 默认值 | 优先级 |
|---|---|---|---|---|---|
| 31:16 | RESERVED | 保留位(写 0,读无定义) | RO | - | - |
| 15 | RESERVED | 保留位 | RO | - | - |
| 14 | ECAT_WDG_EN | EtherCAT 看门狗中断使能 | R/W | 0b | 普通 |
| 13 | ECAT_FRAME_EN | EtherCAT 帧接收中断使能 | R/W | 0b | 普通 |
| 12 | RESERVED | 对应 ECAT_RST_INT(高优先级,无使能位) | RO | 0b | 高 |
| 11 | PHY_B_EN | PHY B 端口中断使能 | R/W | 0b | 普通 |
| 10 | PHY_A_EN | PHY A 端口中断使能 | R/W | 0b | 普通 |
| 9 | WKE_EN | 唤醒事件中断使能 | R/W | 0b | 普通 |
| 8 | SPI_SQI_EN | SPI/SQI 接口中断使能 | R/W | 0b | 普通 |
| 7 | HBI_EN | 主机总线接口中断使能 | R/W | 0b | 普通 |
| 6 | GPT_EN | 通用定时器中断使能 | R/W | 0b | 普通 |
| 5 | EEPROM_EN | EEPROM 接口中断使能 | R/W | 0b | 普通 |
| 4 | GPIO_EN | GPIO 引脚中断使能 | R/W | 0b | 普通 |
| 3 | RESERVED | 对应 RST_PIN_INT(高优先级,无使能位) | RO | 0b | 高 |
| 2 | RESERVED | 对应 PMT_ERR_INT(高优先级,无使能位) | RO | 0b | 高 |
| 1 | RESERVED | 对应 SYS_ERR_INT(高优先级,无使能位) | RO | 0b | 高 |
| 0 | INT_EN_ALL | 普通中断总使能:1 = 使能所有已单独置位的普通中断;0 = 禁用所有普通中断 | R/W | 0b | - |
关键规则
- INT_EN_ALL 位 :为普通中断总控位,置 1 时所有单独使能的普通中断源生效,置 0 时直接禁用所有普通中断,优先级高于单独使能位;
- 高优先级对应位:位 12、3、2、1 为保留位,对应高优先级中断,写操作无效,读操作返回 0;
- 配置生效:寄存器写操作完成后,配置立即生效,无需额外操作;
- 背对背访问:写入该寄存器后,需遵守 5.4 节时序要求,等待至少 90ns 再进行读操作,避免读取过时配置。
7.4 IRQ 引脚电气特性
IRQ 引脚的电气特性由IRQ_CFG 寄存器的 IRQ_MODE 和 IRQ_POLARITY 位配置,不同配置下的电气参数遵循器件通用 I/O 引脚规范,核心参数如下(典型值,VDDIO=3.3V):
| 配置模式 | 输出高电平电压(V) | 输出低电平电压(V) | 灌电流(mA) | 拉电流(mA) | 上拉电阻(kΩ)* |
|---|---|---|---|---|---|
| 推挽 - 低电平有效 | 2.8~3.3 | 0~0.5 | ±8 | ±8 | 无 |
| 推挽 - 高电平有效 | 2.8~3.3 | 0~0.5 | ±8 | ±8 | 无 |
| 开漏 - 低电平有效 | 高阻 | 0~0.5 | 8 | 0 | 外接 10(典型) |
| 开漏 - 高电平有效 | 0~0.5 | 高阻 | 8 | 0 | 外接 10(典型) |
* 注:开漏模式下,器件内部无内置上拉电阻,必须外接上拉电阻至 VDDIO,否则 IRQ 引脚将处于高阻状态,无法输出有效信号。
7.5 中断处理流程
器件的中断处理为硬件触发 + 软件清零 的标准流程,主机需按照固定步骤处理,避免中断丢失或重复触发,低功耗模式下需额外结合唤醒流程。
7.5.1 正常工作模式下的中断处理流程
- 中断触发:硬件检测到中断源事件,置位 INT_STS 对应状态位,若为使能的普通中断 / 高优先级中断,驱动 IRQ 引脚至有效电平;
- 主机响应:主机检测到 IRQ 引脚有效,进入中断服务程序(ISR);
- 中断源识别 :主机读取INT_STS 寄存器,根据置位的位识别具体中断源,组合型中断源需读取对应功能模块寄存器识别子事件;
- 事件处理:主机根据中断源执行对应处理逻辑(如处理 EtherCAT 帧、清除 PHY 错误、响应唤醒事件);
- 中断清零 :处理完成后,主机对 INT_STS 寄存器中对应置位的位写 1 清零,避免重复触发;
- 中断退出:所有置位的中断位清零后,INT_ALL 位自动清 0,IRQ 引脚恢复至无效电平,主机退出中断服务程序。
7.5.2 低功耗模式下的中断处理流程
- 中断触发与唤醒:硬件检测到使能的中断源,若为普通中断,先触发唤醒流程,器件自动恢复电源和时钟;若为高优先级中断,同时触发唤醒和 IRQ 驱动;
- 器件就绪:等待器件就绪(PMT_CTRL.READY=1),所有模块恢复正常工作;
- 后续步骤:执行 7.5.1 节的步骤 2-6,与正常工作模式一致。
7.5.3 中断处理注意事项
- 清零时机 :必须在事件处理完成后再清零中断位,若先清零再处理,处理过程中再次触发同一事件将导致中断丢失;
- 组合型中断:需先识别具体子事件并处理,再清零对应中断位,避免子事件未处理导致的功能异常;
- 高优先级中断:高优先级中断(如系统错误、电源异常)需优先处理,避免器件进入异常状态;
- IRQ 引脚线或:多器件线或连接时,某一器件清零中断后,IRQ 引脚可能仍为有效电平(其他器件有未处理中断),主机需通过轮询识别对应器件;
- 时序要求 :所有中断寄存器的读写操作,均需遵守 5.4 节背对背周期限制,避免读取过时数据或写入失效;
- 中断嵌套:器件本身不支持中断嵌套,主机需在处理完当前中断后,再响应新的中断。
7.6 中断系统使用建议
- 中断使能策略:仅使能系统需要的中断源,禁用无用中断,减少主机中断响应开销;
- 高优先级中断处理:为高优先级中断(如 SYS_ERR_INT、PMT_ERR_INT)设计独立的快速处理逻辑,避免器件异常扩大;
- IRQ 引脚配置 :多器件系统建议配置为开漏 + 低电平有效 ,外接 10kΩ 上拉电阻,实现线或共享;单器件系统建议配置为推挽 + 高电平有效,提高驱动能力;
- 低功耗中断配置:低功耗模式下,仅使能必要的唤醒 / 中断源(如 EtherCAT 帧、RST# 引脚),其余禁用,降低功耗;
- 调试与测试 :利用IRQ_CLK_TEST位实现时钟输出测试,验证晶体振荡器和时钟电路是否正常工作;
- 中断状态轮询 :若主机无中断响应功能,可通过轮询 INT_STS 寄存器的方式检测事件,建议轮询周期不大于 1ms,避免事件延迟。
7.7 中断系统总结
LAN9253 的中断系统为高度可编程、高可靠性的向量式可屏蔽中断,通过 16 个独立中断源实现全功能模块的事件响应,结合高 / 普通优先级划分、IRQ 引脚灵活配置,适配不同工业嵌入式系统的中断处理需求。
中断系统与电源管理深度联动,支持低功耗模式下的事件唤醒,兼顾了功耗控制与实时性;所有配置与状态均通过系统 CSR 寄存器实现,与主机接口(HBI/SPI/SQI)无缝兼容,简化了软件设计与系统集成。
同时,中断状态位的粘性特性、高优先级中断的不可屏蔽特性,确保了关键事件无丢失,提升了器件在工业现场复杂环境下的可靠性。