GD32F103系列SPI导致死机问题
2025-03-05 来源:jianshu
提出问题
几年前的一个产品,一直用的STM32F103系列的MCU,2021年上半年意法半导体在市场上的MCU货源稀疏,高价都买不到,只能用国产芯片代替。国产芯片中,首选兆易创新,毕竟是上市公司,也是最早在国内与意法半导体竞争的公司。用GD32F103代替STM32F103。
发现问题
很幸运,STM32F103的程序是可以直接在GD32F103直接使用的。直接下载STM32F103的程序到GD32F103。没想到,好景不长,产品在用户运行一段时间后,客户发现“死机”现象。开门狗也没有起作用?但定时中断是可以运行的。
解决问题
既然中断可以运行(因为现实是数码管,用的定时扫描。显示是正常的,因此判断定时中断正常。),那么程序一定是运行到一个死循环里,而且这个死循环中还有清看门狗。
第一个想到的就是SPI接口,里面有等待SPI接口就绪等,而且在等待过程中,还有清看门狗。
降低SPI速率试试。
结果:不尽人意,在强干扰,或者手动将SPI的CS引脚和地短接一下的话,依然出现死机现象。百度搜索问题,有人提出SPI的输入脚需要设置为浮空输入。
GPIO_InitStructure.GPIO_Pin = PIN_SPIFLASH_MISO; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN_FLOATING; GPIO_Init(GPIO_SPIFLASH_MISO, &GPIO_InitStructure);
本产品中使用SPIFLASH,SPI作为主设备,只有MISO为输入脚,设定为浮空输入。
结果:没起作用。依然存在死机现象。
会不会是SPI接口被干扰的不工作了呢?如果在使用SPIFlash的地方首先复位SPI,是否可行?
SPIFLASH_CS_DISABLE(); SPI_I2S_DeInit(SPI_FLASH);
结果:不负众望。死机现象消失。
结论
STM32的芯片不需要每次对SPI控制器复位,而GD32在一点点干扰的情况下就需要对SPI控制器进行复位,说明GD32芯片的稳定性还是照STM32差一截。
上一篇:HWS-2021部分题解
相关文章
- GigaDevice发布多款GD32F103和GD32F101系列大容量增强型MCU
- Diodes推出高效多相SPI升压控制器 助力实现稳健、灵活的汽车前大灯系统
- STM32 HAL库 模拟SPI驱动 ADS1118
- STM32 HAL库 模拟SPI驱动 DAC8560
- STM32 HAL库 模拟SPI驱动 DAC8564
- STM32H5开发(6)----SPI驱动TFT-LCD屏
- STM32 SPI通信协议详解
- Diodes公司推出低功耗I2C/SPI总线转双通道UART桥接器 提升汽车连接稳健性
- STM32使用LL库实现硬件SPI数据发送流程详解
- STM32 SPI数据接收难题解析:原因与解决方案
- 六大全新产品系列推出,MCX A微控制器家族迎来创新
- 意法半导体全新STM32C5系列,重新定义入门级微控制器性能与价值,赋能万千智能设备
- 从控制到系统:TI利用边缘AI重塑嵌入式MCU的边界
- 模组复用与整机重测在SRRC、CCC、CTA/NAL认证中的实践操作指南
- 有源晶振与无源晶振的六大区别详解
- 英飞凌持续巩固全球微控制器市场领导地位
- 使用 Keil Studio for Visual Studio Code开发 STM32 设备
- 蓝牙信道探测技术原理与开发套件实践
- LoRa、LoRaWAN、NB-IoT与4G DTU技术对比及工业无线方案选型分析
- Microchip 推出生产就绪型全栈边缘 AI 解决方案,赋能MCU和MPU实现 智能实时决策
热门新闻




