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表示執行讀操作。該模式的資料接收操作步驟如下:
④ 當從地址和讀方向位已傳送且接收到應答位後,SI位再次置位(可能的狀態程式碼為38H,40H或48H)。
⑤ 當狀態碼為40H時,表明從機已應答。設定AA位,用來控制接收到資料後是產生應答訊號還是產生非應答訊號,然後清零SI位,開始接收資料。
⑥ 當正確接收到一個位元組資料後,SI位再次置位(可能的狀態碼為50H或58H)。此時可以再次接收資料或者置位STO結束匯流排。
⑶從接收器模式
當配置為I2C從機時,I2C主機可以對它進行讀、寫操作。要初始化為從機使用者必須將從地址寫入I2ADR(從地址暫存器),並按如下配置I2CONSET:
-- 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從機基本操作方法:
②設定自身的從機地址(I2ADR);
④判斷SI位或者等待I2C中斷,等待主機操作;
⑤判斷匯流排狀態I2STAT,進行資料傳輸控制。
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,進行資料傳輸控制。