NRF52832 EEPROM實踐總結

2021-10-21 17:34:27 字數 2560 閱讀 2618

nrf52832 eeprom使用總結眾所周知eeprom為iic通訊,在52832中被叫為twi。

1.初始化:

1.首先要進行通道選擇:nrf_drv_twi_instance(sdk_config.h)

2.再進行引數配置

const nrf_drv_twi_t eep_twi =

nrf_drv_twi_instance(0

);//for eep

void twi_eepinit (

void);

err_code =

nrf_drv_twi_init

(&eep_twi,

&twi_eep_config, twieep_handler,

null);

(err_code)

;nrf_drv_twi_enable

(&eep_twi)

;}

下面就可以開始寫eeprom的讀寫介面了
volatile bool m_xfer_done = false;

volatile bool eep_xfer_done = false;

uint32_t eeprom_read

(uint16_t addr, uint8_t * pdata, size_t size)

那為什麼eep_addr 為0x57呢,作為小白與新手們共同分享一下

首先b4-b7已經固定為1010,b1-b3為e0-e2,e0,e1,e2的意思是需要根據硬體迴路去設定值,如下圖它們三個都接著vdd,所以都是1,接地就位0。

第二點b0 讀寫位,這有乙個容易入坑的地方手冊中寫1為讀,0為寫。那讀的位址豈不是為0xae(10101110),錯!我們採用的是硬體iic寫入,呼叫的是官方的sdk,nrf_drv_twi_rx/nrf_drv_twi_tx不需要我們去再設定b0,我們只需要將b1~b7的值放入介面即可,根據使用介面的不同自動設定讀寫,這也避免了讀寫位址混淆,所以這個位址為0x57(1010111)。

下面就開始eeprom的寫介面了,這是像eeprom中寫年月日時分秒的乙個例子,這裡提示一下,lsb和msb千萬不要整反了。

uint8_t datatmp[12]

;void

eepwrite

(uint16_t addr, size_t size)

g_time =

gettick()

; g_time = g_time +

rtc_gettime()

; plocacltime =

localtime

((time_t*

)&g_time)

;

datatmp[0]

=(uint8_t)

((addr &

0xff00

)>>8)

;//msb

datatmp[1]

=(uint8_t)

(addr &

0x00ff);

/* lsb */

datatmp[2]

= plocacltime->tm_year;

//year

datatmp[3]

= plocacltime->tm_mon+1;

//mon

datatmp[4]

= plocacltime->tm_mday;

//day

datatmp[5]

= plocacltime->tm_hour;

//hour

datatmp[6]

= plocacltime->tm_min;

//min

datatmp[7]

= plocacltime->tm_sec;

//sec

datatmp[8]

= temp_pn_value_flagf;

//tmp

datatmp[9]

= tempinteger;

//tmp

datatmp[10]

=tempdecimal;

//sensor

datatmp[11]

= heartrate;

//sensor

nrf_drv_twi_tx

(&eep_twi,eep_addr,datatmp,size+

2,false)

;}

由於eep有頁這個概念,所以為了設計簡單每次向eep寫16個bytes,首位址為0x80,因為這款eep的pagesize為128 bytes,若是一條資料跨頁寫將會發生「翻捲」,後續page寫入會異常。當然這麼寫會有很大的浪費,那就需要設計跨頁寫入,這裡就不涉及了。

nRF52832 GPIOTE EVENT中斷使用

中斷相關函式見 core cm4.h 標頭檔案,例子 gpiote events en gpiote ch 1 使能gpioe通道1 gpiote events all en 使能所有event事件 nvic setpriority gpiote irqn,0 設定gpiote中斷等級 nvic e...

NRF51822和NRF52832的簡單介紹

1 功耗方面 nrf52832更是在nrf51822的基礎上簡直將功耗降低了一半 2 更好的rf體現,主要是發射功率和接納敏感度更好。發射功率,他哥倆適當,都是 4dbm nrf52832的靈敏度是 96dbm,nrf51822的接納靈敏度是 93dbm。3 更強的處理才能,nrf52832的處理器...

nrf52832增加串列埠功能

1,增加 define uart tx buf size 256 uart tx buffer size.define uart rx buf size 256 uart rx buffer size.void uart write uint8 t pdata,uint8 t length 2,ma...