stm32f1xx中的几个ID

news2024/9/24 15:28:17

目录

    • 一、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地址,在产线生产时进行写入;
参考如下:
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2071030.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一种多策略改进飞蛾扑火智能优化算法IMFO 种群初始化精英反向策略+柯西变异策略

一种多策略改进飞蛾扑火智能优化算法IMFO 种群初始化精英反向策略柯西变异策略 文章目录 前言一种多策略改进飞蛾扑火智能优化算法IMFO 种群初始化精英反向策略柯西变异策略 一、MFO飞蛾扑火算法基本原理二、改进飞蛾扑火算法IMFO改进1&#xff1a;种群初始化精英反向策略改进2…

车辆分类检测数据集数据集

车辆分类检测数据集 数据集中的所有车辆分为六类:客车、微型客车、小型货车、轿车、SUV和卡车。每种车型的车辆数量分别为558辆、883辆、476辆、5922辆、1392辆、822辆。 xml标签 数据集描述&#xff1a; 该数据集包含多种类型的车辆图像&#xff0c;旨在用于训练和评估车辆分…

【C++】string典型oj题

目录 前言字符串相加字符串相乘字符串转换整数 前言 上一节我们已经仔细讲解了关于string的各种重要接口的使用&#xff1a;【C】string的使用。下面我们来使用这些接口写几道OJ题。 字符串相加 415.字符串相加-力扣   这道题目的意思也很简单&#xff0c;就是想让我们模拟…

什么是d3dx9_42.dll?如何将丢失的d3dx9_42.dll进行修复呢?

d3dx9_42.dll文件丢失什么情况&#xff1f;如何将丢失的d3dx9_42.dll进行修复呢&#xff1f;d3dx9_42.dll又是什么文件&#xff1f;d3dx9_42.dll 文件是一个由 Microsoft Corporation 开发的部分&#xff0c;属于 Microsoft DirectX for Windows 的一组庞大库集合中的一个。Dir…

ShellSweepPlus 介绍:开源 Web Shell 检测

ShellSweepPlus 概述 ShellSweepPlus是一款开源工具,旨在帮助安全团队检测潜在的 Web Shell。它是 ShellSweep 的增强版 Webshell 的威胁 Web shell 对组织构成重大威胁,因为它们为攻击者提供了对受感染 Web 服务器的未经授权的访问和控制。攻击者可以利用这些 shell 来:…

AI跟踪报道第53期-新加坡内哥谈技术-本周AI新闻: 谷歌老施讲,微软Phi 3.5和Search GPT

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

JavaScript初级——DOM和事件简介

一、什么是DOM&#xff1f; 二、模型 三、对象的 HTML DOM 树 四、节点 浏览器已经为我们提供了文档节点对象&#xff0c;这个对象是window属性&#xff0c;可以再网页中直接使用&#xff0c;文档节点代表的是整个网页。 五、事件简介 事件&#xff0c;就是用户和浏览器之间的交…

致远oa员工离职之后无法获取登录名

故事 前几天在做致远oa的携程平台的人员同步&#xff0c;碰见一个问题&#xff0c;致远oa人员离职之后&#xff0c;无法获取到人员的登录名&#xff0c;导致无法再携程平台做离职处理&#xff0c;因为客户要求的是用登录名作为携程编号 技术支持 感谢大佬对文章的技术支持 …

【git】git进阶-blame/stash单个文件/rebase和merge/cherry-pick命令/reflog和log

文章目录 git blame查看单个文件修改历史git stash单个文件git rebase命令git rebase和git merge区别git cherry-pick命令git reflog和git log区别 git blame查看单个文件修改历史 git blame&#xff1a;查看文件中每行最后的修改作者 git blame your_filegit log和git show结合…

探索Facebook的AI算法:如何优化用户体验

在数字化时代&#xff0c;社交媒体平台不断引领着技术创新的潮流。作为全球领先的社交平台之一&#xff0c;Facebook在人工智能&#xff08;AI&#xff09;算法的应用上取得了显著进展&#xff0c;极大地提升了用户的社交体验。本文将探讨Facebook如何通过先进的AI算法优化用户…

如何实现一棵红黑树

目录 1.什么是红黑树 2.红黑树的实现 2.1红黑树的插入 新插入的结点应该是什么颜色的呢&#xff1f; 插入情况的分析 ​编辑插入代码如下所示 2.2红黑树的查找 2.2检测红黑树 1.什么是红黑树&#xff1f; 红黑树是一棵接近平衡的二叉搜索树。由于AVL树在频繁大量改变数据…

MySQL字符串比较忽略尾随空格

问题 今天遇到一个线上问题&#xff0c;排查过程中发现&#xff0c;MySQL 查询条件使用字符串判断等时会自动忽略字符串尾部的空格&#xff0c;示例如下&#xff1a; MySQL 表格结构&#xff1a; CREATE TABLE users (id int(11) NOT NULL,name varchar(50) DEFAULT NULL,ag…

深度学习一(Datawhale X 李宏毅苹果书 AI夏令营)

一&#xff0c;机器学习基础 机器学习&#xff08;Machine Learning, ML&#xff09;是让机器具备学习能力的过程&#xff0c;其核心在于使机器能够自动寻找并应用复杂的函数&#xff0c;以解决各种任务如语音识别、图像识别和策略决策&#xff08;如AlphaGo&#xff09;。这些…

YoloV8改进策略:卷积篇|ACConv2d模块在YoloV8中的创新应用与显著性能提升|简单易用|即插即用

摘要 在本文中,我们创新性地将ACConv2d模块引入到YoloV8目标检测模型中,通过对YoloV8中原有的Conv卷积层进行替换,实现了模型性能的大幅提升。ACConv2d模块基于不对称卷积块(ACB)的设计思想,利用1D非对称卷积(13和31卷积)来增强标准方形卷积核(如33卷积)的表征能力。…

spring揭秘11-aop05-aop应用经典场景及目标对象内部方法调用无法被拦截

文章目录 【README】【1】基于aop实现全局异常处理【2】基于aop实现权限检查【3】基于aop实现缓存【4】aop无法拦截目标对象内部方法调用的问题【4.1】问题概述【4.2】解决方法 【README】 本文总结自《spring揭秘》&#xff0c;作者王福强&#xff0c;非常棒的一本书&#xf…

TFTP error: ‘Permission denied‘ (0)

项目场景&#xff1a; 环境&#xff1a;ubuntu 5.4.150 开发板&#xff1a;s3c2440 在u-boot中&#xff0c;通过tftp传输uImage文件失败。 问题描述 SMDK2410 # tftp 0x30008000 uImage dm9000 i/o: 0x20000000, id: 0x90000a46 DM9000: running in 16 bit mode MAC: 00:0…

【变化检测】基于UNet建筑物变化检测

主要内容如下&#xff1a; 1、LEVIR-CD数据集介绍及下载 2、运行环境安装 3、基于likyoo变化检测代码模型训练与预测 4、Onnx运行及可视化 运行环境&#xff1a;Python3.8&#xff0c;torch1.12.0cu113 likyoo变化检测源码&#xff1a;https://github.com/likyoo/change_dete…

数据仓库中的表设计模式:全量表、增量表与拉链表

在现代数据仓库中&#xff0c;管理和分析海量数据需要高效且灵活的数据存储策略。全量表、增量表和拉链表是三种常见的数据存储模式&#xff0c;各自针对不同的数据管理需求提供了解决方案。全量表通过保存完整的数据快照确保数据的一致性&#xff0c;增量表则通过记录数据的变…

如何在 Ubuntu 系统中安装PyCharm集成开发环境?

在上一篇文章中&#xff0c;我们探讨了Jupyter notebook&#xff0c;今天再来看看另一款常用的Python 工具&#xff0c;Pycharm。 PyCharm也是我们日常开发和学习常用的Python 集成开发环境 (IDE)&#xff0c;由 JetBrains 开发。 PyCharm 带有一整套可以帮助用户在使用Pytho…

大数据-91 Spark 集群 RDD 编程-高阶 RDD广播变量 RDD累加器 Spark程序优化

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…