<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > Cortex-M3 (NXP LPC1788)之IIC控制器

Cortex-M3 (NXP LPC1788)之IIC控制器

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
I2C通信協(xié)議在上篇文章中進(jìn)行了介紹,下面對LPC1788的I2C控制器進(jìn)行分析。要使用I2C模塊,需要配置相應的寄存器,如功率、時(shí)鐘、管腳等。以I2C0為例,配置P0.27和P0.28管腳分別為SDA和SCL功能,在PCONP中使能I2C0功率控制,根據PCLK和要使用的I2C的頻率設置SCLH和SCLL。

I2C模塊可以工作在主發(fā)送、主接收、從發(fā)送、從接收四種工作模式。開(kāi)發(fā)板上LPC1788工作在主發(fā)送模式時(shí)發(fā)送數據給總線(xiàn)上的外設。工作在主接收模式時(shí)接收總線(xiàn)上的外設數據。

本文引用地址:http://dyxdggzs.com/article/201611/318455.htm

主發(fā)送模式的數據格式

操作流程如下:

1,發(fā)送一個(gè)S起始條件。初始化控制位寄存器,清除STA、STO、SI,然后向I2C控制置位寄存器I2CONSET中置位STA位,一旦總線(xiàn)空閑,I2C邏輯會(huì )馬上測試I2C總線(xiàn)并產(chǎn)生一起始條件。如果起始條件得到總線(xiàn)應答,中斷標志SI會(huì )置位,通讀取I2C狀態(tài)寄存器I2STAT的值,如果為0x08表示可以進(jìn)入發(fā)送數據的操作。

2,第一個(gè)發(fā)送的字節包含接收設備的從機地址和數據方向位。方向位(R/W)設置成0,表示進(jìn)行些操作,將該字節寫(xiě)入I2C數據寄存器I2CDAT進(jìn)行發(fā)送。發(fā)送成功后會(huì )產(chǎn)生一個(gè)應答,并且SI再次置位,讀取I2STAT中的狀態(tài),如果是0x18表示得到正確的應答,可以進(jìn)行數據的傳輸。寫(xiě)入從機地址后,應該清零起始條件中置位的STA位,并且SI位必須在串行傳輸繼續之前復位。

3,最后進(jìn)行數據的發(fā)送,每個(gè)數據發(fā)送完成都會(huì )有一個(gè)應答,且SI置位,如果發(fā)送成功讀取的STAT的值為0x28。要注意的是在下一次串行傳輸前必須復位SI。

4,數據發(fā)送完成后,發(fā)送一個(gè)P停止條件。在I2CONSET中置位STO標志,并且清除STA和SI標志。

至此,主發(fā)送模式結束。

主接收模式數據格式

操作流程如下:

1,發(fā)送一個(gè)起始條件S。和主發(fā)送模式相同。

2,寫(xiě)第一個(gè)字節數據,操作過(guò)程和主發(fā)送相同,只需將方向位改成讀,并且正確的應答標志為0x40。

3,數據接收時(shí)需要注意的是,接收的最后一個(gè)字節總是非應答,這樣主機就可以告訴從機讀序列已經(jīng)完成。如果接收到的應答A,則I2CSTAT的值為0x50。接收到非答,則I2CSTAT的值為0x58,。應答或者非應答,通過(guò)設置SI位進(jìn)行控制。

4,在接收到非應答的狀態(tài)標志0x58后,發(fā)送一個(gè)停止條件。

我們可以單獨設置主發(fā)送和主接收,也可以再主接收或主發(fā)送數據傳輸結束后,選擇不發(fā)送停止條件P,而是發(fā)送重復起始條件,進(jìn)行主發(fā)送和主接收的切換。

主發(fā)送切換到主接收的數據格式

操作流程如下:

1,在主發(fā)送模式數據傳輸完成后,不發(fā)送停止條件。即上面介紹的主發(fā)送模式流程的第4步不執行,而是改成重新發(fā)送一個(gè)起始標志,置位STA。重復起始發(fā)送成功后返回 的狀態(tài)標志位0x10。

2,切換成功后即可按主接收步驟中的第二步直接開(kāi)始執行。

LPC1788的主工作模式介紹完,具體的程序在下一篇文章再結合從設備給出代碼。



關(guān)鍵詞: Cortex-M3NXPLPC1788IIC控制

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>