完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
` 本帖最后由 hoopzhao 于 2020-9-20 13:55 编辑 Recognize AT32 MCU 前言 本应用笔记介绍了在AT32微控制器上如何实现当前使用内核版本、MCU厂商及型号的识别。 支持型号列表: 支持型号 AT32F403xx AT32F413xx AT32F415xx AT32F403Axx AT32F407xx 目录 1 功能实现..................5 1.1 识别内核版本.........5 1.2 识别MCU厂商.......5 2 功能演示..................9 3 版本历史...............10 1 功能实现 1.1 识别内核版本 所有的MCU内部都包含一颗内核(CPU),数据处理等操作都由它来完成。各MCU厂商在设计MCU的时候会根据使用场景等不同来选择不同的内核版本满足需求。该部分就是提供一种方法自动识别MCU的内核版本。 通常本应用设计到的MCU使用的内核情况如下所示: 内核版本 CPU ID(内核版本号) Cortex-M0-r0p0 0x410CC200 Cortex-M0+-r0p0 0x410CC600 Cortex-M1-r0p1 0x410CC210 Cortex-M1-r0p1 0x410CC211 Cortex-M1-r1p0 0x411CC210 Cortex-M3-r0p0 0x410FC230 Cortex-M3-r1p0 0x410FC231 Cortex-M3-r1p1 0x411FC231 Cortex-M3-r2p0 0x412FC230 Cortex-M3-r2p1 0x412FC231 Cortex-M4-r0p0 0x410FC240 Cortex-M4-r0p1 0x410FC241 内核的系统控制块(SCB)中存在一个名为CPU ID基本寄存器的寄存器,它是只读的,其中包括处理器类型和版本号,即为表1所示的CPU ID(内核版本号)。该寄存器的地址为0XE000ED00(只支持特权访问),在程序中,可以利用SCB->CPUID访问该寄存器,也可通过绝对地址访问,如*(uint32_t *)0xE000ED00。本指南的配套程序就是通过这种方式获取到内核版本号并判断出MCU所使用的内核版本。 注:如需增加其他内核版本的识别,自行添加即可。 1.2 识别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以及型号的对照表如下所示: UID/PID AT32型号 FLASH大小 封装 0x0000000270050240 AT32F403ZCT6 256KB LQFP144 0x0000000270050241 AT32F403VCT6 256KB LQFP100 0x0000000270050242 AT32F403RCT6 256KB LQFP64 0x0000000270050243 AT32F403CCT6 256KB LQFP48 0x0000000270050344 AT32F403ZGT6 1024KB LQFP144 0x0000000270050345 AT32F403VGT6 1024KB LQFP100 0x0000000270050346 AT32F403RGT6 1024KB LQFP64 0x0000000270050347 AT32F403CGT6 1024KB LQFP48 0x00000002700502C8 AT32F403ZET6 512KB LQFP144 0x00000002700502C9 AT32F403VET6 512KB LQFP100 0x00000002700502CA AT32F403RET6 512KB LQFP64 0x00000002700502CB AT32F403CET6 512KB LQFP48 0x000000027005034C AT32F403CGU6 1024KB QFN48 0x00000002700502CD AT32F403CEU6 512KB QFN48 0x000000027005024E AT32F403CCU6 256KB QFN48 0x0000000470030240 AT32F413RCT7 256KB LQFP64 0x00000004700301C1 AT32F413RBT7 128KB LQFP64 0x0000000470030242 AT32F413CCT7 256KB LQFP48 0x00000004700301C3 AT32F413CBT7 128KB LQFP48 0x0000000470030244 AT32F413KCU7-4 256KB QFN32 0x00000004700301C5 AT32F413KBU7-4 128KB QFN32 0x0000000470030106 AT32F413C8T7 64KB LQFP48 0x0000000470030247 AT32F413CCU7 256KB QFN48 0x00000004700301C0 AT32F413CBU7 128KB QFN48 0x0000000570030240 AT32F415RCT7 256KB LQFP64 0x0000000570030241 AT32F415CCT7 256KB LQFP48 0x0000000570030242 AT32F415KCU7-4 256KB QFN32 0x0000000570030243 AT32F415RCT7-7 256KB LQFP64 0x00000005700301C4 AT32F415RBT7 128KB LQFP64 0x00000005700301C5 AT32F415CBT7 128KB LQFP48 0x00000005700301C6 AT32F415KBU7-4 128KB QFN32 0x00000005700301C7 AT32F415RBT7-7 128KB LQFP64 0x0000000570030108 AT32F415R8T7 64KB LQFP64 0x0000000570030109 AT32F415C8T7 64KB LQFP48 0x000000057003010B AT32F415R8T7-7 64KB QFN32 0x000000057003010A AT32F415K8U7-4 64KB LQFP64 0x00000005700301CD AT32F415CBU7 128K QFN48 0x000000057003024C AT32F415CCU7 256K QFN48 0x0000000770050240 AT32F403AVCT7 256KB LQFP100 0x0000000770050241 AT32F403ARCT7 256KB LQFP64 0x0000000770050242 AT32F403ACCT7 256KB LQFP48 0x0000000770050243 AT32F403ACCU7 256KB QFN48 0x0000000770050344 AT32F403AVGT7 1024KB LQFP100 0x0000000770050345 AT32F403ARGT7 1024KB LQFP64 0x0000000770050346 AT32F403ACGT7 1024KB LQFP48 0x0000000770050347 AT32F403ACGU7 1024KB QFN48 0x00000007700502CD AT32F403AVET7 512KB LQFP100 0x00000007700502CE AT32F403ARET7 512KB LQFP64 0x00000007700503CF AT32F403ACET7 512KB LQFP48 0x00000007700503D0 AT32F403ACEU7 512KB QFN48 0x0000000870050249 AT32F407VCT7 256KB LQFP100 0x000000087005024A AT32F407RCT7 256KB LQFP64 0x000000087005034B AT32F407VGT7 1024KB LQFP100 0x000000087005034C AT32F407RGT7 1024KB LQFP64 0x00000008700502D1 AT32F407VET7 512KB LQFP100 0x00000008700502D2 AT32F407RET7 512KB LQFP64 配套程序通过对表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识别码如下所示: PID SXX32 MCU 系列 0x412/0x410/0x414/0x418 SXXF10XXX 0x413 SXX32F405XX/407XX/415XX/417XX 0x419 SXX32F42XXX/SXX32F43XXX 配套程序只支持对SXX32的简易识别,并且SXX32编码方式与AT32不同,但是其PID的存放地址是与AT32是相同的。程序中对表3进行遍历查找,如果找到则返回。 注:本应用指南主要为识别AT32系列MCU,若需对更多SXX32或其他MCU厂商的MCU识别支持,自行添加即可。 2 功能演示 AT32 MCU被识别实验: 步骤:①下载程序到AT32 MCU中并运行;②查看打印值,如图1; 图1. 识别AT32F403A MCU实验 从打印结果可知目前程序运行的MCU为AT32系列的MCU且内核版本为Cortex-M4。 AT32 MCU被识别实验: 步骤:①下载程序到AT32 MCU中并运行;②查看打印值,如图2; 图2. 识别AT32F407 MCU实验 |
|
|
|
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之Makefile修改
710 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备组织架构
1617 浏览 0 评论
1092 浏览 0 评论
嵌入式学习-飞凌嵌入式ElfBoard ELF 1板卡-初识设备树之设备树组成和结构
1326 浏览 0 评论
【敏矽微ME32G070开发板免费体验】点亮WS2812B灯板
1783 浏览 0 评论
【youyeetoo X1 windows 开发板体验】少儿AI智能STEAM积木平台
12173 浏览 31 评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-14 03:46 , Processed in 0.417128 second(s), Total 34, Slave 26 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号