STM32/GD32芯片信息

简介:

因为需要自动适配芯片进行系统配置,所以我们有必要通过读取一些系统寄存器来获取必要信息。
我们的代码需要兼容STM32F1/GD32F1/STM32F0/STM32F4

代码如下:

复制代码
#ifdef STM32F0XX
        void* p = (void*)0x1FFFF7AC;
#else
        void* p = (void*)0x1FFFF7E8;
#endif
        memcpy(ID, p, ArrayLength(ID));

    CPUID = SCB->CPUID;
    uint MCUID = DBGMCU->IDCODE; // MCU编码。低字设备版本,高字子版本
        RevID = MCUID >> 16;
        DevID = MCUID & 0x0FFF;

        _Index = 0;
#ifdef STM32F0XX
    FlashSize = *(__IO ushort *)(0x1FFFF7CC);  // 容量
#else
    FlashSize = *(__IO ushort *)(0x1FFFF7E0);  // 容量
#endif
复制代码

各常见芯片信息如下:
STM32F030C8T6

复制代码
SmartOS STM32F030C8 48MHz Flash:64k RAM:8k
DevID:0x0440 RevID:0x2000 
CPUID:0x410CC200 ARM ARMv6-M Cortex-M0 R0p0
ChipID:55-00-3E-00-04-57-32-4D-39-35-34-20
Heap :(0x200009a0, 0x200011a0) = 0x800
Stack:(0x200011a0, 0x20002000) = 0xe60
复制代码

GD32F130C8T6

复制代码
SmartOS GD32F130C8 48MHz Flash:64k RAM:8k
DevID:0x0410 RevID:0x1303 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:26-49-31-39-31-33-30-32-32-32-33-32 &I1913022232
Heap :(0x200009a0, 0x200011a0) = 0x800
Stack:(0x200011a0, 0x20002000) = 0xe60
复制代码

STM32F051C8T6

复制代码
SmartOS STM32F030C8 48MHz Flash:64k RAM:8k
DevID:0x0440 RevID:0x2000 
CPUID:0x410CC200 ARM ARMv6-M Cortex-M0 R0p0
ChipID:22-00-21-00-11-57-36-41-36-33-32-20
Heap :(0x200009a0, 0x200011a0) = 0x800
Stack:(0x200011a0, 0x20002000) = 0xe60
复制代码

GD32F150C8T6

复制代码
SmartOS GD32F150C8 72MHz Flash:64k RAM:8k
DevID:0x0410 RevID:0x1303 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:8F-14-31-39-31-33-30-32-32-32-33-32    8F141913022232
Heap :(0x20000678, 0x20000e78) = 0x800 (2k)
Stack:(0x20000e78, 0x20002000) = 0x1188 (4k)
复制代码

STM32F103VET6

复制代码
SmartOS STM32F103VE 72MHz Flash:512k RAM:64k
DevID:0x0414 RevID:0x1001 
CPUID:0x411FC231 ARM ARMv7-M Cortex-M3 R1p1
ChipID:38-FF-D4-FB-31-4E-36-30-36-66-01-43
Heap :(0x20000a30, 0x20004a30) = 0x4000
Stack:(0x20004a30, 0x20010000) = 0xb5d0
复制代码

GD32F103VET6

复制代码
SmartOS GD32F103VE 120MHz Flash:512k RAM:64k
DevID:0x0414 RevID:0x1309 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:46-86-31-36-38-37-30-31-01-02-03-04 F�168701
Heap :(0x20000a30, 0x20004a30) = 0x4000
Stack:(0x20004a30, 0x20010000) = 0xb5d0
复制代码

GD32F103VKT6

复制代码
SmartOS GD32F103VK 120MHz Flash:3072k RAM:96k
DevID:0x0430 RevID:0x1309 
CPUID:0x412FC231 ARM ARMv7-M Cortex-M3 R1p2
ChipID:2A-58-36-35-34-31-31-33-32-30-32-34 *X6541132024
Heap :(0x20000a30, 0x20004a30) = 0x4000
Stack:(0x20004a30, 0x20018000) = 0x135d0
复制代码

未解决问题:
1,有人说F0的ID只有32位,这个没有找到确切资料
2,GD芯片F130/F150没有读取得到DevID和RevID,而同为F0固件库的F030可以
3,STM32F103和GD32F103还有GD32F130/F150都可以通过
0x1FFFF7E0读取得到内置闪存大小,而STM3F030不行,是不是因为这个是M3地址,而M0地址不同?如果130/150使用F0库缺使用M3地址,使用起来就麻烦了。
4,GD32F130/GD32F150上中断向量表映射到RAM的0x20000000失败,调用SYSCFG_MemoryRemapConfig配置SYSCFG->CFGR1为SYSCFG_MemoryRemap_SRAM后再读取发现没有生效,系统仍然使用Flash上的中断向量表。

我不相信神话,我只相信汗水!我不相信命运,我只相信双手!
分类: 物联网

本文转自大石头博客园博客,原文链接:http://www.cnblogs.com/nnhy/p/chip_id.html,如需转载请自行联系原作者
目录
相关文章
|
6月前
|
C语言 芯片 内存技术
STM32F103标准外设库——寄存器 (二)
STM32F103标准外设库——寄存器 (二)
212 1
STM32F103标准外设库——寄存器 (二)
|
6月前
|
传感器 芯片 内存技术
STM32F103标准外设库——认识STM32(一)
STM32F103标准外设库——认识STM32(一)
185 0
STM32F103标准外设库——认识STM32(一)
|
6月前
|
监控 前端开发
STM32F103标准外设库——RCC时钟(六)
STM32F103标准外设库——RCC时钟(六)
331 0
STM32F103标准外设库——RCC时钟(六)
|
传感器
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(下)
STM32F407软件模拟I2C实现MPU6050通讯(CUBEIDE)(下)
526 0
|
6月前
|
芯片
MCU最小系统电路设计(以STM32F103C8T6为例)-1
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-1
|
6月前
|
内存技术 存储 Android开发
MCU最小系统电路设计(以STM32F103C8T6为例)-3
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-3
|
6月前
|
传感器 芯片
PCF8574芯片介绍及驱动方法
PCF8574芯片介绍及驱动方法
350 0
|
6月前
|
芯片 算法
MCU最小系统电路设计(以STM32F103C8T6为例)-2
MCU最小系统电路设计(以STM32F103C8T6为例)
MCU最小系统电路设计(以STM32F103C8T6为例)-2
|
6月前
|
传感器 物联网 开发工具
STM32:微控制器技术探索与实践
STM32:微控制器技术探索与实践
112 5
下一篇
无影云桌面