一起学nRF51xx 11 - ficr
前言
工廠信息配置寄存器(FICR)是在工廠中預先編程的,不能被用戶刪除。這些寄存器包含芯片特定的信息和配置。實際上FICR是一個寄存器組,下面有很多個獨立的寄存器,各個寄存器用來存放表征芯片特性的一些數(shù)據(jù)。例如芯片的硬件代碼、固件代碼、片上FLASH的大小、片上RAM有幾塊、每一塊的容量是多少、藍牙地址等等很重要的信息。而這些信息在芯片制造的過程被燒寫進去。由于這些寄存器組是OTP,只能燒錄一次,燒錄完以后只能讀取里面的值了。這些數(shù)據(jù)很有用,就算我們拿到一片被磨掉絲印的芯片,通過讀取內(nèi)部FICR相關(guān)寄存器的值,我們?nèi)匀豢梢灾浪鞘裁窗姹镜男酒?#xff0c;片上FLASH有多少,RAM有多少,等等。
FICR不只是一個寄存器,它是一個寄存器組。所以下面分別介紹一下各寄存器保存的一些信息。
其中DEVICEADDR[n],是48位的:
?
藍牙地址有2種類型:
publicaddress:這種類型的地址一般由公司向藍牙組織SIG申請,然后SIG分配給公司24位的公共地址,另外的24位是公司內(nèi)部自由分配的,比如跟不同的產(chǎn)品,不同的型號分配不同的地址。這24位地址是唯一的,是屬于公司的,看到這24位地址好像看到了公司一樣。當然,這個是要花錢的。
Randomaddress:一般用的是這種類型的地址。所謂的靜態(tài)隨機,以nRF51為例,就是在芯片生產(chǎn)的過程中隨機產(chǎn)生,然后燒錄到FICR寄存器里面的值。當藍牙協(xié)議棧初始化的時候把這個地址讀取出來,廣播出去。
????? 本節(jié)介紹nRF51系列SOC的FICR模塊中各寄存器的含義,并且以一個實例把各寄存器的值讀出來,然后打印到串口。通過本節(jié)的學習,大家會知道如何獲取這些跟IC身份相關(guān)的信息。
?
示例詳解
基于硬件平臺:nrf51822ek_tm開發(fā)板。
?
本示例所用的最小系統(tǒng)板原理圖:
?
工程名為nrfxx-ficr確認后按下圖選擇芯片為nrf51822_xxAA->ok
在彈出的對話框中勾選CMSIS中的CORE;Device中的Startup(后面有nrf51Series字樣的);在nrf_device中勾選nrf_gpio, nrf_uart, nrf_delay,nrf_err并在nrf_Libraries中勾選app_error,nrf_assert模塊。
?
?
?
OK之后工程自動生成如下代碼:
新建一個空白文檔,保存為main.c,并加入工程中:
配置工程,選擇使用MicroLIB庫,可以減小程序體積:
加入NRF51定義,并選擇化等級3,可以減小程序體積,但仿真運行時可能會出現(xiàn)與代碼順序不一致現(xiàn)象:
?
調(diào)試工具選擇J-LINK,并將接口設置為SW口勾選下載程序后自動復位及運行:
?
?
?
?
????? 把程序編譯,下載到開發(fā)板上可以看到開發(fā)板上的藍燈實現(xiàn)了呼吸燈效果。對應的PWM變化如下圖所示:
關(guān)于nrf51xx及FICR的更詳細介紹可以參看《nRF51822_PS_v3.3.pdf》或https://infocenter.nordicsemi.com/index.jsp
。
?
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內(nèi)容,也歡迎大家留言!!最后喜歡這個公眾號的同學們記得加關(guān)注了,會有不定期技術(shù)干貨推出!!
文中源碼資料下載,在公眾號里給十三發(fā)消息:
下載|一起學nRF51xx 11
?
關(guān)注十三公眾號
?
總結(jié)
以上是生活随笔為你收集整理的一起学nRF51xx 11 - ficr的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起学nRF51xx 10 - rng
- 下一篇: 一起学nRF51xx 12 - fla