91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

電子發(fā)燒友App

硬聲App

掃碼添加小助手

加入工程師交流群

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示
創(chuàng)作
電子發(fā)燒友網(wǎng)>電子資料下載>電子資料>i2c開源項(xiàng)目分享

i2c開源項(xiàng)目分享

2022-11-23 | zip | 0.61 MB | 次下載 | 免費(fèi)

資料介紹

描述

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ù)框

poYBAGN7H_GAb8aDAAA_OFnWq9g560.png
數(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 位長(zhǎng),在發(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

資料來(lái)源:NXP i2c 總線規(guī)范

主要優(yōu)點(diǎn)和缺點(diǎn):

優(yōu)點(diǎn):

  • 多從和多主協(xié)議。
  • 使用 ACK 位進(jìn)行錯(cuò)誤處理。
  • 時(shí)鐘延長(zhǎng)為使用慢速 IC 提供了靈活性。

缺點(diǎn):

  • 由于開銷,傳輸速度慢。
  • 半雙工。
  • 復(fù)雜性隨著主設(shè)備和從設(shè)備數(shù)量的增加而增加。
  • 數(shù)據(jù)幀的大小限制為 8 位。

i2c Wire.h 庫(kù)

Wire.h 庫(kù)在主設(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 庫(kù)是建立主從連接的合適庫(kù)。

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
pYYBAGN7H_WAGCYUAACNhvDRFaE758.png
Device connections
?

?


總線 I2C SDA
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

下載該資料的人也在下載 下載該資料的人還在閱讀
更多 >

評(píng)論

查看更多

下載排行

本周

  1. 1新一代網(wǎng)絡(luò)可視化(NPB 2.0)
  2. 3.40 MB  |  1次下載  |  免費(fèi)
  3. 2冷柜-電氣控制系統(tǒng)講解
  4. 13.68 MB   |  1次下載  |  10 積分
  5. 3MDD品牌三極管MMBT3906數(shù)據(jù)手冊(cè)
  6. 2.33 MB  |  次下載  |  免費(fèi)
  7. 4MDD品牌三極管S9012數(shù)據(jù)手冊(cè)
  8. 2.62 MB  |  次下載  |  免費(fèi)
  9. 5LAT1218 如何選擇和設(shè)置外部晶體適配 BlueNRG-X
  10. 0.60 MB   |  次下載  |  3 積分
  11. 6LAT1216 Blue NRG-1/2 系列芯片 Flash 操作與 BLE 事件的互斥處理
  12. 0.89 MB   |  次下載  |  3 積分
  13. 7收音環(huán)繞擴(kuò)音機(jī) AVR-1507手冊(cè)
  14. 2.50 MB   |  次下載  |  免費(fèi)
  15. 8MS1000TA 超聲波測(cè)量模擬前端芯片技術(shù)手冊(cè)
  16. 0.60 MB   |  次下載  |  免費(fèi)

本月

  1. 1愛華AIWA HS-J202維修手冊(cè)
  2. 3.34 MB   |  37次下載  |  免費(fèi)
  3. 2PC5502負(fù)載均流控制電路數(shù)據(jù)手冊(cè)
  4. 1.63 MB   |  23次下載  |  免費(fèi)
  5. 3NB-IoT芯片廠商的資料說明
  6. 0.31 MB   |  22次下載  |  1 積分
  7. 4UWB653Pro USB口測(cè)距通信定位模塊規(guī)格書
  8. 838.47 KB  |  5次下載  |  免費(fèi)
  9. 5蘇泊爾DCL6907(即CHK-S007)單芯片電磁爐原理圖資料
  10. 0.04 MB   |  4次下載  |  1 積分
  11. 6蘇泊爾DCL6909(即CHK-S009)單芯片電磁爐原理圖資料
  12. 0.08 MB   |  2次下載  |  1 積分
  13. 7100W準(zhǔn)諧振反激式恒流電源電路圖資料
  14. 0.09 MB   |  2次下載  |  1 積分
  15. 8FS8025B USB的PD和OC快充協(xié)議電壓誘騙控制器IC技術(shù)手冊(cè)
  16. 1.81 MB   |  1次下載  |  免費(fèi)

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935137次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關(guān)降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設(shè)計(jì)
  4. 1.48MB  |  420064次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233089次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費(fèi)下載
  8. 340992  |  191439次下載  |  10 積分
  9. 5十天學(xué)會(huì)AVR單片機(jī)與C語(yǔ)言視頻教程 下載
  10. 158M  |  183353次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81602次下載  |  10 積分
  13. 7Keil工具M(jìn)DK-Arm免費(fèi)下載
  14. 0.02 MB  |  73822次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65991次下載  |  10 積分