nRF54L15使用UICR寄存器保存數(shù)據(jù)
本文章主要是講解如何使用nRF54L15的UICR寄存器保存一些基礎(chǔ)數(shù)據(jù)
一、UICR寄存器的說明
UICR(用戶信息配置寄存器)**是非易失性存儲(chǔ)器(NVM)寄存器,用于配置用戶特定的設(shè)置
注意所有 UICR 寄存器都具有 RW1 保護(hù),只能寫入一次,需要再寫的話必須要擦除Erase All
默認(rèn)復(fù)位值為0xFFFFFFFF
這個(gè)是是寄存器的說明:nRF54的UICR寄存器說明
二、如何使用
我們可以在生產(chǎn)的時(shí)候使用J-LINK燒錄工具搭配nrfutil來寫入寄存器,再在軟件上面讀取該寄存器然后打印
舉例如下,我使用UCIR寄存器保存MAC地址并且通過讀取UICR寄存器設(shè)置MAC地址
2.1 讀取UICR寄存器并且配置MAC地址
注意這個(gè)函數(shù)要在bt_enable前調(diào)用
#include < hal/nrf_uicr.h >
#include < sdc_hci_vs.h >
void read_uicr_and_set_mac_address(void)
{
int ret;
uint8_t mac_address[6];
// nRF54L15的UICR基地址為0x00FFD000
// OTP寄存器偏移為0x500
volatile uint32_t *uicr_otp_base = (volatile uint32_t *)(0x00FFD000 + 0x500);
// 讀取前兩個(gè)OTP寄存器(假設(shè)MAC地址存儲(chǔ)在OTP[0]和OTP[1])
uint32_t otp0 = uicr_otp_base[0]; // OTP[0]
uint32_t otp1 = uicr_otp_base[1]; // OTP[1]
// 判斷兩個(gè)寄存器是否都被設(shè)置
if (otp0 != 0xFFFFFFFF && otp1 != 0xFFFFFFFF) {
mac_address[0] = (otp0 > > 0) & 0xFF;
mac_address[1] = (otp0 > > 8) & 0xFF;
mac_address[2] = (otp0 > > 16) & 0xFF;
mac_address[3] = (otp0 > > 24) & 0xFF;
mac_address[4] = (otp1 > > 0) & 0xFF;
mac_address[5] = (otp1 > > 8) & 0xFF;
sdc_hci_cmd_vs_zephyr_write_bd_addr_t bd_addr_cmd = {
.bd_addr = {mac_address[0],mac_address[1],mac_address[2],mac_address[3],mac_address[4],mac_address[5]},
};
ret = sdc_hci_cmd_vs_zephyr_write_bd_addr(&bd_addr_cmd);
} else {
printk("OTP registers not fully programmed, using default MACn");
// 使用默認(rèn)MAC地址或其他處理
}
printk("MAC Address from UICR: %02X:%02X:%02X:%02X:%02X:%02Xn",
mac_address[0], mac_address[1], mac_address[2],
mac_address[3], mac_address[4], mac_address[5]);
}
#### 2.2通過nrfutil寫入UICR寄存器
可以使用如下命令,如果有不知道如何安裝nrfutil工具的,可以看我之前的博客[【NCS隨筆】nRF54芯片怎么燒錄程序&nrfutil的安裝使用](https://tedlee.blog.csdn.net/article/details/147622349?spm=1001.2014.3001.5502)
```C
nrfutil device recover //擦除設(shè)備
nrfutil device program --firmware merged.hex //燒錄固件
nrfutil device x-write --address 0x00FFD500 --value 0xddccbbaa //寫入U(xiǎn)ICR寄存器0x00FFD500
nrfutil device x-write --address 0x00FFD504 --value 0x8877ffee //寫入U(xiǎn)ICR寄存器0x00FFD504
nrfutil device reset //復(fù)位設(shè)備
nrfutil device protection-set All //設(shè)備讀保護(hù)
#### 2.3測試
使用nRF54L15DK,和peripheral_uart例程


###### 你的點(diǎn)贊、收藏和評論是對我最大的支持,有問題多多指教,如果有需要Nordic開發(fā)板、Nordic的芯片以及Nordic技術(shù)支持的可以在個(gè)人資料獲取我的聯(lián)系方式,感謝讀者支持!
審核編輯 黃宇
-
NC
+關(guān)注
關(guān)注
0文章
21瀏覽量
14376 -
Nordic
+關(guān)注
關(guān)注
9文章
243瀏覽量
48793 -
Zephyr
+關(guān)注
關(guān)注
0文章
47瀏覽量
6518
發(fā)布評論請先 登錄
Nordic nRF54L15 GPIO深度解析
nRF54L 系列SOC芯片NRF54L15 超低功耗藍(lán)牙5.4 SOC
nRF54L15—藍(lán)牙低功耗雙核系統(tǒng)級芯片(SoC)
深入比較nRF52832和Nordic新的產(chǎn)品nRF54L15參數(shù)對比
NRF54L15藍(lán)牙模組性能與場景應(yīng)用
深入比較nRF52832和Nordic新的產(chǎn)品nRF54L15參數(shù)對比
Nordic最新開發(fā)工具nRF54L15 DK
NRF54L15的NORDIC芯片,adc的內(nèi)部參考電壓
NORDIC藍(lán)牙芯片NRF54l15的dsp庫支持分享
北歐半導(dǎo)體推出128 MHz nRF54L15 Cortex-M33多協(xié)議無線微控制器
nRF54L15—藍(lán)牙低功耗雙核系統(tǒng)級芯片(SoC)
突破性能邊界,重塑物聯(lián)網(wǎng)未來——NRF54L15芯片全面解析
nRF54L15 # 超低功耗無線 SoC
nRF54L15 如何自動(dòng)管理電源狀態(tài)
藍(lán)牙 SoC 選型看這篇!nRF52832/nRF54L15 各適配什么場景?

【NCS隨筆】nRF54L15使用UICR寄存器保存數(shù)據(jù)
評論