寫在前面:
本文章旨在總結備份、方便以后查詢,由于是個人總結,如有不對,歡迎指正;另外,內容大部分來自網路、書籍、和各類手冊,如若侵權請告知,馬上刪帖致歉,
目錄
- 一、唯一 ID號
- 二、芯片容量
- 三、器件 ID號
- 四、其它
一、唯一 ID號
在 STM32的全系列 MCU中均有一個 96位的唯一設備識別符號,在 ST的相關資料中,對其功能的描述有 3各方面:
- 用作序列號(例如 USB 字串序列號或其它終端應用程式)
- 在對內部 Flash 進行編程前將唯一 ID 與軟體加密原語和協議結合使用時用作安全密鑰以提高 Flash 中代碼的安全性
- 激活安全自舉程序等
96 位的唯一設備識別符號提供了一個對于任何設備和任何背景關系都唯一的參考號碼,用戶永遠不能改變這些位,
96 位的唯一設備識別符號也可以以單位元組/半字/字等不同方式讀取,然后使用自定義演算法連接起來,
對于不同型號的 STM32芯片來講,其唯一設備 ID 暫存器(96 位)的地址是不一樣的:

例如,STM32F4系列的:

當我們在應用中時,只需要用下面的程式讀取出來就好了:
typedef struct
{
uint32_t id[3];
} ChipID;
typedef enum {
STM32F0 = 0x1FFFF7AC,
STM32F1 = 0x1FFFF7E8,
STM32F2 = 0x1FFF7A10,
STM32F3 = 0x1FFFF7AC,
STM32F4 = 0x1FFF7A10,
STM32F7 = 0x1FF0F420,
STM32L0 = 0x1FF80050,
STM32L1 = 0x1FF80050,
STM32L4 = 0x1FFF7590,
STM32H7 = 0x1FF0F420,
}MCUTypedef;
ChipID Get_ChipID(MCUTypedef MCU)
{
ChipID chipid = {0};
chipid.id[0] = *(__I uint32_t *)(MCU + 0x00);
chipid.id[1] = *(__I uint32_t *)(MCU + 0x04);
chipid.id[2] = *(__I uint32_t *)(MCU + 0x08);
// DEBUG_PRINTF("ID Code:0x%08X\r\n", chipid.id[0]);
// DEBUG_PRINTF("ID Code:0x%08X\r\n", chipid.id[1]);
// DEBUG_PRINTF("ID Code:0x%08X\r\n", chipid.id[2]);
return chipid;
}
至于后期怎么利用這個 ID,采取怎樣的辦法加密就看個人了,
二、芯片容量
在上圖中可以看到,還有一個特殊地址,那就是容量地址,
同樣的,對于不同型號的 STM32芯片,其地址也是不一樣的,這個可以看上面的圖,
當我們用 ST-LINK Utility讀取 STM32F1系列的容量資訊時,得到下圖:

地址中框選的 “0080” 表示的是十六進制,它的資料存盤位數是 16位資料,所以我們用 16bit來顯示,接著我們看下它的暫存器描述:

可以看到,地址所對應的容量對的上芯片的實際容量,而且也跟右上角的 “Flash Size” 給出的 128KBytes對的上,
三、器件 ID號
用 ST-LINK Utility讀取芯片資訊時,可以看到下圖的顯示資訊:

- 第一個 Device:這個好理解,就是芯片型別嘛,
- 第四個 Flash Size:這個就是上面第二大點所說的讀取出來的容量大小,
那么,第二跟第三的這倆個 ID是在哪里讀取出來的呢?
這就是要講的器件 ID號了,注意這個 ID跟上面第一大點所闡述的唯一 ID號不同,上面所說的唯一 ID相當于一個物理介質,是固定不變全球唯一的、伴隨它終身的一個烙印;而現在這個器件 ID是可以相同的,屬于那種種族識別符號,
它存在于 DBGMCU_IDCODE暫存器中,對于不同的 STM32型號,其描述都不一樣,例如:
- STM32F10x:

- STM32F4xx:

在這里,可以看到,即使是同系列的 STM32F4,也會再細分不同的器件 ID,
如此一來,到了這里應該就知道上述的:第二個 Device ID是屬于 DBGMCU_IDCODE暫存器里的 DEV_ID[11:0]這個集合里面的;第三個 Revision ID是屬于 DBGMCU_IDCODE暫存器里的 REV_ID[15:0]這個集合里面的,
而至于 Revision ID,在對應的勘察手冊上,有對該類不同版本的芯片描述:


四、其它
扯了這么多,其實想說的是,利用第二、三大點,可以有效的識別 STM32的芯片是不是假芯或者是否以小(容量)充大(容量)的;翻新的誰也救不了,畢竟能用主義,
好家伙,官板還有這般操作?莫非這就是究極版

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/277406.html
標籤:其他
下一篇:一個常用的電池包電壓檢測電路
