色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

有關內部集成電路總線(I2C或IIC)的基礎知識

YCqV_FPGA_EETre ? 來源:FPGA開發圈 ? 2020-04-30 16:01 ? 次閱讀

何謂 I2C?

在本文中,您將了解有關內部集成電路總線(I2C 或 IIC)的基礎知識以及將此協議總線應用于短距離通信的方法。 I2C 屬于串行通信協議,供雙線接口用于連接 EEPROM、傳感器、RTC、ADC/DAC 等低速器件以及嵌入式系統中的其它兼容 I/O 接口。

I2C 簡介

I2C 包含 2 條線路:1 條為 SCL(串行時鐘),另 1 條為 SDA(串行數據)。這 2 條線路都必須通過電阻上拉到 Vcc。借助使用 I2C 多路復用器可訪問各條通道以連接外設,還可通過電平移位器來轉換這 2 條 I2C 線路/信號上的電壓電平。

注:SCL 為時鐘信號,SDA 為數據信號。

I2C 的數據傳輸格式如下所述。

單次數據傳輸包含 9 個時鐘脈沖,用于驅動 8 位數據和 1 位 ACK/NACK。

數據傳輸幀包含 1 個 START 和 1 個 STOP 條件。

地址類型傳輸的啟動順序為:1 個 START 條件,后接 1 個 7 位/10 位地址、1 個 1 位 R/~W 和 1 個 1 位 ACK/NACK。隨后,數據類型傳輸包含 8 位數據和 1 位 ACK/NACK。

I2C 總線條件

啟動 (Start) 條件 - 在 SDA 上執行從高到低轉換時,SCL 線路應處于高位。

停止 (Stop) 條件 - 在 SDA 上執行從低到高轉換時,SCL 線路應處于高位。

數據有效性 - 當 SCL 處于高位狀態時,SDA 線路上的數據有效。

數據變更 - 當 SCL 處于低位狀態時,在 SDA 線路上發生數據變更。

總線繁忙 - 處于 START 與 STOP 條件之間時,總線處于繁忙狀態。

ACK - 在 SCL 的第 9 次時鐘脈沖時,SDA 應處于低位

NACK - 在 SCL 處于第 9 次時鐘脈沖時,SDA 應處于高位

1 主器件寫 (Master Write) 傳輸 Master Write 操作從 START 條件開始,后接 7 位/10 位從器件地址和 1 位寫操作(等于 0)。成功的從器件尋址應由從器件應答 (ACK)。之后,主器件啟動到從器件的數據寫入,從器件將在響應中提供 N-1 字節的 ACK。當 N-1 字節完成傳輸后,主器件會在第 N 字節傳輸上發送 Not Acknowledged (NACK) 以生成 STOP 條件。 主器件執行的從器件尋址操作失敗將導致總線上出現 NACK,故而將不啟動數據傳輸,并生成 STOP 條件。

2 主器件讀 (Master Read) 傳輸 Master Read 操作從 START 條件開始,后接 7 位/10 位從器件地址和 1 位讀操作(等于 1)。成功的從器件尋址應由從器件應答 (ACK)。后續,從器件會向主器件發送數據,主器件將在響應中提供 N-1 字節的 ACK。當主器件收到 N-1 字節后,它會在第 N 字節傳輸上發送 NACK 以生成 STOP 條件。 主器件執行的從器件尋址操作失敗將導致總線上出現 NACK,故而將不啟動數據讀取,并生成 STOP 條件。

3 時鐘拉伸 (Clock Stretching)

SCL 由處于活動狀態的總線主器件生成。從器件有時可強制時鐘處于低位以延遲主器件發送更多數據(或者在主器件嘗試切斷從器件時鐘前,從器件需要更多時間來準備數據)。這稱為時鐘拉伸或時鐘降頻。欲知詳情,請參閱https://learn.sparkfun.com/tutorials/i2c/all 的協議頁面

4 動態編程序列 使用如下示例中所示偽操作步驟并將其與您所看到的行為進行比較可便于您理解賽靈思 AXI IIC 仿真中的協議行為。 請保留以下步驟的副本,以便您后續在自己的設計中對其進行編輯,如省略或追加步驟。 或者,只需填入適用于的測試案例的任意內容即可。

5 初始化

1. 將 RX_FIFO 深度設置為最大值:設置 RX_FIFO_PIRQ = 0x _ _
2. 將 TX_FIFO 復位為 0x_ _
3. 啟用 AXI IIC、移除 TX_FIFO 復位,并禁用通用調用

6 從 IIC 器件地址0x_ _讀字節數據 1. 讀取狀態 (Status) 寄存器以檢查確認所有 FIFO 均為空,并且總線未處于繁忙狀態
2. 將 0x___ 寫入 TX_FIFO(設置啟動位,器件地址設置為 0x__,讀權限)
3. 將 0x___ 寫入 TX_FIFO(設置停止位,4 字節,將由 AXI IIC 接收)
4. 等待至 RX_FIFO 不為空為止。 a) 讀取 RX_FIFO 字節。 b) 如果讀取的是最后一個字節,則退出;否則,只要 RX_FIFO 不為空,則繼續檢查。

7 對IIC 從器件地址0x_ _寫byte數據 將數據置于從器件地址 0x__: 1. 讀取 SR 以檢查確認所有 FIFO 均為空,并且總線未處于繁忙狀態
2. 將 0x___ 寫入 TX_FIFO(設置啟動位,器件地址,寫權限)
3. 將 0x__ 寫入 TX_FIFO(數據的從地址)
4. 將 0x__ 寫入 TX_FIFO(字節 1)
5. 將 0x__ 寫入 TX_FIFO(字節 2)
6. 將 0x__ 寫入 TX_FIFO(停止位,字節 x)

8 從 IIC 器件地址0x_ _讀字節數據 數據位于從地址 0x _ _。 首先,需要寫權限才能設置從器件地址,然后讀權限之后執行重復啟動。 1. 讀取狀態 (Status) 寄存器以檢查確認所有 FIFO 均為空,并且總線未處于繁忙狀態。
2. 將 0x_ _ _ 寫入 TX_FIFO(設置啟動位,器件地址設置為 0x__,寫權限)。
3. 將 0x__ 寫入 TX_FIFO(數據的從地址)。
4. 將 0x___ 寫入 TX_FIFO(設置重復啟動的啟動位,器件地址設置為 0x_ _,讀權限)。
5. 將 0x___ 寫入 TX_FIFO(設置停止位,4 字節,將由 AXI IIC 接收)。
6. 等待至 RX_FIFO 不為空為止。 a) 讀取 RX_FIFO 字節。 b) 如果讀取的是最后一個字節,則退出;否則,只要 RX_FIFO 不為空,則繼續檢查。

AXI IIC 仿真

本文隨附了一個在 Vivado 2018.1 工程中經過修改的仿真測試平臺。 請將所提供的測試平臺與 AXI IIC IP 配合使用。它已經過測試,可在 Vivado 環境中正常運行。 以下是根據 AXI IIC 產品指南(PG090)所提供的部分編程序列建議的示例。 以下提供了有關示例案例的說明:測試 1 - 建議的序列將數據置于從器件地址 0x6C(含 1 個數據字節)。 1. 讀取 SR 以檢查確認所有 FIFO 均為空,并且總線未處于繁忙狀態。 2. 將 0x1D8 寫入 TX_FIFO(設置啟動位,器件地址,寫權限)。
3. 將 0x212 寫入 TX_FIFO(停止位,最后一個字節)

測試 2 - 建議的序列將數據置于從器件地址 0x6C(含 2 個數據字節)。 1. 讀取 SR 以檢查確認所有 FIFO 均為空,并且總線未處于繁忙狀態。
2. 將 0x1D8 寫入 TX_FIFO(設置啟動位,器件地址,寫權限)。
3. 將 0x011 寫入 TX_FIFO(字節 1)。
4. 將 0x012 寫入 TX_FIFO(字節 2)。
5. 將 0x2EF 寫入 TX_FIFO(停止位,最后一個字節)

測試 3 - 建議的序列將數據置于從器件地址 0x6C(含 2 個數據字節)。使用錯誤的從器件地址重新啟動。 1. 讀取 SR 檢查總線未處于繁忙狀態并且確認所有 FIFO 均為空。
2. 將 0x1D8 寫入 TX_FIFO(設置啟動位,器件地址,寫權限)。
3. 將 0x011 寫入 TX_FIFO(字節 1)。
4. 將 0x012 寫入 TX_FIFO(字節 2)。
5. 將 0x2EF 寫入 TX_FIFO(停止位,最后一個字節)
6. 將 TX FIFO 復位
7. 將錯誤的地址 0x108 寫入 TX_FIFO(設置啟動位,器件地址,寫權限)。

測試 4 - 不建議 將數據置于從器件地址 0x6C(含 1 個數據字節以及 START 位和 STOP 位): 1. 讀取 SR 以檢查總線未處于繁忙狀態并確認所有 FIFO 均為空。
2. 將 0x3D8 寫入 TX_FIFO(設置啟動位,停止位,器件地址,寫權限)。 由于該字節為停止位,故將被視為最后一個字節。 對其將不會生成 TX FIFO 空中斷傳輸,因此它將產生總線不繁忙中斷。 根據 IIC 協議,我們不建議在任一字節中同時包含啟動位和停止位。 請參閱如下有關此行為的示例:

建議遵循測試案例 1、2 和 3 進行操作,但不建議使用測試案例 4。 這也將有助于您遵循編程序列來進行操作。 注釋: 1) 請留意 ISR interrupt(4) 而不是 interrupt(2),以檢測最后一個字節的結束位置。在 interrupt(2) 上會將監測到的最后一個字節前發生的中斷判定為正常。 2) 根據 IIC 協議,請勿將啟動位和停止位與數據/地址字節置于一處。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 集成電路
    +關注

    關注

    5388

    文章

    11563

    瀏覽量

    362082
  • I2C
    I2C
    +關注

    關注

    28

    文章

    1489

    瀏覽量

    123911

原文標題:【干貨分享】IIC 協議與編程序列

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發圈】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    TMS320C6000 DSP內部集成電路(I2C)模塊參考指南

    電子發燒友網站提供《TMS320C6000 DSP內部集成電路(I2C)模塊參考指南.pdf》資料免費下載
    發表于 12-30 16:43 ?0次下載
    TMS320<b class='flag-5'>C</b>6000 DSP<b class='flag-5'>內部</b><b class='flag-5'>集成電路</b>(<b class='flag-5'>I2C</b>)模塊參考指南

    I2C總線上拉電阻阻值如何確定?

    時一直保持高電平狀態,稱為上拉電阻。總線的上拉電阻各有不同作用,如I2C的上拉電阻是由I2C端口內部結構決定的,而RS485和CAN總線的上
    的頭像 發表于 12-27 11:34 ?824次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>上拉電阻阻值如何確定?

    TMS320VC5501/5502/5503/5507/5509 DSP內部集成電路(I2C)模塊參考指南

    電子發燒友網站提供《TMS320VC5501/5502/5503/5507/5509 DSP內部集成電路(I2C)模塊參考指南.pdf》資料免費下載
    發表于 12-24 17:18 ?0次下載
    TMS320VC5501/5502/5503/5507/5509 DSP<b class='flag-5'>內部</b><b class='flag-5'>集成電路</b>(<b class='flag-5'>I2C</b>)模塊參考指南

    TMS320x280x、2801x、2804x內部集成電路(I2C)參考指南

    電子發燒友網站提供《TMS320x280x、2801x、2804x內部集成電路(I2C)參考指南.pdf》資料免費下載
    發表于 12-17 15:43 ?0次下載
    TMS320x280x、2801x、2804x<b class='flag-5'>內部</b><b class='flag-5'>集成電路</b>(<b class='flag-5'>I2C</b>)參考指南

    I2C總線為什么要接上拉電阻

    I2C為什么要接上拉電阻?因為它是開漏輸出。 為什么是開漏輸出? I2C協議支持多個主設備與多個從設備在一條總線上,如果不用開漏輸出,而用推挽輸出,會出現主設備之間短路的情況。所以總線
    的頭像 發表于 11-20 10:07 ?489次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>為什么要接上拉電阻

    I2C協議的基礎知識

    本文從I2C協議的概述開始,描述協議的歷史、不同速度模式、物理層和數據幀結構,最后介紹I2C混合電壓系統中電平兼容性以及上拉電阻大小計算。
    的頭像 發表于 10-22 15:51 ?541次閱讀
    <b class='flag-5'>I2C</b>協議的<b class='flag-5'>基礎知識</b>

    詳解I2C總線與SPI總線的區別

    I2C(Inter-Integrated Circuit)表示集成電路互連,是一種用于線路板內部芯片之間通信的總線。
    的頭像 發表于 10-16 15:16 ?4946次閱讀
    詳解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>與SPI<b class='flag-5'>總線</b>的區別

    了解I2C總線

    電子發燒友網站提供《了解I2C總線.pdf》資料免費下載
    發表于 10-08 11:13 ?2次下載
    了解<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>

    I2C總線上拉電阻計算

    電子發燒友網站提供《I2C總線上拉電阻計算.pdf》資料免費下載
    發表于 10-08 09:54 ?1次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>上拉電阻計算

    優秀實踐:I3C共享總線上的I2C器件

    電子發燒友網站提供《優秀實踐:I3C共享總線上的I2C器件.pdf》資料免費下載
    發表于 09-06 09:49 ?0次下載
    優秀實踐:<b class='flag-5'>I3C</b>共享<b class='flag-5'>總線</b>上的<b class='flag-5'>I2C</b>器件

    I2C總線協議的工作原理和尋址格式

    I2C(Inter-Integrated Circuit)總線協議,即集成電路總線協議,是一種用于連接微控制器及其外圍設備的串行總線協議。
    的頭像 發表于 05-27 15:47 ?1821次閱讀

    什么是I2C接口?什么是I3C接口?I2CI3C的區別

    I2C接口是一種串行通信協議,全稱為Inter-Integrated Circuit,即集成電路總線。它是一種雙向、兩線制(SCL和SDA)的串行通信接口,主要用于連接微控制器和其他外圍設備,如傳感器、存儲器、顯示器等。
    的頭像 發表于 02-17 14:39 ?6455次閱讀
    什么是<b class='flag-5'>I2C</b>接口?什么是<b class='flag-5'>I3C</b>接口?<b class='flag-5'>I2C</b>與<b class='flag-5'>I3C</b>的區別

    藍牙串口通訊總線——I2C/SPI/UART

    嵌入式工程師在做串口通信調試工作的時候,會經常用到I2C、SPI、UART這3條總線I2C、SPI、UART這三種通信總線在嵌入式領域很常見,目前主流的SOC芯片都內置了這三種
    的頭像 發表于 01-22 09:41 ?1686次閱讀
    藍牙串口通訊<b class='flag-5'>總線</b>——<b class='flag-5'>I2C</b>/SPI/UART
    主站蜘蛛池模板: 十分钟免费视频大全在线| 国产免费人成在线看视频| 99无码熟妇丰满人妻啪啪| 国产精品视频免费观看| 欧美18精品久久久无码午夜福利| 亚洲 综合 欧美在线 热| a一级毛片视频免费看| 久草在线福利资站免费视频| 外女思春台湾三级| 国产白浆视频在线播放 | 国产麻豆精品久久一二三| 亚洲欧美日韩高清中文在线| 国产人妻午夜无码AV天堂| 一本之道高清视频在线观看| 和姐姐做插得很深| 亚洲AV福利天堂一区二区三| 久久中文字幕免费视频| 伊人综合在线22| 精品国产在线亚洲欧美| 亚洲 欧美 国产在线视频| 麻生希第一部快播| 中国特级黄色大片| 久青草国产在视频在线观看| 成熟YIN荡美妞A片视频麻豆| 祺鑫WRITEAS流出来了| bl高h文合集| 亚洲爆乳少妇精品无码专区| 国产小视频免费在线观看| 亚洲an天堂an在线观看| 麻豆成人久久精品二区三区网站| 国产成人精品区在线观看| 最美女人体内射精一区二区| 内射白浆一区二区在线观看| 99精品免费观看| 欧美性情一线免费http| 白百合在线观看| 神马老子影院午夜伦| 老湿影院色情a| bbwxxxx交女警| 亚洲中文有码字幕日本| 十九岁韩国电影在线观看|