回覆列表
  • 1 # 使用者7063786766555

    LPC2124有一個標準的I2C匯流排介面,可配置為主機或從機,匯流排時鐘速率可調整,最高可支援400KHZ匯流排速率。使用I2C匯流排時,要將相應得引腳設定連線SCL和SDA,並且總線上要上拉電阻,阻值為1~10KΩ,依據所需要的匯流排速率而定。匯流排速率越高,電阻阻值應該越小。I2C匯流排可接標準I2C介面器件,如序列EEPROM、RAM、LCD、時鐘晶片以及音調發生器。

    根據方向位(R/W)狀態的不同,I2C總線上存在以下兩種型別的資料傳輸:

    ⑴從主傳送器向從接收器傳送資料。

    主機發送得第一個位元組是從機地址,接下來是資料位元組流。從機每接收到一個位元組返回一個應答位。

    ⑵從傳送器向主接收器傳送資料。

    第一個位元組(從地址)從主機發送。從機返回一個應答位。接下來從機向主機發送資料位元組。主機每接收一個位元組返回一個應答位。接收完最後一個位元組,主機返回一個“非應答位”。主器件產生所有序列時鐘脈衝和起始以及停止條件。出現停止條件或重複的起始條件時傳輸結束。由於重複的起始條件同時是下一個序列傳送的開始,因此I2C匯流排不會被釋放。

    LPC2124的I2C是位元組方式的I2C介面,只要把一位元組資料寫入I2C資料暫存器I2DAT後,即可由I2C介面自動完成所有的資料位傳送。它有4種操作模式:主傳送器模式、主接收器模式、從傳送器模式和從接收器模式。

    ⑴主傳送器模式

    該模式中,資料從主機發送到從機。在進入主傳送器模式之前,I2CONSET(I2C控制置位暫存器)必須按如下設定進行初始化:

    I2CONSET --- I2EN STA STO SI AA --- ---

    -- 1 0 0 0 0 -- --

    說明如下:

    I2EN=1,使能I2C介面;

    AA=0,不產生應答訊號,即不允許進入從機模式;

    SI=0,I2C中斷標誌為0;

    STO=0,停止標誌為0;

    STA=0,起始標誌為0。

    在該模式下,資料方向位(R/W)應為0表示執行寫操作。因此第一個傳送的位元組為從地址(7位)和寫方向位。資料的傳送每次為8位,每傳送完一位元組,都接收到一個由從機返回的應答位。該模式的資料傳送操作步驟如下:

    ① 透過軟體置位STA,進入I2C主傳送器模式,I2C邏輯在匯流排空閒後立即傳送一個起始條件。

    ② 當傳送完起始條件後,SI位置位。此時I2STAT(狀態暫存器)中的狀態程式碼為08H,該狀態程式碼用於中斷服務程式的處理。

    ④ 當從地址和寫方向位已傳送且接收到應答位後,SI位再次置位(可能的狀態程式碼為18H,20H或38H)。

    ⑤ 當狀態碼為18H時,表明從機已應答,則可以將資料裝入I2DAT,然後清零SI位,開始傳送資料。

    ⑥ 當正確傳送資料,SI位再次置位(可能的狀態碼為28H,30H)。此時可以再次傳送資料或者置位STO結束匯流排。

    ⑵主接收器模式

    在該模式下,主機所接收的資料位元組來自從傳送器,資料方向位應該為1表示執行讀操作。該模式的資料接收操作步驟如下:

    ① 透過軟體置位STA,進入I2C主傳送器模式,I2C邏輯在匯流排空閒後立即傳送一個起始條件。

    ② 當傳送完起始條件後,SI位置位。此時I2STAT(狀態暫存器)中的狀態程式碼為08H,該狀態程式碼用於中斷服務程式的處理。

    ④ 當從地址和讀方向位已傳送且接收到應答位後,SI位再次置位(可能的狀態程式碼為38H,40H或48H)。

    ⑤ 當狀態碼為40H時,表明從機已應答。設定AA位,用來控制接收到資料後是產生應答訊號還是產生非應答訊號,然後清零SI位,開始接收資料。

    ⑥ 當正確接收到一個位元組資料後,SI位再次置位(可能的狀態碼為50H或58H)。此時可以再次接收資料或者置位STO結束匯流排。

    ⑶從接收器模式

    當配置為I2C從機時,I2C主機可以對它進行讀、寫操作。要初始化為從機使用者必須將從地址寫入I2ADR(從地址暫存器),並按如下配置I2CONSET:

    I2CONSET --- I2EN STA STO SI AA --- ---

    -- 1 0 0 0 1 -- --

    在該模式下,從主傳送器接收資料位元組。當主機訪問從機時,接收主機發送過來的資料,併產生應答訊號。資料方向位應該為0表示寫操作。該模式的資料接收操作步驟如下:

    ① 將從地址寫入I2ADR並配置I2CONSET完成初始化。等待它被自身的從地址或通用地址定址。

    ② 在接收到地址和方向位後,SI位置位並可從I2STAT中讀出有效的狀態程式碼。

    ⑷從傳送器模式

    當主機訪問從機時,向主機發送資料,並等待主機的應答訊號。資料方向位應該為1表示讀操作。使用該模式時,使用者程式只需根據各種狀態碼作出相應的操作。

    I2C時鐘由SCL佔空比暫存器控制(I2SCLH、I2SCLL),分別設定SCL的高電平和低電平時間,獲得合適的匯流排時鐘頻率。暫存器I2CONSET則用來控制I2C匯流排的模式及匯流排操作,其位SI為I2C中斷標誌位,所有匯流排操作都要依賴於這一標誌;同時它又鉗住匯流排,使匯流排的資料傳送/接收得以同步控制。暫存器I2CONCLR則為對應的清零暫存器;I2STAT為I2C狀態暫存器,用於指示匯流排處於哪種狀態,以方便控制操作。I2DAT為I2C匯流排資料暫存器,包含要傳送的資料或剛收到的資料。當系統作為從機時,I2ADR從機地址暫存器有效。當匯流排對此地址進行訪問時,將會產生I2C中斷。

    I2C主機基本操作方法:

    ①設定I2C引腳連線;

    ②設定I2C時鐘速率(I2SCLH、I2SCLL);

    ④傳送從機地址(I2DAT),控制I2CONSET傳送;

    ⑤判斷匯流排狀態(I2STAT),進行資料傳輸控制;

    ⑥傳送結束訊號(I2CONSET)。

    I2C從機基本操作方法:

    ①設定I2C引腳連線;

    ②設定自身的從機地址(I2ADR);

    ④判斷SI位或者等待I2C中斷,等待主機操作;

    ⑤判斷匯流排狀態I2STAT,進行資料傳輸控制。

  • 中秋節和大豐收的關聯?
  • 基金定投選日投、周投還是月投好?