[STM32F1] 能否在STM32程序内部判断芯片型号?

[复制链接]
2048|18
 楼主| zhanghqi 发表于 2021-6-3 21:44 | 显示全部楼层 |阅读模式
主要是想根据型号判断Flash和RAM的地址范围。
wuhany 发表于 2021-6-3 21:47 | 显示全部楼层
同问,Luminary系列的Cortex-M3,就可以通过读内部寄存器知道Flash的大小。
 楼主| zhanghqi 发表于 2021-6-3 21:49 | 显示全部楼层
找到了:
闪存容量寄存器
地址:0x1FFF F7E0
F_SIZE:闪存存储器容量  位15:0
以K字节为单位指示产品中闪存存储器容量。
例:0x0080 = 128 K字节
 楼主| zhanghqi 发表于 2021-6-3 21:52 | 显示全部楼层
但是还没找到RAM地址范围的相关信息。
stly 发表于 2021-6-3 21:54 | 显示全部楼层
不管芯片的封装是什么,Flash的容量与RAM的容量都是对应的,知道了Flash的容量就知道了RAM容量。
heweibig 发表于 2021-6-3 21:58 | 显示全部楼层
RAM地址范围的相关信息:不管RAM容量多大,RAM的起始地址都是固定的,有了RAM容量的信息,也就知道RAM地址范围了。
 楼主| zhanghqi 发表于 2021-6-3 22:01 | 显示全部楼层
不对吧,例如
STM32F101RC——Flash为256K,RAM为32K
STM32F103RC——Flash为256K,RAM为48K

好像103的RAM都比101相应型号的要大
 楼主| zhanghqi 发表于 2021-6-3 22:05 | 显示全部楼层
不过根据
DBGMCU_IDCODE
地址:0xE004 2000

位31:16
该域标识产品的版本
小容量产品  中容量产品  大容量产品
0x1000 = 版本A  0x0000 = 版本A  0x1000 = 版本A
  0x2000 = 版本B  0x1001 = 版本Z
    0x2001 = 版本Z
    0x2003 = 版本Y
互联系列产品:
─ 0x1000 = 版本A
─ 0x1001 = 版本Z
位15:12  保留
DEV_ID[11:0]:设备识别  位11:0
这个部分指示了设备编码。对于STM32F10x微控制器:
小容量产品,设备编码为0x412;
中容量产品,设备编码为0x410;
大容量产品,设备编码为0x414;
互联系列产品,设备编码为0x418。

应该也可以推导出RAM的大小了,呵呵
wuhany 发表于 2021-6-3 22:06 | 显示全部楼层
可这是2个不同系列的产品呀,你总不会也要识别产品系列吧?  这样做有什么特别的必要吗?
 楼主| zhanghqi 发表于 2021-6-3 22:09 | 显示全部楼层
有必要,因为我们的多个产品将逐步更换成STM32,而且用的最多的只是ADC和串口……程序里能识别自身,程序版本管理方面可以省很多事,呵呵
dingy 发表于 2021-6-3 22:15 | 显示全部楼层
不过,是否可以通过一个I/O脚,在PCB上接上拉或下拉来识别是STM32F101还是STM32F103系列,因为使用STM32F103主要是使用CAN或USB,PCB板肯定与STM32F101的PCB板不同。
renyaq 发表于 2021-6-3 22:17 | 显示全部楼层
判断101/103简单实用的方法,可通过直接访问USB/CAN寄存器存在来判别,但要注意异常处理。
chenjunt 发表于 2021-6-3 22:19 | 显示全部楼层
编译的时候加些数据进去就好了 不同的片子烧不同的代码我想这个应该不过分把
jiajs 发表于 2021-6-3 22:22 | 显示全部楼层
反正你都得重新编译的 否则内存分配岂不是出问题
wyjie 发表于 2021-6-3 22:25 | 显示全部楼层
正常俺们都加一个宏 代表自己的代码版本 从中可以区分出是芯片型号 用多大容量之类的
jlyuan 发表于 2021-6-3 22:25 | 显示全部楼层
有没有现成的库用。
stly 发表于 2021-6-3 22:27 | 显示全部楼层
如果自己在程序里面区分,肯定有很多种方法
xxrs 发表于 2021-6-3 22:32 | 显示全部楼层
不知道96bit的芯片ID是否包含芯片类型信息?可以多读几片看一下
 楼主| zhanghqi 发表于 2021-6-3 22:34 | 显示全部楼层

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先
您需要登录后才可以回帖 登录 | 注册

本版积分规则

852

主题

11757

帖子

5

粉丝
快速回复 在线客服 返回列表 返回顶部