IIC實現對EEPROM(24C02)的讀寫

2021-08-16 15:21:47 字數 1203 閱讀 6392

概述:eeprom晶元型號為24c02,該晶元的總容量是256個位元組,該晶元通過iic匯流排與外部連線。

實驗功能:通過key1按鍵來控制24c02的寫入,通過另外乙個按鍵key0來控制24c02的讀取。

硬體電路:

iic配置**:

//初始化iic

void iic_init(void)

//產生iic起始訊號

void iic_start(void)

//產生iic停止訊號

void iic_stop(void)

//等待應答訊號到來

//返回值:1,接收應答失敗

// 0,接收應答成功

u8 iic_wait_ack(void)

} iic_scl=0;//時鐘輸出0

return 0;

} //產生ack應答

void iic_ack(void)

//不產生ack應答

void iic_nack(void)

//iic傳送乙個位元組

//返回從機有無應答

//1,有應答

//0,無應答

void iic_send_byte(u8 txd)

}

//讀1個位元組,ack=1時,傳送ack,ack=0,傳送nack

u8 iic_read_byte(unsigned char ack)

if (!ack)

iic_nack();//傳送nack

else

iic_ack(); //傳送ack

return receive;

}

以上**為iic驅動**,實現包括iic的初始化、iic開始、iic結束、ack、iic讀寫等功能,在其它函式裡面,只需要呼叫相關的iic函式就可以和外部iic器件通訊了,這裡並不侷限於24c02,該段**可以用在任何iic裝置上。

軟體模擬iic24c02協議實現

iic時序 if 1 void iic start void iic stop void void iic send byte u8 txd iic scl 0 delay ms 5 u8 iic wait ack delay ms 5 return 0 u8 iic read byte unsig...

IIC方式讀驅動AT24C16晶元

閒來無事,找了塊msp430的板子編寫了個iic驅動at24c16的程式。iic作是一種簡單,雙向,同步的二進位制匯流排,由sda資料線和scl時鐘線組成,所有接到iic匯流排上的各裝置的sda資料線都連線到匯流排的sda資料線上,用來進行資料的傳輸 所有接到iic匯流排上的各裝置的scl時鐘線都連...

IIC讀取AT24C256資料出現的問題及解析

stm32f407zgt6,at24c256 mdk5,gpiog pg2 scl,gpiog pg3 sda,屬於軟體模擬iic 在用邏輯分析儀分析時序時發現時序完全沒問題,如圖 向位址為7fffh的位址寫0x55 對位址為7fffh的位址讀資料 由圖可以看出寫並沒出現問題,問題出在讀資料時。讀時...