一起学nRF51xx 13 - twi iic
前言
在IIC總線是PHILIPS公司推出的一種串行總線。IIC總線有2根信號線SCK(時鐘線)和SDA(數(shù)據(jù)線)。NRF51822中所謂的TWI總線跟IIC總線兼容,這里統(tǒng)稱為IIC總線。IIC總線規(guī)定了不同類型的從機擁有不同的IICADRESS,主機訪問從機的時候需要提供從機的IICADRESS。這使得IIC總線上可以同時掛很多個傳感器,執(zhí)行器件而不會沖突。
上圖中R的取值范圍是4.7-10K ,NRF51822的IIC控制器是作為主機使用, NRF51822 IIC總線控制器的結(jié)構(gòu)示意圖如下。
左邊為TASK,右邊是EVENT。
TASK:
1)STARTRX:NRF51822開始接收從機發(fā)過來的數(shù)據(jù)。
2)STARTTX:NRF51822開始發(fā)送數(shù)據(jù)到從機。
3)SUSPEND:暫停通訊。
4)RESUME:恢復(fù)SUSPEND暫停的通訊。
5)STOP:停止通訊。
?
EVENT:
1)RXDRDY:接收已經(jīng)完成。
2)TXDSENT:發(fā)送已經(jīng)完成。
3)BB(byteboundary):字節(jié)的分界線。每當(dāng)NRF51822發(fā)送完或者接收到一個字節(jié)的數(shù)據(jù),會產(chǎn)生這個EVNET。
4)SUSPENDED:通訊已經(jīng)被暫停。
5)ERROR:通訊中產(chǎn)生了錯誤。
6)STOPPED:通訊已經(jīng)被終止。
?
NRF51822寫數(shù)據(jù)到從機的時序
開始條件---器件地址+寫標(biāo)志---從機ACK---第一個字節(jié)---從機ACK---第N字節(jié)----從機ACK-----停止條件。
?
NRF51822讀取從機寄存器數(shù)據(jù)的時序
開始條件---器件地址+寫標(biāo)志---從機ACK---從機發(fā)送第一個字節(jié)數(shù)據(jù)到IIC控制器---主機發(fā)送應(yīng)答信號---從機發(fā)送第N個字節(jié)到IIC控制器----停止條件。
?
?
?
?
?
?
?
寄存器介紹
?
本例程演示的是NRF51822通過IIC總線與開發(fā)板上的MPU6050通訊,讀出MPU6050的WHOAMI寄存器的特征碼(0x68),并通過串口打印輸出結(jié)果。
?
示例詳解
基于硬件平臺:nrf51822ek_tm開發(fā)板。
?
本示例所用的最小系統(tǒng)板原理圖:
?
工程名為nrfxx-twi確認(rèn)后按下圖選擇芯片為nrf51822_xxAA->ok
在彈出的對話框中勾選CMSIS中的CORE;Device中的Startup(后面有nrf51Series字樣的);在nrf_device中勾選nrf_gpio, nrf_uart, nrf_delay,nrf_twi,nrf_err并在nrf_Libraries中勾選app_error,nrf_assert模塊。
?
?
?
OK之后工程自動生成如下代碼:
新建一個空白文檔,保存為main.c,并加入工程中:
配置工程,選擇使用MicroLIB庫,可以減小程序體積:
加入NRF51定義,并選擇化等級3,可以減小程序體積,但仿真運行時可能會出現(xiàn)與代碼順序不一致現(xiàn)象:
?
調(diào)試工具選擇J-LINK,并將接口設(shè)置為SW口勾選下載程序后自動復(fù)位及運行:
?
?
?
????? 把程序編譯,可以看到串口助手中打印了以下輸出內(nèi)容:
關(guān)于nrf51xx更詳細(xì)介紹可以參看《nRF51822_RM_v3.0.1.pdf》或https://infocenter.nordicsemi.com/index.jsp。
OK,本期實驗完成!下期見!同時如果大家有什么疑問或是有想了解的其它內(nèi)容,也歡迎大家留言!!最后喜歡這個公眾號的同學(xué)們記得加關(guān)注了,會有不定期技術(shù)干貨推出!!
文中源碼資料下載,在公眾號里給十三發(fā)消息:
下載|一起學(xué)nRF51xx 13
?
關(guān)注十三公眾號
?
總結(jié)
以上是生活随笔為你收集整理的一起学nRF51xx 13 - twi iic的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一起学nRF51xx 12 - fla
- 下一篇: 一起学nRF51xx 14 - tem