之前21ic家曾发过《GD32也开始假货泛滥了》一文,也曾转发过黄工撰写的辨别方法《如何识别STM32/GD32是否为翻新假货?》,不过最近类似的问题又出现在了21ic论坛。
一位网友在21ic论坛提出疑问表示:“我用的STM32F103VBT6原本是在嘉立创买的,但没办法现在太贵了,而且还没货,就想在天猫上买,找到一个39元的,但听说淘宝上假货或拆机的旧货很多,请教如何识别是不是假货? 假的是不是用GD这类假冒?但GD的如果我直接用原来ST的程序应该是不能直接用的,它们的外设初等始化程序是不一样的,是不是还有连外设初等始化程序都仿造成一样的?拆机的旧货就更难识别了,请老鸟们教教我,在天猫上能买到真货吗?”
热心网友解答表示:“说真的,这款芯片一年前是9块多,现在天猫上各种价都有,39元是贵还是便宜真不知道,至于丝印很难看出吧。现在激光打印机那么便宜,谁都可以激光打印,封装管脚不一样的话直接就不能用了,性能不稳定这个最难判别,我现在用的就遇到一些无法下载程序的,也找不到原因,但都是在嘉立创买的啊。”
网友玄德则为该网友支了一招——所谓“假货”,其实都是拆机件。厂家说“原装正品”,这话不算错,因为没人能假冒。多数商家不会在网页上明说这是别人用过的,需要你在聊天里问。能假冒出来,说明能力已经媲美ST公司了,何必再干假冒的活?他认为应该这样辨别假货:
1、看单个芯片,咱们一般人是辨别不出来的。拆机件似乎都是散着装的,新货似乎是带装。——好像是这样,我不敢打包票。
2、你用旺旺问商家,是全新还是拆机,商家一般会实话实说,因为价钱摆着呢,没必要骗人。有大把人能够接受拆机,不必要骗你一个。
3、如果想压低成本,拆机件照样可以用。寿命完全可以应对用户需要。
其中也有一位大佬也表示,可以使用ID来识别MCU的各种信息,他所举例的是AT32系列,其他系列也可以参考这种方法来鉴别:
前言
本应用笔记介绍了在AT32微控制器上如何实现当前使用内核版本、MCU厂商及型号的识别。
支持型号
AT32F403xx AT32F413xx AT32F415xx AT32F403Axx AT32F407xx
功能实现 识别内核版
本所有的MCU内部都包含一颗内核(CPU),数据处理等操作都由它来完成。各MCU厂商在设计MCU的时候会根据使用场景等不同来选择不同的内核版本满足需求。该部分就是提供一种方法自动识别MCU的内核版本。
通常本应用设计到的MCU使用的内核情况如表一所示:
表1 MCU 使用的内核情况
内核的系统控制块(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 型号表
配套程序只支持对SXX32的简易识别,并且SXX32编码方式与AT32不同,但是其PID的存放地址是与AT32是相同的。程序中对表3进行遍历查找,如果找到则返回。
注:本应用指南主要为识别AT32系列MCU,若需对更多SXX32或其他MCU厂商的MCU识别支持,自行添加即可。
功能演示
AT32 MCU被识别实验:
步骤:①下载程序到AT32 MCU中并运行;②查看打印值,如图1;
图1 识别 AT32 F403A MCU 实验
从打印结果可知目前程序运行的MCU为AT32系列的MCU且内核版本为Cortex-M4。
AT32 MCU被识别实验:
步骤:①下载程序到AT32 MCU中并运行;②查看打印值,如图2;
图 2 识别 AT 32 F407 MCU 实验
从打印结果可知目前程序运行的MCU为AT32系列的MCU且内核版本为Cortex-M4。