I2C匯流排學習—查缺補漏—S3C2440的I2C控制器

來源:互聯網
上載者:User
I2C匯流排學習—查缺補漏—S3C2440的I2C控制器                 學習了IIC匯流排協議的理論部分,覺得應該學習具體操作2440的IIC控制器,畢竟最終都是為了學習S3C2440,所以就把這一部分補上。 S3C2440的I2C介面有四種工作模式:主機發送器、主機接收器、從機發送器、從機接收機。其內部結構如所示。          從可以看出,S3C2440提供4個寄存器來完成所有的IIC操作。SDA線上的資料從IICDS寄存器經過移位寄存器發出,或通過移位寄存器傳入IICDS寄存器;IICADD寄存器中儲存S3C2440當做從機時的地址;IICCON、IICSTAT兩個寄存器用來控制或標識各種狀態,比如選擇工作工作模式,發出S訊號、P訊號,決定是否發出ACK訊號,檢測是否接收到ACK訊號。下面詳細接收各寄存器的用法。
IICCON寄存器IIC-Bus control register


注意事項:
  1. IIC中斷髮生在以下三種情況:當發出地址資訊或接收到一個從機地址並吻合時,當匯流排總裁失敗時,當發送/接收完一個位元組的資料(包括響應位)時。當發出地址資訊或接收到一個從機地址並吻合時產生中斷,在中斷處理函數中要準備發送或者接收資料,即讀取或裝置IICDS寄存器,或者發出P訊號。當匯流排總裁失敗時產生中斷,在中斷處理函數中決定時候延時後再次競爭匯流排等。當發送/接收完一個位元組的資料(包括響應位)時產生中斷,在中斷處理函數中要準備下次要發送或者接收資料,即讀取或裝置IICDS寄存器,或者發出P訊號。
  2. 基於SDA、SCL線上時間特性的考慮,要發送資料時,先將資料寫入IICDS寄存器,然後再清除中斷。清除中斷,即向IICCON[4]寫入0,也就是將SCL線拉高,此時產生一個上升沿,將移位寄存器中的資料發送到SDA線。至於先將資料寫入IICDS寄存器,然後再清除中斷,可能是資料穩定需要一個時間吧。在清除中斷前要資料保持問的那個。
  3. 如果IICCON[5]==0,IICCON[4]將不能正常工作。所以,即使不使用IIC中斷,也要將IICCON[5]設為1。
IICSTAT寄存器IICADD寄存器

                        用到IICADD寄存器的位[7:1],表示從機地址。IICADD寄存器在串列輸出使能位IICSTAT[4]為0時,才可以寫入;在任何時候都可以讀出。IICSTAT[4]為0時,禁止接收/發送功能,即此時SCL線被拉低。

IICDS寄存器                      用到IICDS寄存器的位[7:0],其中儲存的是要發送或已經接收到的資料。IICDS寄存器在串列輸出使能位IICSTAT[4]為1時才可以寫入;在任何時候都可以讀出。IICSTAT[4]為1時,使能接收/發送功能,也就是釋放了SCL線。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.