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

相关文章

每天认识几个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

PHP原理之内存管理中难懂的几个点

PHP的内存管理, 分为俩大部分, 第一部分是PHP自身的内存管理, 这部分主要的内容就是引用计数, 写时复制, 等等面向应用的层面的管理. 而第二部分就是今天我要介绍的, zend_alloc中描写的关于PHP自身的内存管理, 包括它是如何管理可用内存, 如何分配内存等. 另外, 为什么要写这个呢, 因为之前并没有任何资料来介绍PHP内存管理中使用的策略, 数据结构, 或者算法. 而在我们

4-4.Andorid Camera 之简化编码模板(获取摄像头 ID、选择最优预览尺寸)

一、Camera 简化思路 在 Camera 的开发中,其实我们通常只关注打开相机、图像预览和关闭相机,其他的步骤我们不应该花费太多的精力 为此,应该提供一个工具类,它有处理相机的一些基本工具方法,包括获取摄像头 ID、选择最优预览尺寸以及打印相机参数信息 二、Camera 工具类 CameraIdResult.java public class CameraIdResult {

集群环境下为雪花算法生成全局唯一机器ID策略

雪花算法是生成数据id非常好的一种方式,机器id是雪花算法不可分割的一部分。但是对于集群应用,让不同的机器自动产生不同的机器id传统做法就是针对每一个机器进行单独配置,但这样做不利于集群水平扩展,且操作过程非常复杂,所以每一个机器在集群环境下是一个头疼的问题。现在借助spring+redis,给出一种策略,支持随意水平扩展,肥肠好用。 大致策略分为4步: 1.对机器ip进行hash,对某一个(大于

Java虚拟机垃圾回收的几个关键问题

20151008 GC的几个关键问题,触发条件,触发的机制 主线是数据的移动,从什么位置到什么位置,移动的条件是什么? 1 垃圾收集在什么时候触发? GC都是在带满了的时候触发的,每次触发都是把不会用的不可达的对象空间回收了,留下还在用的对象。 1) MinorGC的触发是伊甸园空间满的时候 2) FullGC的触发是在老年代满的时候 2 垃圾回收的时候做哪些工作? 1) 一个新的对象new出

在实现回显功能模块的时候,把ID设置成全局变量了

在hsapprove.jsp中: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%><script type="text/javascript">function edittodayhs(hsid){//alert(hsid);//

PL/SQL工具创建Oracle数据库表,实现id字段的自动递增

通过PL/SQL工具,创建Oracle数据库表,如何实现字段ID自动递增; Oracle的自增需要依靠序列和触发器共同实现 比如:先创建一个表 create table test (id int primary key, name varchar2(10)); 创建一个序列 create sequence test_seq increment by 1 start with 1  min