STM32
直播中

mintsy

9年用户 1573经验值
擅长:MEMS/传感技术
私信 关注
[问答]

请问STM32会存在单个IO口坏掉的情况吗?

型号:STM32F103RCT6
工具:CubeMX、Keil5、LL库
UART5:
TX:PC12
RX:PD2
现象:
调试 UART5, 使用中断接收,阻塞发送。发送数据正常,但是无法接收到数据,好像都没有进入中断处理函数。同样的方法配置UART4,发送和接收都正常。
重新建立一个工程,不配置串口。直接将PD2 和 PC12配置为推挽输出,然后在while(1)中做连续电平翻转。PC12脚输出方波,PD2输出异常。

回帖(1)

贾大林

2025-7-17 17:45:39

根据您的描述和分析,STM32F103RCT6 确实可能存在 单个IO口损坏 的情况,尤其是 PD2(UART5_RX)引脚。以下是详细分析和建议:




问题根源分析




  1. 硬件异常现象  



    • 当配置 PD2PC12 为推挽输出并连续翻转时:

      • PC12(UART5_TX) 能正常输出方波 → TX引脚功能正常

      • PD2(UART5_RX) 输出异常 → RX引脚可能已损坏


    • UART5接收中断无法触发(未进入中断函数),而发送正常 → 进一步佐证RX引脚问题。




  2. 排除软件配置问题



    • 相同的代码配置 UART4 收发均正常 → 软件逻辑正确。

    • 新工程中PD2推挽输出异常 → 非外设(UART)配置问题,而是GPIO物理层故障。




  3. IO损坏的可能性



    • STM32的IO口可能因以下原因损坏

      • 过压/过流(如外部电路短路、高压干扰)。

      • ESD静电击穿。

      • 焊接高温损伤。

      • 物理碰撞(PCB损坏)。







诊断步骤(确认PD2是否损坏)


1. 基础电平测试


   // 配置PD2为推挽输出,固定输出高电平
   LL_GPIO_SetPinMode(GPIOD, LL_GPIO_PIN_2, LL_GPIO_MODE_OUTPUT);
   LL_GPIO_SetPinOutputType(GPIOD, LL_GPIO_PIN_2, LL_GPIO_OUTPUT_PUSHPULL);
   LL_GPIO_SetPinPull(GPIOD, LL_GPIO_PIN_2, LL_GPIO_PULL_NO);
   LL_GPIO_SetOutputPin(GPIOD, LL_GPIO_PIN_2); // 固定高电平


  • 用万用表测量PD2电压

    • 正常应为 3.3V,若为 0V 或低于1V → 引脚损坏。

    • 若为 0V,尝试输出低电平(LL_GPIO_ResetOutputPin),若仍无变化 → 确认损坏。



2. 输入模式测试


   // 配置PD2为浮空输入
   LL_GPIO_SetPinMode(GPIOD, LL_GPIO_PIN_2, LL_GPIO_MODE_INPUT);
   LL_GPIO_SetPinPull(GPIOD, LL_GPIO_PIN_2, LL_GPIO_PULL_NO);

   // 读取引脚状态
   uint8_t state = LL_GPIO_IsInputPinSet(GPIOD, LL_GPIO_PIN_2);


  • 外部用导线将PD2交替连接 3.3V(高)GND(低)

  • 若读取值 无变化 → 引脚损坏(无法响应外部电平)。


3. 交叉验证



  • PD2连接到其他正常引脚(如PC12):

    • 如果PD2仍无法输出或读取信号 → 排除外部电路干扰,确认芯片损坏。


  • 检查PCB

    • PD2是否存在虚焊、锡渣短路、走线断裂。





解决方案




  1. 硬件替代方案



    • 更换备用引脚(需重映射):

      • STM32F103的UART5_RX默认是 PD2,但可重映射到 PC11(部分型号支持)。

      • 修改CubeMX配置:UART5_RX → PC11,更新代码并测试。


    • 切换串口

      • 若应用允许,改用其他正常的串口(如UART4)。





  2. 软件应急处理



    • 若必须使用UART5,且硬件无备用引脚:

      • 其他IO模拟UART接收(不推荐,占用CPU资源)。





  3. 更换芯片



    • 若上述测试确认PD2损坏,且无可行替代方案 → 更换STM32芯片。






预防措施



  1. 硬件保护

    • 在RX/TX信号线上串联 100Ω电阻,并添加TVS二极管防静电。

    • 避免热插拔串口设备(先断电再接线)。


  2. 软件鲁棒性

    • 增加超时机制(如LL_USART_ReceiveData阻塞超时)。

    • 检测总线错误标志(USART_ISR_OREUSART_ISR_FE)。





结论


您的现象 高度指向PD2引脚物理损坏(尤其是推挽输出时无反应)。请通过 电平测试和输入测试 进一步确认,并优先通过 引脚重映射 解决。如确认损坏,建议标记该引脚并避免使用,必要时更换芯片。

举报

更多回帖

发帖
×
20
完善资料,
赚取积分