stm32f1xx中的几个ID

2024-08-25 05:36
文章标签 几个 id stm32f1xx

本文主要是介绍stm32f1xx中的几个ID,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

    • 一、ID的作用
    • 二、ID的说明
      • 产品唯一身份标识
      • MCU ID code
      • JTAG ID
      • JEDEC-106 ID
    • 三、自定义ID

一、ID的作用

在物联网系统中产品的ID不可或缺,产品组网后就需要一个身份去让网里其它的设备去识别自己;
ID表示的含义可能多种多样,如一个生产批次中的产品编号、mac地址、设备条形码等,可能是设备通信中用于表示自己身份的编号,也可能是产品外壳的一个硬件层面的编号;
ID编码的规则也多种多样,只要在一个系统里彼此都认可的一个编号规则即可,最好能考虑安全性;
stm32f1xx中有几个自身的ID可以用于一些场景,下面做下总结;

二、ID的说明

产品唯一身份标识

【1】位于基地址 0x1FFFF7E8,只读不可修改,每个芯片是唯一的;
【2】一共96bit,一共占12个字节,分四组
0x1FFFF7E8~0x1FFFF7E9 , 0 ~ 15bit为一组, uint16_t id_0 = (uint16_t *)(0x1FFFF7E8);
0x1FFFF7EA~0x1FFFF7EB,16 ~ 31bit为一组, uint16_t id_1 = (uint16_t *)( 0x1FFFF7EA);
0x1FFFF7EC~0x1FFFF7EF,32 ~ 63bit为一组, uint32_t id_2 = (uint32_t *)(0x1FFFF7EC);
0x1FFFF7F0~0x1FFFF7F3,64 ~ 95bit为一组, uint32_t id_3 = (uint32_t *)(0x1FFFF7F0);

实际使用中可以将四组进行一些操作,如分别取hash,结果再取hash等,获得方便存储的、不易重复的32位ID作为一种编码;

MCU ID code

【1】虽然称作MCU ID 但不是每个芯片都有一个不一样的这个ID,确切表示是一种 批次、容量的ID编号;
【2】手册中定义为硅片版本和容量编码;
【3】基地址为0xE0042000, 占用四个字节;
uint32_t mcu_id = (uint32_t *)(0xE0042000);
【4】含义
在这里插入图片描述

可以结合寄存器闪存容量寄存器0x1FFFF7E0和小、中、大容量对应存储大小定义可以校验确定mcu id 信息;
【5】mcu id虽然对每个芯片不是唯一的,但是可以判断是不是一类芯片,比如项目中有pin to pin芯片替换但是容量不一样需要在软件上做些适配判断时,可以考虑使用mcu id 的信息;

JTAG ID

【1】ARM Cortex-M3的TAP有一个JTAG ID编码。这个ID编码是ARM默认的,且没有被修改过,只能通过JTAG调试口访问。此编码是0x3BA00477(对应于Cortex-M3 r1p1)
【2】实际软件编程中代码无法使用;

JEDEC-106 ID

【1】ARM 的 Cortex-M3 有 一 个 JEDEC-106 ID 编 码 。 它 位 于 映 射 到 内 部 PPB 总 线 地 址 为0xE00FF000_0xE00FFFFF的4KB ROM表中
【2】获取方式

uint16_t Get_JEDEC_ID(void)
{if( *( uint8_t *)( 0xE00FFFE8 ) & 0x08 ){return  (( *( uint8_t *)( 0xE00FFFD0 ) & 0x0F ) << 8 ) |   ( ( *( uint8_t *)( 0xE00FFFE4 ) & 0xFF ) >> 3  ) |     ( ( *( uint8_t *)( 0xE00FFFE8 ) & 0x07 ) << 5 ) + 1 ;}return  0;
}

【3】此id也不是每个芯片唯一的,类似mcu id 能区分一类芯片,实际根据芯片的选型实测验证差异;

三、自定义ID

实际中可以自定义编码将ID存储到EEPROM或者芯片特定的flash地址,在产线生产时进行写入;
参考如下:
在这里插入图片描述

这篇关于stm32f1xx中的几个ID的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1104685

相关文章

Springboot3+将ID转为JSON字符串的详细配置方案

《Springboot3+将ID转为JSON字符串的详细配置方案》:本文主要介绍纯后端实现Long/BigIntegerID转为JSON字符串的详细配置方案,s基于SpringBoot3+和Spr... 目录1. 添加依赖2. 全局 Jackson 配置3. 精准控制(可选)4. OpenAPI (Spri

MySQL查看表的最后一个ID的常见方法

《MySQL查看表的最后一个ID的常见方法》在使用MySQL数据库时,我们经常会遇到需要查看表中最后一个id值的场景,无论是为了调试、数据分析还是其他用途,了解如何快速获取最后一个id都是非常实用的技... 目录背景介绍方法一:使用MAX()函数示例代码解释适用场景方法二:按id降序排序并取第一条示例代码解

使用雪花算法产生id导致前端精度缺失问题解决方案

《使用雪花算法产生id导致前端精度缺失问题解决方案》雪花算法由Twitter提出,设计目的是生成唯一的、递增的ID,下面:本文主要介绍使用雪花算法产生id导致前端精度缺失问题的解决方案,文中通过代... 目录一、问题根源二、解决方案1. 全局配置Jackson序列化规则2. 实体类必须使用Long封装类3.

SpringBoot整合mybatisPlus实现批量插入并获取ID详解

《SpringBoot整合mybatisPlus实现批量插入并获取ID详解》这篇文章主要为大家详细介绍了SpringBoot如何整合mybatisPlus实现批量插入并获取ID,文中的示例代码讲解详细... 目录【1】saveBATch(一万条数据总耗时:2478ms)【2】集合方式foreach(一万条数

mysql数据库重置表主键id的实现

《mysql数据库重置表主键id的实现》在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,本文主要介绍了mysql数据库重置表主键id的实现,具有一定的参考价值,感兴趣的可以了... 目录关键语法演示案例在我们的开发过程中,难免在做测试的时候会生成一些杂乱无章的SQL主键数据,当我们

mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespace id不一致处理

《mysql8.0无备份通过idb文件恢复数据的方法、idb文件修复和tablespaceid不一致处理》文章描述了公司服务器断电后数据库故障的过程,作者通过查看错误日志、重新初始化数据目录、恢复备... 周末突然接到一位一年多没联系的妹妹打来电话,“刘哥,快来救救我”,我脑海瞬间冒出妙瓦底,电信火苲马扁.

每天认识几个maven依赖(ActiveMQ+activemq-jaxb+activesoap+activespace+adarwin)

八、ActiveMQ 1、是什么? ActiveMQ 是一个开源的消息中间件(Message Broker),由 Apache 软件基金会开发和维护。它实现了 Java 消息服务(Java Message Service, JMS)规范,并支持多种消息传递协议,包括 AMQP、MQTT 和 OpenWire 等。 2、有什么用? 可靠性:ActiveMQ 提供了消息持久性和事务支持,确保消

uva 10061 How many zero's and how many digits ?(不同进制阶乘末尾几个0)+poj 1401

题意是求在base进制下的 n!的结果有几位数,末尾有几个0。 想起刚开始的时候做的一道10进制下的n阶乘末尾有几个零,以及之前有做过的一道n阶乘的位数。 当时都是在10进制下的。 10进制下的做法是: 1. n阶位数:直接 lg(n!)就是得数的位数。 2. n阶末尾0的个数:由于2 * 5 将会在得数中以0的形式存在,所以计算2或者计算5,由于因子中出现5必然出现2,所以直接一

使用JS/Jquery获得父窗口的几个方法(笔记)

<pre name="code" class="javascript">取父窗口的元素方法:$(selector, window.parent.document);那么你取父窗口的父窗口的元素就可以用:$(selector, window.parent.parent.document);如题: $(selector, window.top.document);//获得顶级窗口里面的元素 $(

Verybot的几个视频

1、Verybot的运动控制                 http://v.youku.com/v_show/id_XNjYxNjg4MTM2.html           2、Verybot比较初步的网络视频监控           http://v.youku.com/v_show/id_XNjYxNjkyMjg0.html           3、V