由于最近芯片涨价,STM32F103系列的单片机价格已经十分昂贵,价格已经超出了我的承受范围, 所以我一直在寻找可替代的产品。之前,买过STM32F103C6T6A,当时是6元一片买的,买了20片,本来以为只是容量少了一半,最后发现这个型号是阉割版,相对于STM32F103c8T6来说,少了一个串口,少了一个SPI。这对于一般的应用来说,也是足够用了,但是对于一些其他的应用,就力不从心了。
购买F107
偶然间买了一片STM32F107RCT6,价格是11块多,相对来说价格已经很低了。昨天查看了资料,发现引脚和F103的完全兼容,之前有做过F103RCT6的板子,既然完全兼容,那么我就直接焊上去开始测试。
一、F103和F107的区别
首先,两个芯片都是意法半导体为ARM Cortex-M3内核出的用于自动控制领域的微处理器。
F107是互联型接口,且内部资源较多,F103是增强型(比F101强),相比F103,F107加入IEEE以太网接口,2个IIS音频接口(做音频解码用),全部64KByte的SRAM缓存。
107支持网络,支持OTG,可以有以太控制器,103是没有的。
都是使用ST提供的标准固件库,完全通用。
F103固件库中默认外部时钟是8M,F105和F107是25M.
这里提供一个图给大家参考

二、F107的内部资源
关于F107的内部资源,是根据引脚的数量和容量大小进行区分的,基本和F103的一致。

三、关于F103和F107的时钟
F103,外接8M,直接9倍频,得到72M时钟。参考手册上对应时钟树图:

F107,因为具有USB OTG功能,因此需要特别时钟。一般采用25M外部晶振,方便提供USB或以太网相关时钟频率,最终系统时钟为72M。参考手册上对应时钟树图:

四、启动文件
查看F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。对比一下,发现只有OTG USB模块和Ethernet模块相关的中断及响应函数区别,再没有其它不同:
五、移植F103工程为F107工程
1.拷贝一个F103的工程

2.名称更改
因为我们是F103的工程,用的是F103的芯片,我们使用F107的芯片,需要选择对应的型号。
这里我使用的是F107RCT6.

3.预编译头文件更改
因为我们使用的是F107,所以头文件有所不同。
F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。

USE_STDPERIPH_DRIVER,STM32F10X_CL 中间需要用,隔开
4.修改下载的容量
如果我们使用下载器下载,需要设置一下这个芯片对应的容量大小,我的是RCT6,容量是256K。

经过上面的步骤的移植,基本上已经可以进行通信了。
测试:
输入一句串口打印信息。

结果:

到此,移植成功。
5.替换启动文件
F103对应startup_stm32f10x_hd.s(大容量),F107对应startup_stm32f10x_cl.s,仅和OTG、Ethernet中断有关。
上面已经测试成功了,为什么还要做这一步,因为startup_stm32f10x_cl.s包含有OTG和Ethernet中断有关的信息,我们没有使用这个功能,所以无所谓,但是一旦使用了就会报错,我们最好替换一下。
六、关于我的调试
今天焊好了基本外围电路,然后上电测试,发现串口打印的都是乱码,因为我焊接的是8MHZ的晶振,时钟不正确。
因为是之前的板子,焊接的是8MHZ的贴片的SMD晶振,手头上没有25MHZ的这种晶振,在实验室找了一通,也没有找到这个晶振,最后没有办法,只能飞线了,还好还有之前用的429开发板上的晶振。
由于最近芯片涨价,STM32F103系列的单片机价格已经十分昂贵,价格已经超出了我的承受范围, 所以我一直在寻找可替代的产品。之前,买过STM32F103C6T6A,当时是6元一片买的,买了20片,本来以为只是容量少了一半,最后发现这个型号是阉割版,相对于STM32F103c8T6来说,少了一个串口,少了一个SPI。这对于一般的应用来说,也是足够用了,但是对于一些其他的应用,就力不从心了。
购买F107
偶然间买了一片STM32F107RCT6,价格是11块多,相对来说价格已经很低了。昨天查看了资料,发现引脚和F103的完全兼容,之前有做过F103RCT6的板子,既然完全兼容,那么我就直接焊上去开始测试。
一、F103和F107的区别
首先,两个芯片都是意法半导体为ARM Cortex-M3内核出的用于自动控制领域的微处理器。
F107是互联型接口,且内部资源较多,F103是增强型(比F101强),相比F103,F107加入IEEE以太网接口,2个IIS音频接口(做音频解码用),全部64KByte的SRAM缓存。
107支持网络,支持OTG,可以有以太控制器,103是没有的。
都是使用ST提供的标准固件库,完全通用。
F103固件库中默认外部时钟是8M,F105和F107是25M.
这里提供一个图给大家参考

二、F107的内部资源
关于F107的内部资源,是根据引脚的数量和容量大小进行区分的,基本和F103的一致。

三、关于F103和F107的时钟
F103,外接8M,直接9倍频,得到72M时钟。参考手册上对应时钟树图:

F107,因为具有USB OTG功能,因此需要特别时钟。一般采用25M外部晶振,方便提供USB或以太网相关时钟频率,最终系统时钟为72M。参考手册上对应时钟树图:

四、启动文件
查看F103对应的startup_stm32f10x_hd.s文件和F107对应的startup_stm32f10x_cl.s文件。对比一下,发现只有OTG USB模块和Ethernet模块相关的中断及响应函数区别,再没有其它不同:
五、移植F103工程为F107工程
1.拷贝一个F103的工程

2.名称更改
因为我们是F103的工程,用的是F103的芯片,我们使用F107的芯片,需要选择对应的型号。
这里我使用的是F107RCT6.

3.预编译头文件更改
因为我们使用的是F107,所以头文件有所不同。
F103对应STM32F10X_HD(大容量),F107对应STM32F10X_CL。

USE_STDPERIPH_DRIVER,STM32F10X_CL 中间需要用,隔开
4.修改下载的容量
如果我们使用下载器下载,需要设置一下这个芯片对应的容量大小,我的是RCT6,容量是256K。

经过上面的步骤的移植,基本上已经可以进行通信了。
测试:
输入一句串口打印信息。

结果:

到此,移植成功。
5.替换启动文件
F103对应startup_stm32f10x_hd.s(大容量),F107对应startup_stm32f10x_cl.s,仅和OTG、Ethernet中断有关。
上面已经测试成功了,为什么还要做这一步,因为startup_stm32f10x_cl.s包含有OTG和Ethernet中断有关的信息,我们没有使用这个功能,所以无所谓,但是一旦使用了就会报错,我们最好替换一下。
六、关于我的调试
今天焊好了基本外围电路,然后上电测试,发现串口打印的都是乱码,因为我焊接的是8MHZ的晶振,时钟不正确。
因为是之前的板子,焊接的是8MHZ的贴片的SMD晶振,手头上没有25MHZ的这种晶振,在实验室找了一通,也没有找到这个晶振,最后没有办法,只能飞线了,还好还有之前用的429开发板上的晶振。
举报