STM32F1系列产品的器件类型界定及相关话题

by Miler Shao

STM32F1系列MCU隶属同一ARM CORTEX M3内核,依据其自嵌的Flash 容量大小及互连功能特色,ST 公司将其大致分为
5类器件,分别是小容量器件、中等容量器件、大容量器件、超大容量器件、互联型器件。

  • 小容量器件[low-density devices]: 内部FLASH容量在16-32K Byte的STM32F101、STM32F102、STM32F103器件。
  • 中等容量器件[Medium-density devices]: 内部FLASH容量在64-128K Byte的STM32F101、STM32F102、STM32F103器件。
  • 大容量器件[High-density devices]: 内部FLASH容量在256-512K Byte的STM32F101、STM32F102、STM32F103器件。
  • 超大容量器件[XL-density devices]: 内部FLASH容量在768-1024K Byte的STM32F101、STM32F102、STM32F103器件。
  • 互联型器件Connectivity line devices]: 特指带双CAN和USB OTG功能的STM32F105XX、STM32F107XX系列的器件。

整体上讲,这5类器件软硬件兼容性极高,尤其硬件管脚安排上。相同管脚数、不同容量的器件的管脚安排是完全一致的。
当然这5类器件也存在着一些细微的差异。

关于那些差异,这里仅就平常朋友们常遇到或栽跟头的地方,跟大家作三点分享交流。

1、这几个类型的器件所支持的中断个数及矢量安排有差别。

在工程项目里,所选择的启动文件就不一样。开发时参照器件类型选择 startup_stm32f10x_ld.s /startup_stm32f10x_md.s /startup_stm32f10x_hd.s/startup_stm32f10x_xl.s/startup_stm32f10x_cl.s 的其中之一。

这里出现最多的问题现象就是,在某个器件里跑得好好的程序,尤其跟中断有关的代码,移植到另外一个器件时发现不听使唤而异常。

2、这几个类型的器件内部flash的页大小[page size]有所不一样。

在涉及flash编程时要特别注意这点。其中小容量器件、中等容量器件的page size 为1K,而大容量器件、超大容量器件、互联型器件的page size 为2K。

这里容易出现的问题就是针对某个器件做的IAP,换到别的器件时结果就异常了。

3、互联型器件跟其它同时具有CAN和 USB外设的器件在使用上有差异 。

互联型器件的CAN和 USB外设可以同时开启使用,而其它同时具有CAN和 USB外设的器件不可以同时使用CAN和 USB外设,因为
在这些器件里 ,CAN和 USB是共享一个缓冲区。
相比前面两点,这个问题相对咨询得少些。不过如果不明了这点,假设哪位工程师因为产品功能调整或成本考虑,从互联型器件换为某大容量器件时,恭喜,估计又要折腾一把。顺便提下,互联型器件的时钟树跟其它器件也略有不同,移植时也稍微留意下。

几小点抛砖引玉似的跟大家分享下,任何一个地方若是你忽略了,都可能被折腾得够呛。

[v_notice]扫一扫:关注微信公众号:[/v_notice]

您可能还喜欢...

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注