資料介紹
描述
i2c協(xié)議是什么?
I2C(Inter-Integrated Circuit),發(fā)音為 I-squared-C,是飛利浦半導(dǎo)體(現(xiàn)為 NXP 半導(dǎo)體)于 1982 年發(fā)明的同步、多主、多從、分組交換、單端、串行通信總線。它廣泛用于在短距離板內(nèi)通信中將低速外圍 IC 連接到處理器和微控制器。或者,I2C 拼寫為 I2C(發(fā)音為 I-two-C)或 IIC(發(fā)音為 IIC)。
兩線協(xié)議由串行數(shù)據(jù)線(SDA)和串行時(shí)鐘線(SCL)組成。開始/停止條件分別確保數(shù)據(jù)傳輸?shù)拈_始和結(jié)束。
i2c 數(shù)據(jù)框

- 起始位:當(dāng) SCL 為高時(shí),SDA 為 0 -> 1。
- 停止位:當(dāng) SCL 為高時(shí),SDA 為 1 -> 0。
- 設(shè)備地址位(7-10 位):設(shè)備地址可以訪問所有唯一的從設(shè)備。一個(gè) 7 位設(shè)備地址可以訪問 2^7 個(gè)設(shè)備或 128 個(gè)設(shè)備,一個(gè) ACK?? 位“0”從特定的從設(shè)備發(fā)送到主設(shè)備,以確認(rèn)其存在于信號(hào)線中。
- 讀/寫位:當(dāng)主設(shè)備寫入從設(shè)備時(shí),“0”被發(fā)送到從設(shè)備,反之亦然。
- ACK/NACK 位:如果成功接收到地址幀或數(shù)據(jù)幀,則接收方向發(fā)送方發(fā)送一個(gè)位“0”。
- 數(shù)據(jù)幀(8 位):i2c 協(xié)議的數(shù)據(jù)幀為 8 位長,在發(fā)送方收到接收方確認(rèn)確認(rèn) ACK 位后發(fā)送。成功接收數(shù)據(jù)后,接收器再次發(fā)送 ACK 位為“0”。
i2c 速度模式
雙向總線:-
- 標(biāo)準(zhǔn)模式 100 kbit/s
- 快速模式 400 kbit/s
- 快速模式 1 Mbit/s
- 高速模式3.4 Mbit/s
單向總線:-
- 超快速模式 5 Mbit/s
主要優(yōu)點(diǎn)和缺點(diǎn):
優(yōu)點(diǎn):
- 多從和多主協(xié)議。
- 使用 ACK 位進(jìn)行錯(cuò)誤處理。
- 時(shí)鐘延長為使用慢速 IC 提供了靈活性。
缺點(diǎn):
- 由于開銷,傳輸速度慢。
- 半雙工。
- 復(fù)雜性隨著主設(shè)備和從設(shè)備數(shù)量的增加而增加。
- 數(shù)據(jù)幀的大小限制為 8 位。
i2c Wire.h 庫
Wire.h 庫在主設(shè)備和從設(shè)備之間建立 i2c 通信。
#include
按照主從設(shè)備(微控制器)的引腳圖,定義 SDA 和 SCL 線。
#define SDA D1
#define SCL D2
主從地址保存在常量變量中。
const int16_t i2c_rpi=0x00; //master
const int16_t i2c_node=0x01; // slave 1
const int16_t i2c_ard=0x02; // slave 2
const int16_t i2c_disco=0x03; // slave 3
const int16_t i2c_esp32=0x04; // slave 4
const int16_t i2c_blue=0x05; // slave 5
在設(shè)置中,所有設(shè)備都與它們的特定 SDA、SCL 線和設(shè)備地址相連。
Wire.begin(SDA,SCL,i2c_address); /* slave or master address depending on the slave or the master device respectively */
對(duì)于 Slave 讀/寫,還設(shè)置了特定的請(qǐng)求函數(shù)。
Wire.onRequest(requestEvent); /* for slave write request */
Wire.onReceive(receiveEvent); /* for slave read request */
此后,主設(shè)備使用其唯一地址向其從設(shè)備發(fā)送請(qǐng)求或接收事件。
/*For read*/
Wire.requestFrom(i2c_slave_addr,data_size); /* slave address along with data bits requested. */
while(Wire.available())
{
char c=Wire.read();
Serial.println(c);
}
/*For Write*/
Wire.beginTransmission(i2c_slave_addr);
Wire.write("xyz");
Wire.endTransmission();
為 i2c 配置 pi
要使用樹莓派實(shí)現(xiàn) i2c 通信,smbus2 庫是建立主從連接的合適庫。
Few initial set up is required for the i2c interface in raspberry pi.
After logging in to the pi, enter this command and enable the i2c from the interface dropdown. reboot the pi.
sudo raspi-config
Install the smbus2 package and i2c tools.
sudo pip install smbus2
sudo apt-get install i2c-tools
To check the slave devices that have established the i2c interface.
sudo i2cdetect -y 1
Thesmbus2 library
from smbus2 import SMBus, i2c_msg
Read some data
with SMbus(1) as bus:
msg=i2c_msg.read(i2c_slave_addr,data_size)
bus.i2c_rdwr(msg)
Write some data
with SMbus(1) as bus:
msg=i2c_msg.write(i2c_slave_addr,data)
bus.i2c_rdwr(msg)
Interfacing with various micro-controllers
- Raspberry Pi 3B Master
- Node MCU Slave1
- Arduino UNO Slave 2
- Blue-Pill(STM32F103C8T6) Slave 3
- DISCO-L475VG-IOT01A Slave 4
- ESP-32 Slave 5

?
- I2C液晶顯示器開源分享
- I2C掃描器開源硬件
- Duino Coin I2C礦機(jī)PCB開源
- I2C控制數(shù)模轉(zhuǎn)換器開源項(xiàng)目
- 硬件I2C與模擬I2C
- 基于I2C Bus MasterI2C interface的參考設(shè)計(jì)
- 如何將I2C從地址左移1位
- I2C負(fù)響應(yīng)問題項(xiàng)目求解答的資料合集免費(fèi)下載 5次下載
- Arduino教程之I2C模塊使用教程資料免費(fèi)下載 9次下載
- i2c 35次下載
- 基于CPLD的I2C總線接口設(shè)計(jì)
- I2C Guid I2C指南
- I2C總線規(guī)范與I2C器件C51讀寫程序
- i2c總線的特點(diǎn)
- i2c總線ppt(I2C總線器件應(yīng)用) 0次下載
- I2C協(xié)議的基礎(chǔ)知識(shí) 617次閱讀
- I2C地址跳變問題的調(diào)試案例 1893次閱讀
- I2C通信協(xié)議及其工作原理 4991次閱讀
- Linux I2C驅(qū)動(dòng)入門知識(shí)科普 1734次閱讀
- i2c-tools工具的安裝和使用簡單介紹 9838次閱讀
- I2C通信的詳細(xì)講解 13.6w次閱讀
- 什么是I2C通信協(xié)議? 7829次閱讀
- 開源軟件opencores I2C master控制器控制I2C接口操作原理 7195次閱讀
- i2c總線用來做什么_i2c總線數(shù)據(jù)傳輸過程 7305次閱讀
- fireflyAIO-3288C主板I2C簡介 1411次閱讀
- I2C總線的工作原理以及優(yōu)缺點(diǎn)解析 1.5w次閱讀
- 基于MCS-51單片機(jī)I2C總線接口電路的設(shè)計(jì) 3457次閱讀
- I2C總線的特點(diǎn)、控制技術(shù)與傳輸分析 1w次閱讀
- u-boot i2c的調(diào)試 2300次閱讀
- 《振南電子STM32視頻教程》第八講:I2C總線 1119次閱讀
下載排行
本周
- 1DD3118電路圖紙資料
- 0.08 MB | 1次下載 | 免費(fèi)
- 2AD庫封裝庫安裝教程
- 0.49 MB | 1次下載 | 免費(fèi)
- 3PC6206 300mA低功耗低壓差線性穩(wěn)壓器中文資料
- 1.12 MB | 1次下載 | 免費(fèi)
- 4網(wǎng)絡(luò)安全從業(yè)者入門指南
- 2.91 MB | 1次下載 | 免費(fèi)
- 5DS-CS3A P00-CN-V3
- 618.05 KB | 1次下載 | 免費(fèi)
- 6海川SM5701規(guī)格書
- 1.48 MB | 次下載 | 免費(fèi)
- 7H20PR5電磁爐IGBT功率管規(guī)格書
- 1.68 MB | 次下載 | 1 積分
- 8IP防護(hù)等級(jí)說明
- 0.08 MB | 次下載 | 免費(fèi)
本月
- 1貼片三極管上的印字與真實(shí)名稱的對(duì)照表詳細(xì)說明
- 0.50 MB | 103次下載 | 1 積分
- 2涂鴉各WiFi模塊原理圖加PCB封裝
- 11.75 MB | 89次下載 | 1 積分
- 3錦銳科技CA51F2 SDK開發(fā)包
- 24.06 MB | 43次下載 | 1 積分
- 4錦銳CA51F005 SDK開發(fā)包
- 19.47 MB | 19次下載 | 1 積分
- 5PCB的EMC設(shè)計(jì)指南
- 2.47 MB | 16次下載 | 1 積分
- 6HC05藍(lán)牙原理圖加PCB
- 15.76 MB | 13次下載 | 1 積分
- 7802.11_Wireless_Networks
- 4.17 MB | 12次下載 | 免費(fèi)
- 8蘋果iphone 11電路原理圖
- 4.98 MB | 6次下載 | 2 積分
總榜
- 1matlab軟件下載入口
- 未知 | 935127次下載 | 10 積分
- 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
- 1.48MB | 420064次下載 | 10 積分
- 3Altium DXP2002下載入口
- 未知 | 233089次下載 | 10 積分
- 4電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191390次下載 | 10 積分
- 5十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183342次下載 | 10 積分
- 6labview8.5下載
- 未知 | 81588次下載 | 10 積分
- 7Keil工具M(jìn)DK-Arm免費(fèi)下載
- 0.02 MB | 73815次下載 | 10 積分
- 8LabVIEW 8.6下載
- 未知 | 65989次下載 | 10 積分
評(píng)論