微控制器(六) IIC匯流排

2021-07-22 16:36:37 字數 1400 閱讀 8476

iic是積體電路匯流排,它是一種序列匯流排,iic只有兩根雙向訊號線,一根資料線sda,一根訊號線scl。

要掌握iic匯流排通訊協議,需要掌握以下六點:

1.起始訊號。   2.終止訊號。   3.寫資料。   4.讀資料。   5.應答訊號。  6.非應答訊號。

下面我們來看看他們各自的時序。

由此我們可以寫出他的程式:

//起始

void iic_start()

//終止

void iic_stop()

iic在資料傳輸時有乙個資料位的有效性規定:

在傳輸資料時,時鐘訊號為高電平時,資料線上的資料保持穩定,只有在時鐘線為低電平時,資料線上的高低電平才允許變化。

由此程式是:

//傳送乙個位元組

bit iic_send_byte(unsigned char byte)

scl = 1;

sda = 1;

delay_us(1);

if(0 == sda)

else

scl = 0;

return ack;

}//接收乙個位元組

unsigned char iic_rcv_byte(void)

else

temp |= (a << (7 - i));

delay_us(1);

}    

scl = 0;

return temp;

}//傳送乙個字串

unsigned char at24c02_send_str(unsigned char devaddr,unsigned char romaddr,unsigned char *s,unsigned char num)

iic_stop();

return succ;

}//接收乙個字串

unsigned char at24c02_rcv_str(unsigned char devaddr,unsigned char romaddr)

iic匯流排協議規定:每傳送乙個位元組資料後就要有乙個應答訊號,以確定資料傳送是否被對方接到。應答訊號接收裝置,在scl為高電平期間,將sda拉低為低電平,表示資料傳輸正確,以產生應答。

由此iic匯流排傳輸協議差不多講完了,若還有不懂,很高興和大家**。

微控制器IIC匯流排 實測通過

include iic.h void delayms unsigned int ms 毫秒級延時函式 while i void delay2us 2us延時,用於穩定io狀態 void iic delay iic延時,需大於4.7us,這裡取8us void iic io init io口初始化,使...

51微控制器學習之IIC匯流排

核心思想 主機與從機之間的資訊交換。主機傳送訊息,從機要回應一下。從機傳送訊息,主機也要回應。注意點 sda線和scl線都是預設高電平。即高電平為釋放狀態。include include typedef unsigned char u8 typedef unsigned int u16 void d...

郭天祥51微控制器教程 IIC匯流排

include define uchar unsigned char sbit sda p2 0 資料匯流排 sbit scl p2 1 時鐘匯流排 void delay 大概延時5us void delay1 uchar x 這是乙個寫資料的整體過程 void wirte add uchar ad...