打印
[STM32F1]

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

[复制链接]
935|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地址范围的相关信息。

使用特权

评论回复
5
stly| | 2021-6-3 21:54 | 只看该作者
不管芯片的封装是什么,Flash的容量与RAM的容量都是对应的,知道了Flash的容量就知道了RAM容量。

使用特权

评论回复
6
heweibig| | 2021-6-3 21:58 | 只看该作者
RAM地址范围的相关信息:不管RAM容量多大,RAM的起始地址都是固定的,有了RAM容量的信息,也就知道RAM地址范围了。

使用特权

评论回复
7
zhanghqi|  楼主 | 2021-6-3 22:01 | 只看该作者
不对吧,例如
STM32F101RC——Flash为256K,RAM为32K
STM32F103RC——Flash为256K,RAM为48K

好像103的RAM都比101相应型号的要大

使用特权

评论回复
8
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的大小了,呵呵

使用特权

评论回复
9
wuhany| | 2021-6-3 22:06 | 只看该作者
可这是2个不同系列的产品呀,你总不会也要识别产品系列吧?  这样做有什么特别的必要吗?

使用特权

评论回复
10
zhanghqi|  楼主 | 2021-6-3 22:09 | 只看该作者
有必要,因为我们的多个产品将逐步更换成STM32,而且用的最多的只是ADC和串口……程序里能识别自身,程序版本管理方面可以省很多事,呵呵

使用特权

评论回复
11
dingy| | 2021-6-3 22:15 | 只看该作者
不过,是否可以通过一个I/O脚,在PCB上接上拉或下拉来识别是STM32F101还是STM32F103系列,因为使用STM32F103主要是使用CAN或USB,PCB板肯定与STM32F101的PCB板不同。

使用特权

评论回复
12
renyaq| | 2021-6-3 22:17 | 只看该作者
判断101/103简单实用的方法,可通过直接访问USB/CAN寄存器存在来判别,但要注意异常处理。

使用特权

评论回复
13
chenjunt| | 2021-6-3 22:19 | 只看该作者
编译的时候加些数据进去就好了 不同的片子烧不同的代码我想这个应该不过分把

使用特权

评论回复
14
jiajs| | 2021-6-3 22:22 | 只看该作者
反正你都得重新编译的 否则内存分配岂不是出问题

使用特权

评论回复
15
wyjie| | 2021-6-3 22:25 | 只看该作者
正常俺们都加一个宏 代表自己的代码版本 从中可以区分出是芯片型号 用多大容量之类的

使用特权

评论回复
16
jlyuan| | 2021-6-3 22:25 | 只看该作者
有没有现成的库用。

使用特权

评论回复
17
stly| | 2021-6-3 22:27 | 只看该作者
如果自己在程序里面区分,肯定有很多种方法

使用特权

评论回复
18
xxrs| | 2021-6-3 22:32 | 只看该作者
不知道96bit的芯片ID是否包含芯片类型信息?可以多读几片看一下

使用特权

评论回复
19
zhanghqi|  楼主 | 2021-6-3 22:34 | 只看该作者

其实还是不大明白,我再琢磨琢磨吧,多谢了哈先

使用特权

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

本版积分规则

852

主题

11757

帖子

5

粉丝