close

 一、程式說明:

       本程式使用的MCU是Sonix SN8F27E65, 雖然該MUC的硬體本身也有IIC的介面; 不過本文的重點在於

       如何使用GPIO PIN透過軟體來模擬IIC的介面與Microchip的EEROM(24AA128) 進行資料存取的溝通。

 

二、 IC腳位的設定

                       I2C.jpg   

                      I2C_EEROM.JPG  

 

三、I2C的介面設計流程:

      3.1 Start Condiftion - 

            將SCL、SDA設為High,等待20us後將SDA設為low作為Start Condition。

      3.2 Write Data - 

            1、等待20us後將SCL設為Low後等待10us。

            2、判斷傳送數據的第七個位元值並依照該值來設定SDA的狀態。

            3、等待10us後將SCL設為High。

            4、左旋傳送的數據(將第n-1個位元變成第n個位元),以便處理接下來的傳送。

            5、以上述方式重覆傳送八個bits。

            6、等待20us將SCL設為low並在10us後將SDA設為High且設為Input Mode。

            7、等待10us將SCL設為High並在20us後判斷SDA的狀態來確認資料是否正確傳送。

                (0: Success 1: Fail)

           8、將SCL設為low且將SDA設為Output Mode。      

      3.3 - 在寫入資料後要讀取的資料前,必須再傳送一次Start Condition,才能傳送讀送的命令。   

      3.4 Read Mode -

           1、將SDA的Pin設為High,並將該PIN設定為Input Mode。

           2、等待20us後,將SCL設為low之後再等待20us將SCL設為High。

           3、判斷SDA的狀態後,並將其狀態的值設為Carray Flag的值。

           4、左旋接送的數據(將第n-1個位元變成第n個位元),以便儲存接下來的狀態值。

           5、以上述方式重覆接收八個bits。

           6、等後20us將SCL設為Low,並將該SDA設為Output Mode

           7、判斷是否須要產生Ack,若是則將SDA設為Low,若否則將SDA設為High

           8、最後將SCL設為High,並等待20us後將SCL再說為Low。

      3.5 Stop Condition -

           等待20us後將SCL設為High且再等後20us後將SDA設為High。

   PS. 1、上述所設定的時間可視連接的設備進行調整。(本範例的頻率約為25khz)

         2、由於該款MCU的GPIO PIN並沒有雙向的功能,因此在讀寫時必須進行切換。

 

四、IIC EEROM控制說明:
4-1、在不同的廠商的容量標記上有不同的方式,有的是以bits為單位,有的是以byte為單位。

        4-2、當容量在低於等於2Kbyte(16Kbit)的EEROM,其定址通常只有一個,而大於2KByte(16Kbit)

容量的定址長度為 2 Bytes可表示的最大容量為64KByte(512Kbit)。

        4-3、當每次傳送資料後必須等待EEROM將資料寫入的時間才能再繼續傳送下一筆的資料,不同的設備有

                不同的等待時間。

 

五、執行畫面:

     Smpl_IICBySonixsn8f27e65.jpg     

Download: Smpl_IIC.rar

arrow
arrow
    全站熱搜

    yunjuihuang 發表在 痞客邦 留言(0) 人氣()