Mini_F0140原理圖上I2C連接著24C02:
一.IIC介紹
I2C(Inter-Integrated Circuit)是一種通用的總線協(xié)議,實(shí)現(xiàn)I2C需要兩根信號線完成信息交換,SCL時鐘作為信號線,SDA作為數(shù)據(jù)輸入/輸出線。I2C屬于同步通信,由于輸入輸出數(shù)據(jù)均使用一根線,因此通信方向為半雙工。
主要特征有:
1. I2C 總線協(xié)議轉(zhuǎn)換器/并行總線
2. 半雙工同步操作
3. 支持主從模式
4. 支持 7 位和 10 位地址格式
5. 支持起始(START)、停止(STOP)、重新起始(RESTART)以及應(yīng)答(ACK)信號的生成和檢測
6. 支持標(biāo)準(zhǔn)模式(最大 100Kbps)、快速模式(最大 400Kbps)
7. 分別有 2 字節(jié)的發(fā)送和接收緩沖
8. 支持過濾毛刺功能
9. 支持 DMA 操作
10. 支持中斷和查詢操作
11. 支持多個從地址(詳細(xì)見用戶手冊)
下圖為信號變化及其特定含義:
當(dāng)主發(fā)送器如下圖所示傳輸數(shù)據(jù)時,從接收器在接收到的每個字節(jié)后產(chǎn)生一個 ACK 來響應(yīng)主發(fā)送器。
二.24C02
24C02是低工作電壓的2K位串行電可擦除只讀存儲器,內(nèi)部組織為256個字節(jié),每個字節(jié)8位,該芯片被廣泛應(yīng)用于低電壓及低功耗的工商業(yè)領(lǐng)域。
主器件通過發(fā)送一個起始信號啟動發(fā)送過程,然后發(fā)送它所要尋址的從器件的地址。8位從器件地址的高4位固定為1010。接下來的3位(A2、A1、A0)為器件的地址位。當(dāng)接收數(shù)據(jù)時,與I2C連接的從器件名為0xA0。
三.例程
向從機(jī)寫數(shù)據(jù)后,再讀取數(shù)據(jù)。
1. I2C配置
RCC_APB1PeriphClockCmd(RCC_APB1ENR_I2C1,ENABLE); I2C_StructInit(&I2C_InitStruct); //ConfigureI2Casmastermode I2C_InitStruct.Mode=I2C_CR_MASTER; I2C_InitStruct.OwnAddress=0; I2C_InitStruct.Speed=I2C_CR_STD; I2C_InitStruct.ClockSpeed=100000; I2C_Init(I2Cx,&I2C_InitStruct); I2C_Send7bitAddress(I2Cx,0xA0,I2C_Direction_Transmitter); I2C_Cmd(I2Cx,ENABLE);
2. 定義24C02結(jié)構(gòu)體
typedefstruct{ u8busy; u8ack; u8fault; u8opt; u8sub; u8cnt; u8*ptr; u8sadd; }gEepromTypeDef;
3. 寫數(shù)據(jù)
EEPROM_WriteByte(sub); while(cnt--){ EEPROM_WriteByte(*ptr); ptr++; } I2C_GenerateSTOP(I2C1,ENABLE); while((I2C_GetITStatus(I2C1,I2C_IT_STOP_DET))==0); gEeprom.ack=true; gEeprom.busy=false; EEPROM_WaitEEready(); returntrue;
4. 讀數(shù)據(jù)
u8i,flag=0,_cnt=0; for(i=0;i
5. 結(jié)果
審核編輯:劉清
-
轉(zhuǎn)換器
+關(guān)注
關(guān)注
27文章
8728瀏覽量
147450 -
緩沖器
+關(guān)注
關(guān)注
6文章
1923瀏覽量
45536 -
dma
+關(guān)注
關(guān)注
3文章
565瀏覽量
100684 -
I2C總線
+關(guān)注
關(guān)注
8文章
391瀏覽量
61040 -
SCL
+關(guān)注
關(guān)注
1文章
239瀏覽量
17111
原文標(biāo)題:靈動微課堂 (第272講)|基于MM32F0140的I2C與24C02通信
文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論