打印
[APM32F1]

国产APM32F103ZET6替换STM32F103ZET6经验分享(二)

[复制链接]
2267|14
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
CCCfe|  楼主 | 2022-6-8 08:52 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
国产APM32F103ZET6替换STM32F103ZET6经验分享(二)

接着《国产APM32F103ZET6替换STM32F103ZET6经验分享(一)》继续与大家分享~
#申请原创#

3 参数与电气特性的差异
在使用过程中,我们发现APM32F103ZE和STM32F103ZE的参数和电气特性不一样,在这种情况下,我们可能会遇到一些问题,以下通过手册对比总结了一些模块的差异。

3.1 时钟3.1.1 温度、电压的环境引起HSI的精度差异
APM32的主频标称为96MHz,STM32的主频标称为72MHz;在高低温情况下,HSI作为时钟源时,APM32的时钟精度在(-2.8~2.4)%,但STM32的时钟精度在(-2.0~2.5)%,比APM32略高。

如果使用HSI作为系统时钟,且对精度要求较高、使用场景是;如果使用场景是3.3V的工作电压,且温度为25℃时,出厂精度都是±1%。

3.1.2 HSE起振时间差异引起系统时钟配置存在差异
在使用晶振作为HSE的时钟源时,APM32F103和STM32F103的起振温度时间存在差异,STM32F103起振稳定时间比APM32F103的快。

代码中判断是否起振稳定的方式是使用软件延时等待,设置的HSE_STARTUP_TIMEOUT数值是0x500,参考代码如下:

当晶振离开MCU的晶振连接引脚较远,或者匹配电容不合理,或者使用贴片晶振而不是直插晶振时,HSE_STARTUP_TIMEOUT的等待稳定时间不足以使晶振起振,会出现无法起振的情况,导致系统时钟为HSI的8MHz。

另外一方面,代码运行的速率差异,也会影响软件延时等待的实际时间。

解决方法是调大HSE_STARTUP_TIMEOUT,例如设置HSE_STARTUP_TIMEOUT为0x5000

3.2 FLASH3.2.1 APM32F103xE的页擦时间、片擦时间、写时间比STM32F103xE的快
通过对比两种芯片的数据手册,我发现两者的Flash的性能参数有点区别:
(1)APM32的页擦除时间是2.7~3.5ms,STM32是20~40ms,比STM32快约7倍。
(2)APM32的16bit编程时间是33.7~40.5us,STM32是40~70us,比STM32快约20%。

如果运行的代码中存在软件延时等待擦写时间,注意调整代码。

3.2.2 Flash等待周期的配置差异
手册中系统频率与访问Flash等待时间关系如下(见用户手册):
(1)STM32F103ZET6的手册
(2)APM32F103ZET6的手册
然而两家的Flash访问速度也不同,有时候不会安严格的按照手册配置,例如在自己编写代码配置系统时钟为48MHz时、Flash预取使能、等待周期设置为0时,就发现STM32F103ZET6可以正常工作,APM32F103ZET6就不能正常工作。

因此,在配置该参数时,建议还是严格按照官网提供的参数配置。


PS:我看了极海官网上的FAQ,发现有些人因为等待周期不够而出现很多错误,所以大家一定要尽量按照手册上的选择等待周期的个数!不确定够不够的,可以先设置多一个,毕竟“多多益善”嘛~

3.2.3 Flash擦写过程中关闭中断
在网上看到,APM32F103ZET6在执行擦写Flash时,最好先关闭中断,否则可能擦写Flash失败(个人没有遇到过这个问题),而STM32F103ZET6则不需要。

3.3 功耗
APM32F103较STM32F103相比,运行、睡眠、停机功耗较小,待机功耗较大,但都是在10uA以下,电池功耗基本一致。

如果是电池供电、且运行模式占用的运行时间较多,使用APM32F103ZET6的工作时间是比STM32F103ZET6的工作时间长。如果产时间在低功耗模式运行,工作时长则反之。

3.4 GPIO3.4.1 GPIO配置为浮空输入的抗干扰能力
众所周知,在使用GPIO时,应配置相应的GPIO工作模式(见用户手册)。
但是在用作EXTI或是USART_Rx时,GPIO被配置为浮空输入模式后,发现无法读取稳定电平,这是怎么一回事呢?


原来,APM32F103的GPIO在用作浮空输入或复用推挽输出时,容易受到外界影响,导致读取或输出异常,此时有两个解决方案:
①换一种工作模式,通过软件修改成上拉输入或推挽输出;
②电压容易受到干扰,那就外接一个上拉电阻,让电平变稳定。

3.5 USBD与CAN共用
这是一个很惊喜的发现——APM32F103可以同时使用USBD和CAN!但是如果要实现这个目的,需要把CAN重新映射到复用引脚,此时是USBD2与CAN共用。
是的没错,APM32F103有两个USBD,但是由于两个USBD公用引脚、地址、寄存器、时钟,所以相当于只有一个USBD,只有在需要同时使用USBD和CAN时,才启用USBD2。

这里有两个使用的注意点:
① 在USBD2的基地址偏移0x1000处写0x0000 0001
② PA11和PA12引脚给USBD2使用,CAN使用其他引脚

3.6 运行代码的速度有差异
相信有不少人都会用for或while循环做延时,但是在实际运用时,发现软件延时在时间的精度上会有误差。

由此可见,APM和STM的芯片在代码的执行速度上有差异,大家千万别把用在STM的延时循环直接套在APM上!可能会因为启动时间不够长而导致系统时钟频率不对(别问我怎么知道的,血的教训)。

当然,用定时器或者直接用时钟周期做精准定时的话,那就no problem了~

3.7 Boot0引脚接地问题
正常情况下,从主存储区(用户Flash,地址为0x0800 0000)启动,Boot0是必现接GND的。但是在查阅网上资料时,发现STM32F103ZET6的Boot0不接GND也能稳定从主存储区启动,APM32F103ZET6无法稳定从主存储区启动,有时候可以、有时候不能。

在实际应用中,如果是从主存储区启动,还是安安心心的按照官方的推荐将GND通过10kΩ电阻下拉到GND。

4 总结
以上是在mini板上编写了简单的测试代码,且在网上搜集、整理了资料进行分析,STM32F103ZET6有的功能、APM32F103ZET6也有,而且APM32F103ZET6额外比STM32F103ZET6多了些功能。
初步判断在不需要修改硬件、少量修改软件(看具体使用了哪些模块、哪些应用场景)的情况下,可以使用APM32F103ZET6是可以替换STM32F103ZET6,
另外,APM32F103ZET6在价格、供货上也有优势,国产真的太香了,兄弟们还犹豫什么快下手!!!


使用特权

评论回复
沙发
七毛钱| | 2022-6-8 15:13 | 只看该作者
国产芯片能很好替代st芯片的真的越来越多了,现在极海也是一个很好的选择

使用特权

评论回复
板凳
七毛钱| | 2022-6-8 15:14 | 只看该作者
但对于用惯了st芯片的企业来说,要接受另一种芯片也有很长的路要走

使用特权

评论回复
地板
zjh20070904| | 2022-6-8 17:07 | 只看该作者
七毛钱 发表于 2022-6-8 15:14
但对于用惯了st芯片的企业来说,要接受另一种芯片也有很长的路要走

感觉ST除了产品外,很大的强项在它的生态系统上,各种学习资料,而且从学校期间就开始培养、引导。

使用特权

评论回复
5
daichaodai| | 2022-6-9 08:19 | 只看该作者
这命名规则都和某T一样啊

使用特权

评论回复
6
wwppd| | 2022-6-20 15:41 | 只看该作者
这个代码不可以直接下载吗

使用特权

评论回复
7
hellosdc| | 2022-6-20 19:09 | 只看该作者
使用都是什么下载程序呢?

使用特权

评论回复
8
wilhelmina2| | 2022-6-20 21:27 | 只看该作者
APM32F103ZET6的价格怎么样?

使用特权

评论回复
9
guijial511| | 2022-6-21 08:12 | 只看该作者
价格便宜多少?

使用特权

评论回复
10
Zhang123D| | 2022-6-22 10:15 | 只看该作者
wilhelmina2 发表于 2022-6-20 21:27
APM32F103ZET6的价格怎么样?

便宜很多

使用特权

评论回复
11
Zhang123D| | 2022-6-22 10:24 | 只看该作者

便宜挺多的

使用特权

评论回复
12
z31com| | 2022-6-24 14:41 | 只看该作者
学习了,感谢

使用特权

评论回复
13
迪圣-欧丽良| | 2022-12-27 10:43 | 只看该作者

便宜很多  ,需要资料或技术支持可加V 15813376719 极海一级代理

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

3

帖子

0

粉丝