gfhjbg 2026-03-18 11:27 采纳率: 0%
浏览 5

芯片上电过一会后就短路

自己焊接的stm32f103c8t6芯片焊接完后用万用表测试时没有问题,引脚无互相粘连,也用洗板水洗过了,PCB在焊接前也测试了没有问题,在Keil用st-link链接时显示“ARM CoreSight SW_DP”,烧录不了,接一会儿电vcc和gnd就短路了,芯片在立创买的

  • 写回答

1条回答 默认 最新

  • 檀越@新空间 2026-03-18 11:28
    关注

    上午好☀️☀️☀️️
    本答案参考通义千问

    你描述的问题非常典型,涉及焊接工艺、PCB设计、电源管理以及芯片本身的质量问题等多个方面。以下是详细分析和解决方案:


    一、问题分析

    1. 上电后短路的原因

    • 焊点短路:虽然你用万用表测试了没有问题,但可能在焊接过程中有锡渣或过量的焊锡导致局部短路,尤其是在高密度布线的PCB上。
    • PCB制造缺陷:立创商城提供的PCB可能存在线路间绝缘不良,尤其是边缘区域或孔壁处理不好。
    • 电源去耦电容未接入:如果电源引脚没有接退耦电容(如0.1uF陶瓷电容),可能导致瞬态电流过大,造成VCC和GND之间短路。
    • STM32芯片本身存在质量问题:虽然不常见,但某些批次的芯片可能存在内部短路或制造缺陷

    二、解决方案

    1. 检查焊接质量

    • 使用放大镜/显微镜检查所有焊点,特别是VCC、GND、复位、SWD等关键引脚。
    • 检查是否有锡珠、桥接或虚焊现象
    • 使用热风枪重新焊接,确保焊点光滑无毛刺。

    重点: 焊接完成后必须进行目检+红外检测,防止肉眼无法发现的短路。


    2. 检查PCB是否存在制造缺陷

    • 使用万用表测量VCC与GND之间的电阻,正常应为无穷大(开路),否则说明PCB存在短路。
    • 检查PCB板上的走线是否间距过小,特别是在电源层和地层之间。
    • 检查PCB的孔壁是否完整,是否有铜箔脱落导致短路。

    重点: 如果PCB是立创生产的,建议更换其他厂商的PCB进行测试,以排除制造问题。


    3. 增加电源退耦电容

    • VCC和GND之间添加一个0.1uF的陶瓷电容(靠近芯片电源引脚)。
    • 如果条件允许,还可以加一个10uF的电解电容。

    重点: 电源滤波电容是稳定系统运行的关键,缺少它可能导致芯片工作异常甚至损坏


    4. 尝试使用外部电源供电

    • 避免使用开发板自带的电源,改用独立的稳压电源(如5V/3.3V稳压器)
    • 使用万用表测量VCC与GND之间的电压,看是否在正常范围内。

    5. 检查ST-Link连接是否正确

    • 确认SWD接口的引脚是否正确连接,包括SWCLK、SWDIO、GND。
    • 检查ST-Link的供电是否正常,部分情况下ST-Link会通过SWD接口给目标板供电,可能导致短路。

    重点: ST-Link连接时要先连接GND再连接其他引脚,避免误操作引起短路。


    6. 尝试烧录前断开VCC

    • 在烧录之前,先断开VCC电源,然后连接ST-Link,再上电。
    • 这样可以避免烧录过程中因短路导致芯片损坏。

    7. 测试芯片是否损坏

    • 将芯片从PCB上拆下,用万用表测试其引脚是否对地短路。
    • 尝试在其他已知正常的电路中测试该芯片,看是否能正常工作。

    重点: 如果芯片在其他电路中也无法正常工作,说明芯片可能已经损坏。


    三、代码相关建议(若需要)

    如果你使用的是标准的STM32F103C8T6程序,建议参考以下代码结构,并确保电源引脚正确配置

    #include "stm32f103x8.h"
    
    void SystemInit(void) {
        // 初始化系统时钟
    }
    
    int main(void) {
        SystemInit();
        
        // 配置GPIO
        RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
        GPIO_InitTypeDef GPIO_InitStruct;
        GPIO_InitStruct.GPIO_Pin = GPIO_Pin_0;
        GPIO_InitStruct.GPIO_Mode = GPIO_Mode_Out_PP;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
        GPIO_Init(GPIOA, &GPIO_InitStruct);
    
        while (1) {
            GPIO_SetBits(GPIOA, GPIO_Pin_0);
            Delay(1000);
            GPIO_ResetBits(GPIOA, GPIO_Pin_0);
            Delay(1000);
        }
    }
    

    重点: 不要忽略电源管理部分,确保VDD和GND引脚正确连接。


    四、总结

    | 问题 | 解决方案 | |------|----------| | 短路 | 检查焊点、PCB、电源滤波电容 | | 无法烧录 | 检查ST-Link连接、电源供电方式 | | 芯片损坏 | 拆下测试,更换新芯片 |


    如果你愿意,也可以提供PCB图或照片,我可以进一步帮你分析具体问题所在。

    评论

报告相同问题?

问题事件

  • 创建了问题 3月18日