STM32的GPIO有8种模式,输入模式有模拟输入、floating模式、上拉模式和下拉模式,在实际应用中,由于浮空输入可能导致引脚电平不稳定和易受干扰,使用floating模式的时候要注意一些。
笔者在设计可调增益增益放大器(VGA)的时候,使用4个GPIO读取外部控制电压,根据约定的编码格式设定DAC的输出电压,从而设置VGA的增益,然而在测试发现,DAC的输出电压不稳定,有持续上升的趋势。经过多次实验、代码分析,发现并不是DAC的问题,而是GPIO的问题。GPIO模式当时选择的是floating模式,在系统复杂的电磁环境中,浮空输入导致读取的电压不稳定,从而做出错误判断,对DAC做出错误的指示。
问题代码:
//选择引脚
GPIO_InitStructure.GPIO_Pin = OUTSIDE_VGACTRL3_GPIO_PIN;
//设置引脚为浮空输入
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING;
//使用结构体初始化按键
GPIO_Init(OUTSIDE_VGACTRL3_GPIO_PORT

最低0.47元/天 解锁文章
9284

被折叠的 条评论
为什么被折叠?



