本帖最后由 dffzh 于 2025-8-1 14:38 编辑
之前做过一个项目,因为是降本方案,所以对芯片选型要求比较高,特别是其中的MCU主控,综合评估后,最后选了STM32G431KBU3,一款带26个GPIO引脚的M4核芯片。可是让我没有想到的是,最后这个芯片的普通GPIO引脚居然不够用,没办法,只能把烧录脚SWCLK和SWDIO也用上了,主控原理图如下图所示: 其中烧录脚SWCLK和SWDIO用作模拟I2C功能,读写外部EEPROIM芯片。 那这样在代码仿真调试I2C功能时就会比较麻烦了,因为如果烧录脚SWCLK和SWDIO配置为普通GPIO模式后,就无法正常仿真了,只能下载程序到板子上实际运行看结果了。因此为了调试方便一些,代码上就最后再调试I2C了,并加上一个宏定义来使能或禁止烧录脚SWCLK和SWDIO的GPIO配置,如下图所示: 需要仿真的时候,就手动把I2C_ENABLE的定义屏蔽掉;需要实测I2C功能时,就手动把I2C_ENABLE的定义打开。这里还有个问题需要注意,就是如果配置为GPIO模式后,如果烧录信号线不接RESET脚,是无法正常下载程序的,不知道其他MCU是不是也是如此。 像这种GPIO复用的设计,其实不是很好,后面有时候因为出现Bug需要仿真时,操作半天进不了仿真,以为代码有问题,结果排查后才发现,原来是没有关闭I2C配置,因为时间长了,容易忘记;还有就是修改Bug后生成固件,结果测试发现参数无法掉电保存,结果是生成固件时没有使能I2C配置。反正就是这种复用操作,很可能会遇到意想不到的问题,结果我们还认为是不可思议的。 因此,除非真的没有办法了,类似这种用烧录脚来做普通GPIO功能的设计,看上去似乎很高端很优秀,其实稍微不小心,就容易出问题,而且可能会影响芯片的二次烧录。 大家有木有做过类似的开发设计?欢迎分享一下心得~~。 |
看样子外挂HC595,还占用3只GOIO,不如外挂个MCU。价格差不多,顺便扩了GPIO,可能还省一个GPIO。