剛學學stm32的i2c時,一大堆的配置,配置起來也麻煩。看著手裡有塊51開發板,就學著用軟體模擬i2c。
#include #define uchar unsigned char
#define uint unsigned int
sbit sda=p0^1;
sbit scl=p0^0;
void delayms(uchar num);
//起始訊號
void i2c_start()
//停止訊號
void i2c_stop()
//主機應答訊號
void master_ack(u8 ack)
//寫入乙個位元組
uchar i2c_write_byte(uchar buffer)
} return 1;
}//讀取乙個位元組
uchar i2c_read_byte(uchar ack)
if(ack)//主機應答狀態
else
return temp;
}void main()
void delayms(uchar num)
{ uchar i,j;
for(i=0;i筆記記錄,如有誤請指出,謝謝!
微控制器的I2C常規知識
i2c有8位資料,為7位選址 r w。當scl為高電平時,sda從高電平向低電平切換,為i2c的起始條件。當scl為低電平時,sda由低電平向高電平切換,為i2c的停止條件。scl保持低電平,主機則處於等待狀態。ack為響應,傳送完乙個資料後等待響應。從i2c接收乙個位元組 1 初始化 i2c st...
微控制器之I2C匯流排原理
採用序列匯流排技術可以大大簡化硬體的設計,體積減少,可靠性高。常見的匯流排,i2c inter ic bus 單匯流排,spi匯流排。i2c序列匯流排 1 進行多主機通訊 2 兩根雙線訊號線,一根資料線sda,另外一根時鐘線scl,接上拉電阻,匯流排空閒為高電平。只要有低電平,匯流排就會被拉低電平。...
微控制器 I2C匯流排通訊程式
為保證資料的可靠性,i2c匯流排的資料傳送有嚴格的時序要求。i2c匯流排的起始訊號 終止訊號 傳送 0 及傳送 i2c匯流排寫操作,待寫入位元組dat,返回值為應答狀態 i2c sda 1 8位資料傳送完後,主機釋放sda,以檢測從機應答 i2cdelay i2c scl 1 拉高scl ack i...