電子發(fā)燒友App

硬聲App

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

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

i2c開源項目分享

2022-11-23 | zip | 0.61 MB | 次下載 | 免費

資料介紹

描述

i2c協(xié)議是什么?

I2C(Inter-Integrated Circuit),發(fā)音為 I-squared-C,是飛利浦半導體(現(xiàn)為 NXP 半導體)于 1982 年發(fā)明的同步、多主、多從、分組交換、單端、串行通信總線。它廣泛用于在短距離板內(nèi)通信中將低速外圍 IC 連接到處理器微控制器。或者,I2C 拼寫為 I2C(發(fā)音為 I-two-C)或 IIC(發(fā)音為 IIC)。

兩線協(xié)議由串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL)組成。開始/停止條件分別確保數(shù)據(jù)傳輸?shù)拈_始和結(jié)束。

i2c 數(shù)據(jù)框

poYBAGN7H_GAb8aDAAA_OFnWq9g560.png
數(shù)據(jù)框
?
  • 起始位:當 SCL 為高時,SDA 為 0 -> 1。
  • 停止位:當 SCL 為高時,SDA 為 1 -> 0。
  • 設備地址位(7-10 位):設備地址可以訪問所有唯一的從設備。一個 7 位設備地址可以訪問 2^7 個設備或 128 個設備,一個 ACK?? 位“0”從特定的從設備發(fā)送到主設備,以確認其存在于信號線中。
  • 讀/寫位:當主設備寫入從設備時,“0”被發(fā)送到從設備,反之亦然。
  • ACK/NACK 位:如果成功接收到地址幀或數(shù)據(jù)幀,則接收方向發(fā)送方發(fā)送一個位“0”。
  • 數(shù)據(jù)幀(8 位):i2c 協(xié)議的數(shù)據(jù)幀為 8 位長,在發(fā)送方收到接收方確認確認 ACK 位后發(fā)送。成功接收數(shù)據(jù)后,接收器再次發(fā)送 ACK 位為“0”。

i2c 速度模式

雙向總線:-

  • 標準模式 100 kbit/s
  • 快速模式 400 kbit/s
  • 快速模式 1 Mbit/s
  • 高速模式3.4 Mbit/s

單向總線:-

  • 超快速模式 5 Mbit/s

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

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

優(yōu)點:

  • 多從和多主協(xié)議。
  • 使用 ACK 位進行錯誤處理。
  • 時鐘延長為使用慢速 IC 提供了靈活性。

缺點:

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

i2c Wire.h 庫

Wire.h 庫在主設備和從設備之間建立 i2c 通信。

#include 

按照主從設備(微控制器)的引腳圖,定義 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

在設置中,所有設備都與它們的特定 SDA、SCL 線和設備地址相連。

Wire.begin(SDA,SCL,i2c_address); /* slave or master address depending on the slave or the master device respectively */

對于 Slave 讀/寫,還設置了特定的請求函數(shù)。

Wire.onRequest(requestEvent); /* for slave write request */
Wire.onReceive(receiveEvent); /* for slave read request */

此后,主設備使用其唯一地址向其從設備發(fā)送請求或接收事件。

/*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

要使用樹莓派實現(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
pYYBAGN7H_WAGCYUAACNhvDRFaE758.png
Device connections
?

?


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

評論

查看更多

下載排行

本周

  1. 1ADE-12H混頻器規(guī)格書
  2. 0.28 MB   |  1次下載  |  5 積分
  3. 2AD9984A高性能10位顯示接口英文手冊
  4. 0.49 MB   |  1次下載  |  5 積分
  5. 351開發(fā)板芯片資料
  6. 14.95 MB   |  1次下載  |  1 積分
  7. 4用TL431LI-Q1監(jiān)控電流供應
  8. 176.71KB   |  1次下載  |  免費
  9. 5十進制數(shù)據(jù)轉(zhuǎn)十六進制字符_轉(zhuǎn)ASCII碼
  10. 0.01 MB   |  次下載  |  免費
  11. 6使用TRF7970A進行NFC主動和被動點對點通信
  12. 926.87KB   |  次下載  |  免費
  13. 7LP8864-Q1 LP8864S-Q1 LP8866-Q1和LP8866S-Q1診斷說明和故障處理程序
  14. 577.42KB   |  次下載  |  免費
  15. 8將設計移植到LP3470A低lq電壓監(jiān)控器,以改善電源監(jiān)控
  16. 115.28KB   |  次下載  |  免費

本月

  1. 1HFSS電磁仿真設計應用詳解PDF電子教程免費下載
  2. 24.30 MB   |  129次下載  |  1 積分
  3. 2正激、反激、推挽、全橋、半橋區(qū)別和特點
  4. 0.91 MB   |  36次下載  |  1 積分
  5. 3GBT 4706.1-2024家用和類似用途電器的安全第1部分:通用要求
  6. 7.43 MB   |  20次下載  |  免費
  7. 4在設計中使用MOSFET瞬態(tài)熱阻抗曲線
  8. 1.57MB   |  15次下載  |  免費
  9. 5幾張電動車充電器電路圖
  10. 0.23 MB   |  9次下載  |  1 積分
  11. 6AD18學習筆記
  12. 14.47 MB   |  8次下載  |  2 積分
  13. 7H橋中的電流感測
  14. 545.39KB   |  7次下載  |  免費
  15. 8電機驅(qū)動器電路板布局的最佳實踐
  16. 3.03MB   |  6次下載  |  免費

總榜

  1. 1matlab軟件下載入口
  2. 未知  |  935113次下載  |  10 積分
  3. 2開源硬件-PMP21529.1-4 開關降壓/升壓雙向直流/直流轉(zhuǎn)換器 PCB layout 設計
  4. 1.48MB  |  420061次下載  |  10 積分
  5. 3Altium DXP2002下載入口
  6. 未知  |  233084次下載  |  10 積分
  7. 4電路仿真軟件multisim 10.0免費下載
  8. 340992  |  191360次下載  |  10 積分
  9. 5十天學會AVR單片機與C語言視頻教程 下載
  10. 158M  |  183329次下載  |  10 積分
  11. 6labview8.5下載
  12. 未知  |  81578次下載  |  10 積分
  13. 7Keil工具MDK-Arm免費下載
  14. 0.02 MB  |  73804次下載  |  10 積分
  15. 8LabVIEW 8.6下載
  16. 未知  |  65985次下載  |  10 積分