wanta_nie 发表于 2016-4-1 11:36:16

STM32F407 的IO配置成输入使用一段时间后坏了,对地电阻很小

板子在客户那边工作了一段时间后发现STM32F407 的输入口出现了不工作的情况,共使用了16个IO口,发现8个出现故障,断电正常IO口测量对地电阻很大 , 故障的IO口测量对地电阻有的只有1K有的只有几百欧,去掉周围电阻电容,故障不变,可以肯定是STM32F407 的IO输入出了问题,不知道什么原因怀疑是STM32F4 的IO脚坏掉了,可是将IO脚配置成输出后,控制高低电压又似乎是可以控制的,非常疑惑,不知道有朋友知道原因吗?

板子其他功能都是正常,晶振正常的,液晶按键都是正常工作的,程序也没跑飞,只有STM32F4 的几个输入引脚电压不正确,量的只有1.1V,正常时应该上拉到3.3V 所以板子输入信号总是错误的
板子以前以前都是正常工作的,现在几个IO输入脚忽然不工作
难道是STM32的IO脚烧坏了?
配置16个输入IO引脚的代码如下:
// 通用输入口
typedef struct
{
      GPIO_TypeDef * port;
      uint16_t pin;
}LIP_t;

static LIP_t LIP[] =
{
      {GPIOE, GPIO_Pin_4},// LI0 :PE4
      {GPIOE, GPIO_Pin_5},// LI1 :PE5
      {GPIOE, GPIO_Pin_6},// LI2 :PE6
      {GPIOC, GPIO_Pin_13}, // LI3 :PC13
      {GPIOC, GPIO_Pin_14}, // LI4 :PC14
      {GPIOC, GPIO_Pin_15}, // LI5 :PC15
      {GPIOC, GPIO_Pin_0},// LI6 :PC0
      {GPIOC, GPIO_Pin_1},// LI7 :PC1
      {GPIOC, GPIO_Pin_2},// LI8 :PC2
      {GPIOC, GPIO_Pin_3},// LI9 :PC3(手轮 10X)
      {GPIOA, GPIO_Pin_0},// LI10:PA0(手轮 A)
      {GPIOA, GPIO_Pin_1},// LI11:PA1(手轮 B)
      {GPIOA, GPIO_Pin_2},// LI12:PA2(手轮 100X)
      {GPIOA, GPIO_Pin_4},// LI13:PA4(手轮 X轴)
      {GPIOA, GPIO_Pin_5},// LI14:PA5(手轮 Y轴)
      {GPIOA, GPIO_Pin_6}   // LI15:PA6(手轮 Z轴)

};

void lip_init(void)
{
      // GPIO clock enable
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOE, ENABLE);
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOC, ENABLE);
      RCC_AHB1PeriphClockCmd(RCC_AHB1Periph_GPIOA, ENABLE);

      GPIO_InitTypeDef GPIO_InitStructure;

      GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN;
      GPIO_InitStructure.GPIO_Speed = GPIO_Speed_25MHz;
      GPIO_InitStructure.GPIO_OType = GPIO_OType_PP;
      GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_UP;

      for(int i=0; i < 16; i ++)
      {
                GPIO_InitStructure.GPIO_Pin = LIP.pin;
                GPIO_Init(LIP.port, &GPIO_InitStructure);
      }
}

板子一直在用的,忽然就这样了,刚用万用表测量了IO对地的电阻值,发现故障的IO变成 400欧姆左右,
好的IO脚对地电阻很大,所以,应该是 IO脚损坏了,只是不知道损坏的原因
外部24V都是经过光耦隔离的,核心电路都是3.3V
板子焊接后软件硬件通电测试过,在客户那边用了个把星期这样,应该不是焊接损坏,怀疑是静电什么的

难道STM32 的输入口这么脆弱吗?

wanta_nie 发表于 2016-4-1 11:38:54

有朋友遇到过这样的情况吗,

power568 发表于 2016-4-1 16:03:33

本帖最后由 power568 于 2016-4-1 16:04 编辑

有没有可能是其他的干扰引入,导致了损坏,可以根据现场现象分析一下,或者外部在做一下额外的滤波...

wanta_nie 发表于 2016-4-1 20:34:03

power568 发表于 2016-4-1 16:03
有没有可能是其他的干扰引入,导致了损坏,可以根据现场现象分析一下,或者外部在做一下额外的滤波... ...

用光耦做了隔离,就算有干扰也不应该会损坏IO啊,挺奇怪的,STM32 难道 电源浪涌?静电?

power568 发表于 2016-4-2 13:32:37

爱莫能助了,我是搞软件的...

LTZSMS 发表于 2016-9-2 09:24:15

我最近也遇到与楼主一样的问题,拆下芯片量管脚对低电阻只有1K多,或者一两百欧。还有部分IO对地电阻减小,但暂时还可以用,约2,3K的样子。
楼主的问题解决了没有,可以给点参考意见不?

隨風 发表于 2018-11-29 17:29:34

我也遇到了 外面是接的按键,一直用的好好的,突然就出现了输入脚PC13对地有500Ω的阻值。感觉应该是静电击穿了,程序继续跑没有任何问题。就PC13脚一直拉低。

Joyce丁丁 发表于 2020-6-18 19:05:16

楼主,你是怎么解决的,我现在遇到类似的情况

Joyce丁丁 发表于 2020-6-18 19:05:53

xin手 发表于 2018-11-29 17:29
我也遇到了 外面是接的按键,一直用的好好的,突然就出现了输入脚PC13对地有500Ω的阻值。感觉应该是静电击 ...

我用另一个国产芯片遇到跟你一样的情况,IO对地500欧,3.3V对地100R,请问你后来是怎么解决这个问题的?

lichaolichao 发表于 2021-2-11 00:44:54

我的iic通信也出现了问题,开漏输出输出不了高电平,测量电压只有1v多,上拉电阻是2.2k。之前工作正常,电路板摔到地上一次后就变成这样了,现在只能配置成推挽输出了,不知道稳定不稳定。

lichaolichao 发表于 2021-2-11 01:37:41

我的问题找出来了,不是io口的问题,电路板上的用于iic通信的上拉电阻摔坏了,电阻值变成了125k,过大了。我发贴片电容贴片电阻很容易受到物理冲击损坏,看来电路板需要外壳,是必需的。

sfee2002 发表于 2021-10-18 15:32:18

我的板子也有这个现象,而且批量这样,有IO对地电阻小的,有电源间电阻小的,不知楼主问题找到没

sfee2002 发表于 2021-10-18 15:33:26

sfee2002 发表于 2021-10-18 15:32
我的板子也有这个现象,而且批量这样,有IO对地电阻小的,有电源间电阻小的,不知楼主问题找到没

...

我的芯片是STM32F303

sfee2002 发表于 2021-10-18 15:34:13

sfee2002 发表于 2021-10-18 15:32
我的板子也有这个现象,而且批量这样,有IO对地电阻小的,有电源间电阻小的,不知楼主问题找到没

...

我的芯片是stm32f303
页: [1]
查看完整版本: STM32F407 的IO配置成输入使用一段时间后坏了,对地电阻很小