blj28

导航

2026-9-19 15:45 LAN9252 连接STM32的中断引脚是哪个以及与ET1100区别

当 ESC 的 AL Event Request 寄存器(0x0220)中有任何一位被置起,且对应的 AL Event Mask 位已使能时,ESC 会通过 IRQ 引脚向 MCU 发出 PDI 中断信号。
MCU 的中断入口函数(如 EcatIsr())会调用 SSC 协议栈提供的 PDI_Isr()。
 
中断类型触发源优先级要求核心职责
PDI 中断 ESC 的 AL Event 最高 处理邮箱通信、SM 事件、状态机切换
SYNC0 中断 DC 同步信号 次高 过程数据同步执行、控制算法触发
SYNC1 中断 DC 同步信号 次高 可选的次级同步任务
1ms Timer 中断 MCU 内部定时器 最低 看门狗检查、LED 状态更新
 

LAN9252 连接STM32的中断引脚是哪个?

 
LAN9252 连接 STM32 的中断引脚是 IRQ#(部分文档也写作 INT# 或 INT_N),它对应 LAN9252 芯片的 Pin 31(64引脚QFN/TQFP封装)。

🔌 核心引脚说明

表格
LAN9252 引脚引脚编号方向功能说明
IRQ# / INT# Pin 31 输出 主机中断请求,低电平有效,通知 STM32 处理 EtherCAT 事件(SM/PDO/AL状态变化等)
SYNC0 Pin 33 输出 DC 分布式时钟同步脉冲 0,用于精确同步控制
SYNC1 Pin 34 输出 DC 分布式时钟同步脉冲 1(可选)

💡 硬件连接与配置要点

1. 引脚映射(示例)
IRQ# 可以连接到 STM32 的任意 EXTI 引脚,常见方案如下:
表格
方案LAN9252STM32说明
方案 A IRQ# (Pin 31) PA0 (EXTI0) 常用,中断优先级高
方案 B IRQ# (Pin 31) PB0 (EXTI0) 根据 PCB 布线灵活选择
方案 C IRQ# (Pin 31) PA3 (EXTI3) 避开其他外设占用的引脚
如果启用了 DC 同步模式,还需要将 SYNC0 和 SYNC1 也连接到 STM32 的定时器 ETR 输入引脚(如 TIM1_ETR / TIM2_ETR),用于触发精确的同步中断。
2. STM32CubeMX 配置
  • GPIO 模式:配置为外部中断模式(GPIO_EXTI)
  • 触发方式:下降沿触发(Falling Edge),因为 IRQ# 是低电平有效
  • 上拉/下拉:建议上拉(Pull-up),确保空闲状态为高电平
  • 中断优先级:IRQ# 的中断优先级应设为最高(如 NVIC 优先级 0),保证 EtherCAT 通信的实时性;SYNC0 中断次之
3. 中断服务函数框架
void HAL_GPIO_EXTI_Callback(uint16_t GPIO_Pin)
{
    if (GPIO_Pin == LAN9252_IRQ_Pin) {
        // 处理 EtherCAT 事件(SM/PDO/AL 状态变化)
        PDI_Isr();
        return;
    }
    if (GPIO_Pin == LAN9252_SYNC0_Pin) {
        // DC 同步中断,执行控制算法
        DISABLE_ESC_INT();   // 关中断,防止嵌套
        Sync0_Isr();
        ENABLE_ESC_INT();    // 开中断
        return;
    }
    if (GPIO_Pin == LAN9252_SYNC1_Pin) {
        DISABLE_ESC_INT();
        Sync1_Isr();
        ENABLE_ESC_INT();
        return;
    }
}

⚠️ 注意事项

  • IRQ# 必须实现:这是 EtherCAT 通信的核心中断,所有 SM 事件、PDO 更新、AL 状态变化都通过它通知 STM32。
  • SYNC0/SYNC1 可选:仅在启用 DC 分布式时钟模式时才需要连接和配置,纯 Free-Run 模式可以不接。
  • 中断使能时机:三个中断的使能必须由协议栈控制(在 AL 状态机流转到对应状态时动态使能/失能),不能一上电就全部打开,否则会导致状态机紊乱。
  • 与 ET1100 的区别:ET1100 只有一个 PDI 中断引脚,而 LAN9252 将 IRQ 和 SYNC 分开,硬件上多引了两根线,但软件上可以更精细地分离通信事件和同步事件。

中断引脚搞清楚了,不过实际调试时最容易踩坑的其实是 IRQ# 触发后的事件分发逻辑——如果事件没正确清除,会导致中断风暴把 MCU 卡死。

posted on 2026-09-19 15:55  bailinjun  阅读(23)  评论(0)    收藏  举报