国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

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

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

3天內(nèi)不再提示

有關(guān)內(nèi)部集成電路總線(I2C或IIC)的基礎(chǔ)知識

YCqV_FPGA_EETre ? 來源:FPGA開發(fā)圈 ? 2020-04-30 16:01 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

何謂 I2C?

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

I2C 簡介

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

注:SCL 為時鐘信號,SDA 為數(shù)據(jù)信號。

I2C 的數(shù)據(jù)傳輸格式如下所述。

單次數(shù)據(jù)傳輸包含 9 個時鐘脈沖,用于驅(qū)動 8 位數(shù)據(jù)和 1 位 ACK/NACK。

數(shù)據(jù)傳輸幀包含 1 個 START 和 1 個 STOP 條件。

地址類型傳輸?shù)膯禹樞驗椋? 個 START 條件,后接 1 個 7 位/10 位地址、1 個 1 位 R/~W 和 1 個 1 位 ACK/NACK。隨后,數(shù)據(jù)類型傳輸包含 8 位數(shù)據(jù)和 1 位 ACK/NACK。

I2C 總線條件

啟動 (Start) 條件 - 在 SDA 上執(zhí)行從高到低轉(zhuǎn)換時,SCL 線路應(yīng)處于高位。

停止 (Stop) 條件 - 在 SDA 上執(zhí)行從低到高轉(zhuǎn)換時,SCL 線路應(yīng)處于高位。

數(shù)據(jù)有效性 - 當 SCL 處于高位狀態(tài)時,SDA 線路上的數(shù)據(jù)有效。

數(shù)據(jù)變更 - 當 SCL 處于低位狀態(tài)時,在 SDA 線路上發(fā)生數(shù)據(jù)變更。

總線繁忙 - 處于 START 與 STOP 條件之間時,總線處于繁忙狀態(tài)。

ACK - 在 SCL 的第 9 次時鐘脈沖時,SDA 應(yīng)處于低位

NACK - 在 SCL 處于第 9 次時鐘脈沖時,SDA 應(yīng)處于高位

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

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

3 時鐘拉伸 (Clock Stretching)

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

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

5 初始化

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

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

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

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

AXI IIC 仿真

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

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

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

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

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

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

    關(guān)注

    5453

    文章

    12574

    瀏覽量

    374696
  • I2C
    I2C
    +關(guān)注

    關(guān)注

    28

    文章

    1556

    瀏覽量

    131272

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

文章出處:【微信號:FPGA-EETrend,微信公眾號:FPGA開發(fā)圈】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    I2C 為什么只要兩根線就能搞定通信?

    到目前為止,我們已經(jīng)討論了SPI通信和UART通信的基礎(chǔ)知識,現(xiàn)在讓我們討論本系列的最后一個協(xié)議,即集成電路間協(xié)議(I2C)。如果您曾經(jīng)構(gòu)建過使用OLED顯示器、氣壓傳感器陀螺儀/加
    的頭像 發(fā)表于 01-04 09:14 ?1697次閱讀
    <b class='flag-5'>I2C</b> 為什么只要兩根線就能搞定通信?

    P82B715:I2C總線擴展的得力助手

    P82B715:I2C總線擴展的得力助手 在電子設(shè)計領(lǐng)域,I2C總線是一種常用的通信協(xié)議,但它的總線電容限制往往會影響實際通信距離和系統(tǒng)設(shè)計
    的頭像 發(fā)表于 12-26 10:20 ?747次閱讀

    基于FPGA的I2C控制模塊設(shè)計

    I2C_WRITE_WDATA.v模塊實現(xiàn)I2C寫時序,I2C_Controller (I2C控制器)例化了I2C_WRITE_WDATA.
    的頭像 發(fā)表于 12-26 09:48 ?5058次閱讀
    基于FPGA的<b class='flag-5'>I2C</b>控制模塊設(shè)計

    深入剖析I2C協(xié)議

    ,I2C也是一種可以多主設(shè)備,多從設(shè)備的總線協(xié)議,通過地址索引,I2C可以使能所需從設(shè)備,I2C的出現(xiàn)主要是用來實現(xiàn)不同集成電路組件之間的控
    的頭像 發(fā)表于 08-21 15:10 ?3689次閱讀
    深入剖析<b class='flag-5'>I2C</b>協(xié)議

    嵌入式接口通識知識I2C接口

    4.1 基本概念I2C的全稱是Inter-Integrated Circuit,譯為集成電路總線,是一種同步、雙向、半雙工的兩線式串行接口總線。連接到
    發(fā)表于 08-14 14:46

    I2C總線通信,為什么要進行電氣隔離?

    I2C總線采用雙向二線制,支持多主機多從機通信,具備高可靠性、抗干擾能力強,廣泛應(yīng)用于嵌入式系統(tǒng)中。
    的頭像 發(fā)表于 08-11 11:04 ?2524次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>通信,為什么要進行電氣隔離?

    AS32系列MCU芯片I2C模塊性能解析與調(diào)試

    實現(xiàn)了IIC協(xié)議的標準模式和快速模式,支持多主機IIC總線架構(gòu)。其中標準模式為100K,快速模式400K。 硬件設(shè)計 I2C 總線
    的頭像 發(fā)表于 06-20 16:31 ?981次閱讀
    AS32系列MCU芯片<b class='flag-5'>I2C</b>模塊性能解析與調(diào)試

    【技術(shù)說明】數(shù)字輸出壓力傳感器的I2C通信

    介紹I2C總線是一個簡單的,串行8位面向計算機總線有效的I2C集成電路間)控制。It提供了良好的支持不同
    的頭像 發(fā)表于 06-19 11:02 ?1797次閱讀
    【技術(shù)說明】數(shù)字輸出壓力傳感器的<b class='flag-5'>I2C</b>通信

    是否有關(guān)于如何通過 I2C 總線上的 uProcessor FPGA 與芯片通信的文檔?

    我們正在做一個項目,我們想回讀電纜中的eMarker芯片。 瀏覽不同的評估板和數(shù)據(jù)表,看來我們需要為芯片編譯代碼。 1. 芯片是否預配置了默認固件? 2. 是否有關(guān)于如何通過 I2C 總線
    發(fā)表于 05-29 06:13

    請問如何通過I2C對CYPD4226編程?

    ,里面有一個 CYPD4226 集成電路。 我們希望能夠由應(yīng)用處理器通過內(nèi)部 I2C 總線對設(shè)備進行編程,而不必通過 SWD 接口將MULTICH_CONNECT_PCB連接到設(shè)備。
    發(fā)表于 05-26 07:25

    嵌入式學習-飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動之Linux下的I2C驅(qū)動簡介

    在Linux下,I2C(Inter-Integrated Circuit)驅(qū)動是用于支持I2C總線協(xié)議的驅(qū)動程序。I2C是一種串行通信協(xié)議,用于在
    發(fā)表于 04-15 10:39

    飛凌嵌入式ElfBoard ELF 1板卡-I2C設(shè)備驅(qū)動之Linux下的I2C驅(qū)動簡介

    在Linux下,I2C(Inter-Integrated Circuit)驅(qū)動是用于支持I2C總線協(xié)議的驅(qū)動程序。I2C是一種串行通信協(xié)議,用于在
    發(fā)表于 04-15 10:19

    嵌入式教育科普|I2C接口全面解析

    1、基本概念I2C的全稱是Inter-IntegratedCircuit,譯為集成電路總線,是一種同步、雙向、半雙工的兩線式串行接口總線。連接到I2
    的頭像 發(fā)表于 04-11 09:44 ?3262次閱讀
    嵌入式教育科普|<b class='flag-5'>I2C</b>接口全面解析

    是德DSOX4034A示波器I2C總線信號分析

    在現(xiàn)代電子設(shè)計與調(diào)試中,I2C(Inter-Integrated Circuit)總線作為一種廣泛應(yīng)用的串行通信協(xié)議,因其簡單性、靈活性和低功耗特性,成為許多嵌入式系統(tǒng)和電子設(shè)備中不可或缺的通信方式
    的頭像 發(fā)表于 03-19 13:47 ?1250次閱讀
    是德DSOX4034A示波器<b class='flag-5'>I2C</b><b class='flag-5'>總線</b>信號分析

    I2C總線復用

    帝晶智慧屏I2C總線復用
    的頭像 發(fā)表于 03-11 17:20 ?2112次閱讀