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