之前21ic家曾發(fā)過《GD32也開始假貨泛濫了》一文,也曾轉(zhuǎn)發(fā)過黃工撰寫的辨別方法《如何識別STM32/GD32是否為翻新假貨?》,不過最近類似的問題又出現(xiàn)在了21ic論壇。
一位網(wǎng)友在21ic論壇提出疑問表示:“我用的STM32F103VBT6原本是在嘉立創(chuàng)買的,但沒辦法現(xiàn)在太貴了,而且還沒貨,就想在天貓上買,找到一個39元的,但聽說淘寶上假貨或拆機的舊貨很多,請教如何識別是不是假貨? 假的是不是用GD這類假冒?但GD的如果我直接用原來ST的程序應(yīng)該是不能直接用的,它們的外設(shè)初等始化程序是不一樣的,是不是還有連外設(shè)初等始化程序都仿造成一樣的?拆機的舊貨就更難識別了,請老鳥們教教我,在天貓上能買到真貨嗎?”
熱心網(wǎng)友解答表示:“說真的,這款芯片一年前是9塊多,現(xiàn)在天貓上各種價都有,39元是貴還是便宜真不知道,至于絲印很難看出吧?,F(xiàn)在激光打印機那么便宜,誰都可以激光打印,封裝管腳不一樣的話直接就不能用了,性能不穩(wěn)定這個最難判別,我現(xiàn)在用的就遇到一些無法下載程序的,也找不到原因,但都是在嘉立創(chuàng)買的啊。”
網(wǎng)友玄德則為該網(wǎng)友支了一招——所謂“假貨”,其實都是拆機件。廠家說“原裝正品”,這話不算錯,因為沒人能假冒。多數(shù)商家不會在網(wǎng)頁上明說這是別人用過的,需要你在聊天里問。能假冒出來,說明能力已經(jīng)媲美ST公司了,何必再干假冒的活?他認為應(yīng)該這樣辨別假貨:
1、看單個芯片,咱們一般人是辨別不出來的。拆機件似乎都是散著裝的,新貨似乎是帶裝。——好像是這樣,我不敢打包票。
2、你用旺旺問商家,是全新還是拆機,商家一般會實話實說,因為價錢擺著呢,沒必要騙人。有大把人能夠接受拆機,不必要騙你一個。
3、如果想壓低成本,拆機件照樣可以用。壽命完全可以應(yīng)對用戶需要。
其中也有一位大佬也表示,可以使用ID來識別MCU的各種信息,他所舉例的是AT32系列,其他系列也可以參考這種方法來鑒別:
前言
本應(yīng)用筆記介紹了在AT32微控制器上如何實現(xiàn)當前使用內(nèi)核版本、MCU廠商及型號的識別。
支持型號
AT32F403xx AT32F413xx AT32F415xx AT32F403Axx AT32F407xx
功能實現(xiàn) 識別內(nèi)核版
本所有的MCU內(nèi)部都包含一顆內(nèi)核(CPU),數(shù)據(jù)處理等操作都由它來完成。各MCU廠商在設(shè)計MCU的時候會根據(jù)使用場景等不同來選擇不同的內(nèi)核版本滿足需求。該部分就是提供一種方法自動識別MCU的內(nèi)核版本。
通常本應(yīng)用設(shè)計到的MCU使用的內(nèi)核情況如表一所示:
表1 MCU 使用的內(nèi)核情況
內(nèi)核的系統(tǒng)控制塊(SCB)中存在一個名為CPU ID基本寄存器的寄存器,它是只讀的,其中包括處理器類型和版本號,即為表1所示的CPU ID(內(nèi)核版本號)。該寄存器的地址為0XE000ED00(只支持特權(quán)訪問),在程序中,可以利用SCB->CPUID訪問該寄存器,也可通過絕對地址訪問,如*(uint32_t *)0xE000ED00。本指南的配套程序就是通過這種方式獲取到內(nèi)核版本號并判斷出MCU所使用的內(nèi)核版本。
注:如需增加其他內(nèi)核版本的識別,自行添加即可。
識別MCU廠商
識別AT32 MCU
AT32 MCU內(nèi)部包含PID和UID編碼。UID總共為96bit,基地址為0x1FFFF7E8。這里只需要最高地址的一個Byte的數(shù)據(jù),則地址為0x1FFFF7F3,該地址中的內(nèi)容可以識別AT32系列MCU為403系列還是413系列。得到UID后還需要獲取PID以得到MCU的其他信息(例如封裝、內(nèi)部FLASH大小,SRAM大小等)從而達到區(qū)分的情況,PID的基地址為0xE0042000。本指南配套的程序中將獲取到的信息組裝成一個64bit的數(shù)據(jù),它可以區(qū)分出是AT32系列下的哪一種型號,但是程序中只是判斷是否為AT32的MCU系列,并沒有做其它的細分判斷。
AT32系列MCU的PID/UID以及型號的對照表詳見附錄文檔中的表2(點擊閱讀原文內(nèi)下載)
....................................................................................
....................................................................................
配套程序通過對表2進行遍歷查找,判斷當前MCU是否為AT32系列。
注:表格2中所列為AT32系列MCU的F403、F413、F415、F403A和F407,若需支持更多型號的MCU,添加到程序內(nèi)的數(shù)組表中即可。
識別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進行遍歷查找,如果找到則返回。
注:本應(yīng)用指南主要為識別AT32系列MCU,若需對更多SXX32或其他MCU廠商的MCU識別支持,自行添加即可。
功能演示
AT32 MCU被識別實驗:
步驟:①下載程序到AT32 MCU中并運行;②查看打印值,如圖1;
圖1 識別 AT32 F403A MCU 實驗
從打印結(jié)果可知目前程序運行的MCU為AT32系列的MCU且內(nèi)核版本為Cortex-M4。
AT32 MCU被識別實驗:
步驟:①下載程序到AT32 MCU中并運行;②查看打印值,如圖2;
圖 2 識別 AT 32 F407 MCU 實驗
從打印結(jié)果可知目前程序運行的MCU為AT32系列的MCU且內(nèi)核版本為Cortex-M4。
免責(zé)聲明:本文內(nèi)容由21ic獲得授權(quán)后發(fā)布,版權(quán)歸原作者所有,本平臺僅提供信息存儲服務(wù)。文章僅代表作者個人觀點,不代表本平臺立場,如有問題,請聯(lián)系我們,謝謝!