最近st芯片价格高,想用国产芯片代替。找到灵动微电子的代理要了几片样片mm32f3277g7p。管脚兼容,但软件要使用灵动微的固件库重新编译一次,还要修改一些时钟配置函数。编译完成后下载到电路板上的芯片内,程序可以运行起来,但我的主板要控制一个电磁阀。每当这个阀打开后mm32f3277g7p很容易死机,表现就是显示停留在当前界面,外设不管怎么动都没反应。需要断电重启才能运行。相同的硬件stm32f103rct6就不会出现死机。查找原理图后发现,mm32的晶振电路和stm32的晶振电路不同。
stm32的晶振电路,晶振两引脚处并联1MΩ电阻。单片机晶振引脚到晶振之间没有串联电阻。
图1、stm32f103rct6晶振电路
而mm32用户手册给出的晶振电路是单片机晶振引脚到晶振之间要串联一个电阻。
图2、mm32官方使用手册给出的晶振电路
官方评估开发板给出的原理图为晶振两端并联的电阻值为510KΩ,串联的电阻值为510Ω。
图3、mm32官方eMiniBoard (MM32F3277G7P)评估板原理图给出的晶振电路
更换为官方给出的电阻值后,程序死机问题没有再出现。510Ω的电阻不能省略,不然一样容易死机。
想用国产芯片替换stm32的芯片,一定要看好这些细节是不是也兼容。希望国产芯片能够发展壮大起来吧。
/*******************************************************************************************/
2021.12.6更新:使用官方评估板给出的方案,把510Ω电阻串接在芯片的6脚,即OSC_OUT管脚,程序依然会死机。而510Ω电阻串接在芯片5脚,即OSC_IN管脚程序不会死机。不知道是不是官方画错位置了?有没有人试过呢。
另外,我把两个电阻换成150KΩ和150Ω的组合,150Ω串接在芯片5脚,程序也不会死机。
图4、按官方图给的位置焊接上510Ω电阻依然会出现程序死机的情况。
图5、mm32f3277g7p管脚图