Mini_F0140原理圖上I2C連接著24C02:
一.IIC介紹
I2C(Inter-Integrated Circuit)是一種通用的總線協議,實現I2C需要兩根信號線完成信息交換,SCL時鐘作為信號線,SDA作為數據輸入/輸出線。I2C屬于同步通信,由于輸入輸出數據均使用一根線,因此通信方向為半雙工。
主要特征有:
1. I2C 總線協議轉換器/并行總線
2. 半雙工同步操作
3. 支持主從模式
4. 支持 7 位和 10 位地址格式
5. 支持起始(START)、停止(STOP)、重新起始(RESTART)以及應答(ACK)信號的生成和檢測
6. 支持標準模式(最大 100Kbps)、快速模式(最大 400Kbps)
7. 分別有 2 字節的發送和接收緩沖
8. 支持過濾毛刺功能
9. 支持 DMA 操作
10. 支持中斷和查詢操作
11. 支持多個從地址(詳細見用戶手冊)
下圖為信號變化及其特定含義:
當主發送器如下圖所示傳輸數據時,從接收器在接收到的每個字節后產生一個 ACK 來響應主發送器。
二.24C02
24C02是低工作電壓的2K位串行電可擦除只讀存儲器,內部組織為256個字節,每個字節8位,該芯片被廣泛應用于低電壓及低功耗的工商業領域。
主器件通過發送一個起始信號啟動發送過程,然后發送它所要尋址的從器件的地址。8位從器件地址的高4位固定為1010。接下來的3位(A2、A1、A0)為器件的地址位。當接收數據時,與I2C連接的從器件名為0xA0。
三.例程
向從機寫數據后,再讀取數據。
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結構體
typedefstruct{ u8busy; u8ack; u8fault; u8opt; u8sub; u8cnt; u8*ptr; u8sadd; }gEepromTypeDef;
3. 寫數據
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. 讀數據
u8i,flag=0,_cnt=0; for(i=0;i
5. 結果
審核編輯:劉清
-
轉換器
+關注
關注
27文章
8941瀏覽量
150681 -
緩沖器
+關注
關注
6文章
2037瀏覽量
46566 -
dma
+關注
關注
3文章
572瀏覽量
102293 -
I2C總線
+關注
關注
8文章
408瀏覽量
61915 -
SCL
+關注
關注
1文章
243瀏覽量
17453
原文標題:靈動微課堂 (第272講)|基于MM32F0140的I2C與24C02通信
文章出處:【微信號:MindMotion-MMCU,微信公眾號:靈動MM32MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
評論