STM32F7xx —— 96位唯一ID

                           STM32F7xx —— 96位唯一ID

 

// 配置单片机型号 对外只有这个宏CONFIG_SYSTEM_HARDWARE_TYPE
#define  CONFIG_SYSTEM_HARDWARE_TYPE  SOC_TYPE_STM32F7

// SOC类型
typedef enum
{
  SOC_TYPE_STM32F0,
  SOC_TYPE_STM32F1,
  SOC_TYPE_STM32F2,
  SOC_TYPE_STM32F3,
  SOC_TYPE_STM32F4,
  SOC_TYPE_STM32F7,
  SOC_TYPE_STM32L0,
  SOC_TYPE_STM32L1,
  SOC_TYPE_STM32L4,
  SOC_TYPE_STM32H7,
} soc_type_t;

#define SOC_STM32F0_ID_ADDR   0x1FFFF7AC
#define SOC_STM32F1_ID_ADDR   0x1FFFF7E8
#define SOC_STM32F2_ID_ADDR   0x1FFF7A10
#define SOC_STM32F3_ID_ADDR   0x1FFFF7AC
#define SOC_STM32F4_ID_ADDR   0x1FFF7A10
#define SOC_STM32F7_ID_ADDR   0x1FF0F420
#define SOC_STM32L0_ID_ADDR   0x1FF80050
#define SOC_STM32L1_ID_ADDR   0x1FF80050
#define SOC_STM32L4_ID_ADDR   0x1FFF7590
#define SOC_STM32H7_ID_ADDR   0x1FF0F420

typedef struct
{
  uint8_t type;
  uint32_t addr;
} soc_id_t;

static const soc_id_t soc_id_entries[] =
{
  {SOC_TYPE_STM32F0, SOC_STM32F0_ID_ADDR},
  {SOC_TYPE_STM32F1, SOC_STM32F1_ID_ADDR},
  {SOC_TYPE_STM32F2, SOC_STM32F2_ID_ADDR},
  {SOC_TYPE_STM32F3, SOC_STM32F3_ID_ADDR},
  {SOC_TYPE_STM32F4, SOC_STM32F4_ID_ADDR},
  {SOC_TYPE_STM32F7, SOC_STM32F7_ID_ADDR},
  {SOC_TYPE_STM32L0, SOC_STM32L0_ID_ADDR},
  {SOC_TYPE_STM32L1, SOC_STM32L1_ID_ADDR},
  {SOC_TYPE_STM32L4, SOC_STM32L4_ID_ADDR},
  {SOC_TYPE_STM32H7, SOC_STM32H7_ID_ADDR},
};

void SocIDGet(uint32_t *id, soc_type_t type)
{
  uint8_t i;

  for(i = 0; i < sizeof(soc_id_entries) / sizeof(soc_id_entries[0]); ++i)
  {
    if(type == soc_id_entries[i].type)
    {
      id[0] = *(uint32_t *)(soc_id_entries[i].addr + 0);
      id[1] = *(uint32_t *)(soc_id_entries[i].addr + 4);
      id[2] = *(uint32_t *)(soc_id_entries[i].addr + 8);
			
      break;
    }
  }
}

 

 

 

 

 

 

 

<think>嗯,用户想了解STM32F407VGT6和VET6的区别,这是一个关于微控制器芯片选型的问题。用户应该是在做嵌入式开发相关的项目,需要根据具体需求选择合适的芯片型号。 从用户提问的简洁程度来看,ta可能已经查阅过一些资料但仍有困惑,或者刚开始接触STM32系列芯片。这类问题通常出现在硬件设计阶段,用户需要明确芯片差异才能进行原理图设计和采购。 这两个芯片型号都属于STM32F4系列高性能微控制器,核心差异在于存储容量和外设配置。VGT6后缀表示1MB Flash和192KB RAM,而VET6是512KBFlash和192KB RAM。这个差异直接影响复杂应用程序的存储空间。另外VGT6的封装尺寸更大(LQFP100 vsLQFP100),但管脚数相同,意味着VGT6可能有更好的散热性能。 用户没有说明具体应用场景,但根据经验:VGT6适合需要大容量存储的应用如工业网关、高端物联网设备;VET6则适用于成本敏感型应用如电机控制、基础工业自动化。有趣的是,虽然两者封装尺寸不同,但引脚完全兼容,这对硬件设计者是个好消息——可以在不修改PCB的情况下更换型号。 考虑到用户可能需要的延伸信息:除了存储差异,其实这两款芯片的CPU主频、外设时钟等核心参数完全一致。用户如果只是做基础开发(比如跑马灯实验),完全可以用VET6降低成本;但如果要跑FreeRTOS+LWIP+文件系统这种组合,就必须选VGT6了。 需要提醒用户注意的坑是:VET6的型号后缀"E"代表512KBFlash,这个命名规则同样适用于STM32F1/F7等其他系列。另外采购时要留意VET6的封装代码是LQFP100,和VGT6的封装代码不同但物理尺寸一致。</think>以下是STM32F407VGT6与VET6的核心区别对比: | **特性** | **STM32F407VGT6** | **STM32F407VET6** | |----------------|-------------------------|-------------------------| | **Flash容量** | **1 MB** | **512 KB** | | **RAM容量** | **192 KB** | **192 KB** | | **封装类型** | LQFP100 (10x10mm) | LQFP100 (10x10mm) | | **引脚数量** | **100 引脚** | **100 引脚** | | **外设资源** | 相同 (ADC/DAC/TIMERS等) | 相同 (ADC/DAC/TIMERS等) | | **CPU性能** | 相同 (168MHz Cortex-M4) | 相同 (168MHz Cortex-M4) | ### 关键差异详解 1. **存储容量差异** - **VGT6**:提供**1MB Flash**,适合运行复杂算法、图形界面或多协议栈应用(如TCP/IP+USB+文件系统)[^1]。 - **VET6**:**512KB Flash**,适用于中等复杂度任务(如电机控制、基础工业控制)。 *例:若需移植大型RTOS(如FreeRTOS+LWIP),VGT6更安全。* 2. **封装兼容性** 两者均为**LQFP100封装且引脚兼容**,可直接互换: ```c // 硬件设计无需修改 #define LED_PIN GPIO_PIN_13 #define LED_PORT GPIOC // 代码在VGT6/VET6上通用 ``` 3. **成本与选型建议** - **VET6**:价格低约10-15%,适合成本敏感型项目[^2]。 - **VGT6**:推荐用于需要OTA升级、数据日志存储或复杂UI的场景。 ### 性能验证方法 通过读取芯片ID寄存器可区分型号: ```c uint32_t DBGMCU_ID = DBGMCU->IDCODE; if ((DBGMCU_ID & 0xFFF) == 0x413) { // STM32F4xx系列ID if (FLASH_SIZE_REGISTER == 0x100000) printf("当前芯片: VGT6 (1MB Flash)"); else printf("当前芯片: VET6 (512KB Flash)"); } ``` ### 选型决策树 ```mermaid graph TD A[项目需求] --> B{需要 >512KB代码空间?} B -->|是| C[选VGT6] B -->|否| D{成本敏感?} D -->|是| E[选VET6] D -->|否| C ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值