大家好,我是痞子衡,是正經搞技術的痞子。今天痞子衡給大家介紹的是i.MXRT1xxx系列裡暗藏的Product ID寄存器。
MCU 廠商在定義一個産品系列時,通常是會預先規劃産品發展路線的(即會有一大波 MCU 型号面世,各型号間特性有差異),是以 MCU 内部一般都會有一個專門的隻讀寄存器用以存放 Product ID 值,應用程式可讀取這個 ID 值來識别目前 MCU 型号,這樣在設計軟體時可以讓代碼在這個 MCU 系列上通用,進而友善項目做 MCU 型号更換更新。
前段時間,痞子衡做了一個面向 i.MXRT 全系列的 超級下載下傳算法,需要用 Product ID 來區分型号,但當時苦無在 i.MXRT1xxx 系列上沒有找到這樣的寄存器,是以用了一個替代方法,詳見 《識别目前i.MXRT型号》 一文。不過最近痞子衡發現 i.MXRT1xxx 系列上其實是有 Product ID 寄存器的,就是隐藏得比較深,今天我們把它挖出來:
i.MXRT1xxx 家族迄今為止一共出了 i.MXRT1010/1020/1050/1060/1170 五大主型号,基于主型号也擴充出了 i.MXRT1015/1024/1064/1160 四個特色型号,我們看看它們的 ID 寄存器是怎麼設計的:
所有的 i.MXRT10xx 型号都屬于第一代架構,它們的 Product ID 寄存器都統一隐藏在 USB_ANALOG 子產品裡。如下是 i.MXRT1050 裡的 USB_ANALOG->DIGPROG 寄存器定義,這個寄存器值标明了 Chip Silicon Version,其中 DIGPROG[31:16] 是型号碼,DIGPROG[15:0] 是版本碼。
其中型号碼跟晶片真實 Part Number 沒有直接的聯系,需要轉譯,規律來看 DIGPROG[19:16] 記錄的是晶片推出順序,i.MXRT1050 是系列第一個型号,标 A;i.MXRT1020 是系列第二個型号,标 B...。

以 i.MXRT1170 為代表的型号屬于第二代架構,它們的 Product ID 寄存器都統一放在了 ANADIG_MISC 子產品裡。如下是 i.MXRT1170 裡的 ANADIG_MISC->MISC_DIFPROG 寄存器定義,這個寄存器值标明了 Chip Silicon Version,其中 MISC_DIFPROG[23:8] 是型号碼,MISC_DIFPROG[7:0] 是版本碼。
其中型号碼直接就是晶片真實 Part Number 中的數字,簡單明了,希望接下來的新型号保持這種風格。
最後收錄下 i.MXRT1xxx 目前全部型号的 Product ID 值,均是在闆子上實測讀取的(注意:部分晶片參考手冊上的值是錯的),以這裡的值為準。
i.MXRT型号
ID寄存器類型
ID寄存器值
備注
i.MXRT1011
USB_ANALOG->DIGPROG
0x006D0000
/
i.MXRT1015
0x006B0000
基于i.MXRT1021的特色型号
i.MXRT1021
i.MXRT1024
i.MXRT1021的SIP版
i.MXRT105x
0x006A0001
i.MXRT106x
0x006C0000
i.MXRT1064
i.MXRT106x的SIP版
i.MXRT116x
ANADIG_MISC->MISC_DIFPROG
0x001160A0
基于i.MXRT117x的特色型号
i.MXRT117x
0x001170B0
至此,i.MXRT1xxx系列裡暗藏的Product ID寄存器痞子衡便介紹完畢了,掌聲在哪裡~~~
文章會同時釋出到我的 部落格園首頁、CSDN首頁、知乎首頁、微信公衆号 平台上。
微信搜尋"痞子衡嵌入式"或者掃描下面二維碼,就可以在手機上第一時間看了哦。
最後歡迎關注痞子衡個人微信公衆号【痞子衡嵌入式】,一個專注嵌入式技術的公衆号,跟着痞子衡一起玩轉嵌入式。
衡傑(痞子衡),目前就職于恩智浦MCU系統部門,擔任嵌入式系統應用工程師。
專欄内所有文章的轉載請注明出處:http://www.cnblogs.com/henjay724/
與痞子衡進一步交流或咨詢業務合作請發郵件至 [email protected]
可以關注痞子衡的Github首頁 https://github.com/JayHeng,有很多好玩的嵌入式項目。
關于專欄文章有任何疑問請直接在部落格下面留言,痞子衡會及時回複免費(劃重點)答疑。
痞子衡郵箱已被私信擠爆,技術問題不推薦私信,堅持私信請先掃碼付款(5元起步)再發。