板子在客户那边工作了一段时间后发现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 的输入口这么脆弱吗?
|
有没有可能是其他的干扰引入,导致了损坏,可以根据现场现象分析一下,或者外部在做一下额外的滤波...
用光耦做了隔离,就算有干扰也不应该会损坏IO啊,挺奇怪的,STM32 难道 电源浪涌?静电?
楼主的问题解决了没有,可以给点参考意见不?
我用另一个国产芯片遇到跟你一样的情况,IO对地500欧,3.3V对地100R,请问你后来是怎么解决这个问题的?
我的芯片是STM32F303
我的芯片是stm32f303