協議我們參考|eeprom 24c64的datasheet
速度 標準模式下可以達到100kbit/s
快速模式下可以達到400kbit/s
高速模式下可以達到3.4mbit/s
i2c匯流排術語
傳送器: 傳送資料到匯流排的器件
接收器: 從匯流排接收資料的器件
主機: 初始化傳送 產生時鐘訊號和終止傳送的器件
從機: 被主機定址的器件
多主機: 同時有多於乙個主機嘗試控制匯流排 但不破壞報文
仲裁: 是乙個在有多個主機同時嘗試控制匯流排 但只允許其中乙個控制匯流排並使報文不被破壞
的過程
同步: 兩個或多個器件同步時鐘訊號的過程
void i2c_delay(void)
void i2c_start(void)
void i2c_stop(void)
unsigned
char read_i2c_onebyte(bit ack_or_nak)
i2c_clk = 1;
if(i2c_sda)
read_data |= 0x01;
i2c_delay();
i2c_clk = 0;
set_sda_outputmode; //sda output
i2c_delay();
if(ack_or_nak)
i2c_sda = 1;
else
i2c_sda = 0;
i2c_clk = 1;
i2c_delay();
i2c_clk = 0;
i2c_delay();
i2c_sda = 0;
return read_data;
}bit write_i2c_onebyte(char w_buf)
set_sda_inputmode;
i2c_delay();
i2c_clk = 1;
i2c_delay();
ack_or_nak = 0;
if(i2c_sda)
ack_or_nak = 1;
i2c_clk = 0;
i2c_sda = 0;
set_sda_outputmode; //sda output
return ack_or_nak;
}
時序分析:
1、開始訊號;
2、寫從裝置位址,位址最低位r/w=0,表示為寫操作,從裝置收到資料後會自動返回ack,判斷裝置存不存在可以根據ack訊號;
3、寫儲存位址高八位(寫完位址後從裝置會返回ack),(有的裝置是10bit的位址,24c64是8bit位址)
4、寫儲存位址低八位(寫完位址後從裝置會返回ack)
5、寫8bit資料(1byte)
6、寫停止位
void 24cxx_write(unsigned short addr, unsigned char dat)
int
24cxx_write_page(unsigned
short addr, unsigned
short len, unsigned
char* idata buf)
i2c_stop();
delay_ms(12);
return0;}
//用於拷貝晶元的資料
- 隨機讀操作
時序分析:
1、開始訊號;
2、寫從裝置位址,位址最低位r/w=1,表示為讀操作,從裝置收到資料後會自動返回ack,判斷裝置存不存在可以根據ack訊號;
3、讀儲存位址高八位(寫完位址後從裝置會返回ack),(有的裝置是10bit的位址,24c64是8bit位址)
4、讀儲存位址低八位(寫完位址後從裝置會返回ack)
5、寫停止位
6、寫開始訊號
7、寫從裝置位址
8、讀取資料,並告訴從裝置這次不用回ack
9、寫停止位
臨時儲存i2c邏輯取樣,msb在前
mipi協議 I2C匯流排協議
本文為系列文件第二篇 暫定 spi匯流排協議 2.i2c匯流排協議 3.mipi協議 狀態 更新ing i2c匯流排簡介 i2c匯流排的硬體設定 i2c匯流排特點 i2c匯流排的協議內容與資料傳輸 i2c匯流排常用場景 電子通訊等硬體相關,基帶與電效能領域 計算機硬體相關,系統介面等。i2c是一種常...
I2C協議解析
1 基本概念 主機 初始化傳送,產生時鐘訊號和終止傳送的器件 從機 被主機定址的器件 傳送器 傳送資料到匯流排的器件 接收器 從匯流排接收資料的器件 多主機 同時有多於乙個主機嘗試控制匯流排 但不破壞報文 仲裁 是乙個在有多個主機同時嘗試控制匯流排,但只允許其中乙個控制匯流排並使報文不被破壞的過程 ...
i2c 協議解析
1 基本概念 主機 初始化傳送,產生時鐘訊號和終止傳送的器件 從機 被主機定址的器件 傳送器 傳送資料到匯流排的器件 接收器 從匯流排接收資料的器件 多主機 同時有多於乙個主機嘗試控制匯流排 但不破壞報文 仲裁 是乙個在有多個主機同時嘗試控制匯流排,但只允許其中乙個控制匯流排並使報文不被破壞的過程 ...