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...