I2C通訊 EEPROM之寫與讀

2021-07-04 13:27:47 字數 1021 閱讀 9131

往at24c02裡寫入資料,再讀出來,賦給p1口,點亮led燈

#include

#include

#define uchar unsigned char

#define uint unsigned int

sbit sda = p2^0;

sbit scl = p2^1;

void delay_5us()//5us延時

void delay(uint z) //1ms延時

void i2c_init() //初始化i2c

void i2c_start() //起始訊號

void i2c_stop() //終止訊號

void i2c_send(uchar a) //傳送乙個位元組

else

scl = 1; //拉高scl,讓從機讀走資料

_nop_();

a = a << 1;

}scl = 0; //拉低scl,防止scl高電平時,sda波動觸發其他命令

_nop_();

sda = 1; //釋放sda匯流排

_nop_();

}bit i2c_ack() // 從機應答

else

}uchar i2c_read() //讀取乙個位元組

else

_nop_();

scl = 0 ;

_nop_();

if(i < 7) //接收第八位後,不用再左移

}return (dat);

}void master_ack(bit i) //主機應答

else

_nop_();

scl = 1;//拉高時鐘匯流排 讓從機從sda線上讀走主機的應答訊號

delay_5us();

scl = 0;

_nop_();

sda = 1;

_nop_();

}int main()

I2C驅動(2) 讀寫eeprom

include include include include include include include include include static unsigned short ignore static unsigned short normal addr 位址值是7位 改為0x60的話...

I2C外掛程式eeprom的讀寫

i2c簡介 i2c匯流排通訊是一種通訊協,用於連線微控制器及其外圍裝置,由兩根線組成,時鐘線sda和資料線scl。如圖所示,外掛程式裝置接到相應的線上就可以被i2c識別到,另外關於scl,sda以怎麼樣的波形去傳送訊息,以及裝置的應答波紋就不在詳細介紹了,這個對於不是直接寫驅動的開發人員來說沒有必要...

I2C與EEPROM通訊 上電時SDA為0

在自己寫stm32模擬i2c中,寫到向eeprom進行page write,然後random read讀出所寫內容.發現復位6次中,5次會讀寫失敗,1次會成功.失敗的原因是 傳送起始訊號前檢測到sda被拉低,認為匯流排被占用.於是我認為有2種情況 第一種是eeprom自己將sda拉低 第二種是電路接...