新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > I2C總線學習—查缺補漏—S3C2440的I2C控制器

        I2C總線學習—查缺補漏—S3C2440的I2C控制器

        作者: 時間:2016-11-22 來源:網絡 收藏
        學習了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線被拉低。

        本文引用地址:http://www.104case.com/article/201611/320022.htm

        IICDS寄存器

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



        評論


        技術專區

        關閉
        主站蜘蛛池模板: 宣威市| 石林| 黔江区| 民丰县| 普安县| 罗田县| 阿拉尔市| 德庆县| 奎屯市| 克拉玛依市| 冀州市| 云霄县| 蒙山县| 清徐县| 古交市| 达尔| 安达市| 稷山县| 南岸区| 临武县| 石狮市| 博客| 精河县| 西吉县| 茂名市| 丰台区| 广南县| 鞍山市| 临潭县| 东海县| 江孜县| 寿宁县| 荃湾区| 凤台县| 恩平市| 吐鲁番市| 论坛| 长兴县| 兴化市| 望江县| 连城县|