由于芯片价格上涨,产品成本增加,选用APM32F103RCT6替代STM32F107RCT6,原本板子上使用的是STM32F107RCT6,没有使用网络功能,使用的时钟源是25MHZ的外部晶振,开发平台是keil5。
1、是根据引脚的数量和容量大小进行区分的,两款芯片可以通用。
2、标准固件库也一样。
3、外部晶振有差异107默认使用25MHZ 103一般默认8MHZ。
4、如果不使用网络,OTG、以太控制器,两款芯片基本可以完成替换。
这些是背景的介绍。
要完成芯片的替换,主要考虑两件事:
1、考虑外部晶振、107是互联型 MCU区别与F103,因为他们具有USB OTG功能,因此需要特别的时钟。一般我们使用外部25MHZ振晶,方便提供USB或以太网相关时钟频率。而103 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。因此很明显,我们第一个要考虑的是外部晶振的适配。对于此问题,有两种解决方式,一、是修改外部晶振,把25MHZ的晶振替换为4MHz~16MHz这个范围内的晶振,最好是8MHZ,官方推荐的是8MHZ,但是8MHZ价格比较高,国内的8MHZ精度达不到。价格大概是2元一块,如果是用于生产产品,则推荐使用16MHZ,因为16MHZ的晶振价格便宜,大约是0.4元。由于,我手头只有一块12MHZ的晶振,下面我将以12MHZ晶振芯片为例,介绍一下,我的配置过程。二、是使用内部的HSI 8MHZ晶振。
2、考虑107和103芯片型号的替换。
下面是具体操作步骤。
(1)、首先把板卡上的25MHZ晶振替换成12MHZ晶振芯片,然后,用烙铁把STM32F107RCT6芯片去掉,重新焊接APM32F103RCT6。
(2)点击魔术棒,
选择APM32103RC这个包,其实选择STM32103RC的包也能用,我试过可以用。然后点击OK
(3)选择12MHZ
(4)、F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。
F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。(互联型产品)
在stm32f10x.h中有对外部晶振频率的宏定义,并且在注释中有提到为了避免修改该库文件,用户可以在工具链编译器预处理中定义该值
(5)、根据上图步骤8和下表选择第十步要添加的内容。
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) &&
!defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
/* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
/* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
/* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
/* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */
/* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */
/* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
(6)、修改程序配置
进入SetSysClockTo72()函数 由于在步骤8中选的是CL因此实际执行的是else的内容,外部晶振为12,目标是72 72 =12*6 按照如图修改。
剩下的就是编译烧写程序。
因本人知识能力有限,可能存在错漏之处,欢迎指正。
版权声明:本文为CSDN博主「lzalxy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lzalxy/article/details/121853788
由于芯片价格上涨,产品成本增加,选用APM32F103RCT6替代STM32F107RCT6,原本板子上使用的是STM32F107RCT6,没有使用网络功能,使用的时钟源是25MHZ的外部晶振,开发平台是keil5。
1、是根据引脚的数量和容量大小进行区分的,两款芯片可以通用。
2、标准固件库也一样。
3、外部晶振有差异107默认使用25MHZ 103一般默认8MHZ。
4、如果不使用网络,OTG、以太控制器,两款芯片基本可以完成替换。
这些是背景的介绍。
要完成芯片的替换,主要考虑两件事:
1、考虑外部晶振、107是互联型 MCU区别与F103,因为他们具有USB OTG功能,因此需要特别的时钟。一般我们使用外部25MHZ振晶,方便提供USB或以太网相关时钟频率。而103 HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。因此很明显,我们第一个要考虑的是外部晶振的适配。对于此问题,有两种解决方式,一、是修改外部晶振,把25MHZ的晶振替换为4MHz~16MHz这个范围内的晶振,最好是8MHZ,官方推荐的是8MHZ,但是8MHZ价格比较高,国内的8MHZ精度达不到。价格大概是2元一块,如果是用于生产产品,则推荐使用16MHZ,因为16MHZ的晶振价格便宜,大约是0.4元。由于,我手头只有一块12MHZ的晶振,下面我将以12MHZ晶振芯片为例,介绍一下,我的配置过程。二、是使用内部的HSI 8MHZ晶振。
2、考虑107和103芯片型号的替换。
下面是具体操作步骤。
(1)、首先把板卡上的25MHZ晶振替换成12MHZ晶振芯片,然后,用烙铁把STM32F107RCT6芯片去掉,重新焊接APM32F103RCT6。
(2)点击魔术棒,
选择APM32103RC这个包,其实选择STM32103RC的包也能用,我试过可以用。然后点击OK
(3)选择12MHZ
(4)、F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。
F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。(互联型产品)
在stm32f10x.h中有对外部晶振频率的宏定义,并且在注释中有提到为了避免修改该库文件,用户可以在工具链编译器预处理中定义该值
(5)、根据上图步骤8和下表选择第十步要添加的内容。
#if !defined (STM32F10X_LD) && !defined (STM32F10X_LD_VL) && !defined (STM32F10X_MD) && !defined (STM32F10X_MD_VL) &&
!defined (STM32F10X_HD) && !defined (STM32F10X_HD_VL) && !defined (STM32F10X_XL) && !defined (STM32F10X_CL)
/* #define STM32F10X_LD */ /*!< STM32F10X_LD: STM32 Low density devices */
/* #define STM32F10X_LD_VL */ /*!< STM32F10X_LD_VL: STM32 Low density Value Line devices */
/* #define STM32F10X_MD */ /*!< STM32F10X_MD: STM32 Medium density devices */
/* #define STM32F10X_MD_VL */ /*!< STM32F10X_MD_VL: STM32 Medium density Value Line devices */
/* #define STM32F10X_HD */ /*!< STM32F10X_HD: STM32 High density devices */
/* #define STM32F10X_HD_VL */ /*!< STM32F10X_HD_VL: STM32 High density value line devices */
/* #define STM32F10X_XL */ /*!< STM32F10X_XL: STM32 XL-density devices */
/* #define STM32F10X_CL */ /*!< STM32F10X_CL: STM32 Connectivity line devices */
#endif
(6)、修改程序配置
进入SetSysClockTo72()函数 由于在步骤8中选的是CL因此实际执行的是else的内容,外部晶振为12,目标是72 72 =12*6 按照如图修改。
剩下的就是编译烧写程序。
因本人知识能力有限,可能存在错漏之处,欢迎指正。
版权声明:本文为CSDN博主「lzalxy」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/lzalxy/article/details/121853788
暂无评论