[应用相关]

AN0016—Recognize AT32 MCU内核版本、MCU厂商及型号的识别。

[复制链接]
3371|5
手机看帖
扫描二维码
随时随地手机跟帖
084425|  楼主 | 2020-7-15 21:10 | 显示全部楼层 |阅读模式
本帖最后由 muyichuan2012 于 2022-1-8 14:05 编辑

Recognize AT32 MCU

前言

本应用笔记介绍了在AT32微控制器上如何实现当前使用内核版本、MCU厂商及型号的识别。


支持型号

AT32F403xx

AT32F413xx

AT32F415xx

AT32F403Axx

AT32F407xx


目录
功能实现 ................................... 5
识别内核版本 ............................ 5
识别 MCU 厂商 .......................... 5
功能演示 ................................... 9
版本历史 ...................................10

功能实现
识别内核版
本所有的MCU内部都包含一颗内核(CPU),数据处理等操作都由它来完成。各MCU厂商在设计MCU的时候会根据使用场景等不同来选择不同的内核版本满足需求。该部分就是提供一种方法自动识别MCU的内核版本。
通常本应用设计到的MCU使用的内核情况如表一所示:
表1 MCU 使用的内核情况


1.JPG

内核的系统控制块(SCB)中存在一个名为CPU ID基本寄存器的寄存器,它是只读的,其中包括处理器类型和版本号,即为表1所示的CPU ID(内核版本号)。该寄存器的地址为0XE000ED00(只支持特权访问),在程序中,可以利用SCB->CPUID访问该寄存器,也可通过绝对地址访问,如*(uint32_t *)0xE000ED00。本指南的配套程序就是通过这种方式获取到内核版本号并判断出MCU所使用的内核版本。
注:如需增加其他内核版本的识别,自行添加即可。
识别MCU厂商
识别AT32 MCU
AT32 MCU内部包含PID和UID编码。UID总共为96bit,基地址为0x1FFFF7E8。这里只需要最高地址的一个Byte的数据,则地址为0x1FFFF7F3,该地址中的内容可以识别AT32系列MCU为403系列还是413系列。得到UID后还需要获取PID以得到MCU的其他信息(例如封装、内部FLASH大小,SRAM大小等)从而达到区分的情况,PID的基地址为0xE0042000。本指南配套的程序中将获取到的信息组装成一个64bit的数据,它可以区分出是AT32系列下的哪一种型号,但是程序中只是判断是否为AT32的MCU系列,并没有做其它的细分判断。
AT32系列MCU的PID/UID以及型号的对照表详见附录文档中的表2

....................................................................................
....................................................................................
配套程序通过对表2进行遍历查找,判断当前MCU是否为AT32系列。
注:表格2中所列为AT32系列MCU的F403、F413、F415、F403A和F407,若需支持更多型号的MCU,添加到程序内的数组表中即可

识别SXX32 MCU
配套程序支持对SXX32系列MCU的简易识别,通过读取SXX32 MCU的PID便可识别是否为SXX32系列的MCU。配套程序支持对SXX32系列MCU的SXX32F1XXX和SXX32F4XXX系列的识别。
SXX32 MCU识别码如表三所示:
表3 SXX 32 MCU 型号表


5.JPG

配套程序只支持对SXX32的简易识别,并且SXX32编码方式与AT32不同,但是其PID的存放地址是与AT32是相同的。程序中对表3进行遍历查找,如果找到则返回。

注:本应用指南主要为识别AT32系列MCU,若需对更多SXX32或其他MCU厂商的MCU识别支持,自行添加即可。


功能演示

AT32 MCU被识别实验:

步骤:①下载程序到AT32 MCU中并运行;②查看打印值,如图1;
图1 识别 AT32 F403A MCU 实验

3.JPG

从打印结果可知目前程序运行的MCU为AT32系列的MCU且内核版本为Cortex-M4。

AT32 MCU被识别实验:

步骤:①下载程序到AT32 MCU中并运行;②查看打印值,如图2;

图 2 识别 AT 32 F407 MCU 实验
4.JPG
从打印结果可知目前程序运行的MCU为AT32系列的MCU且内核版本为Cortex-M4。

recognize_at32_mcu_V2.0.0.zip (347.06 KB)





2.JPG

使用特权

评论回复
084425|  楼主 | 2020-7-15 21:11 | 显示全部楼层
这个程序主要可以用于混用多种型号MCU的客户,可以根据ID来对程序进行分别处理

使用特权

评论回复
zeshoufx| | 2020-7-17 09:32 | 显示全部楼层
谢谢分享,,,这个很有用,,

使用特权

评论回复
james03| | 2021-9-3 11:21 | 显示全部楼层
确实有用,能详细说明一下mcu id各个字节的详细定义么

使用特权

评论回复
好**,仔细阅读一下。

使用特权

评论回复
chenqianqian| | 2021-9-10 18:13 | 显示全部楼层
实用的**,收藏了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

217

帖子

0

粉丝