每一个电工最不愿意的见到的是:为 MCU 选型而烦恼。
MCU 作为嵌入式系统的核心器件,其选型可以说是重中之重,成本、性能、开发难易.......
ST 新推出的新一代入门级利器 STM32G0 就是为了打破成本、性能、开发难易这个不可能三角!
接下来让我们来数数G0为你的新项目省下来的各种费用。
最让人激动的是,不但省下了这么多外围器件成本,而且G0本身的价格媲美同等配置的F0!
那么,在设计应用中,有没有需要特别避过的坑?
小马哥,资深蝶粉,在G0开发中,被PD0,PD2引脚使用困扰,让我们一起复盘小马哥踩过的坑和他的解决之道。
STM32G071 PD0 PD2引脚使用注意事项
【背景】STM32G071的PD0,PD2作为外部中断使用,外部接10K上拉电阻拉到3.3V。外部设备被触发后电平为低电平,正常无信号。
【问题】在以上背景下,按道理外部设备正常时(未触发中断),IO口输入电平应该是3.3V。但是实际上测量到的是0.9V,这和触发后的0V,都被单片机识别为低电平,故无法触发中断。
【分析解决】查阅STM32G0数据手册可知:
这个引脚的电平为FT_c,我们知道FT是容忍5V,那么FT_c是什么意思?再看说明:
然后去用户手册查看GPIO相关说明,找到以下内容:
基本上了解状况了,然后看一下相关寄存器说明:
具体说明:
由以上说明,大致可以判断如何操作:在初始化IO的时候,顺便把SYSCFG registers的 UCPD2_STROBE位设置一下就 OK 了。
HAL库操作:
HAL_SYSCFG_StrobeDBattpinsConfig(SYSCFG_CFGR1_UCPD2_STROBE);
LL库操作:
MODIFY_REG(SYSCFG->CFGR1, (SYSCFG_CFGR1_UCPD1_STROBE |SYSCFG_CFGR1_UCPD2_STROBE), SYSCFG_CFGR1_UCPD2_STROBE);
请再注意,其实PA8和PA15也是这样的,如果我们不需要这个下拉电阻,需要按照上面的操作一下。
那么为什么 STM32G071 有这样的设置呢?看下面IO功能即可知道,这几个引脚其实是:
PD0
UCPD2_CC1
PD1
UCPD2_CC2
PA8
UCPD1_CC1
PB15
UCPD1_CC2
也就是TYPE-C充电管理的相关引脚,所以会有这样的设置,关于TYPE-C相关知识,可以自行百度了解详情。