女人自慰AV免费观看内涵网,日韩国产剧情在线观看网址,神马电影网特片网,最新一级电影欧美,在线观看亚洲欧美日韩,黄色视频在线播放免费观看,ABO涨奶期羡澄,第一导航fulione,美女主播操b

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

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

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

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

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

掃碼添加小助手

加入工程師交流群

何謂 I2C?

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

I2C 簡(jiǎn)介

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

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

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

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

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

地址類型傳輸?shù)膯?dòng)順序?yàn)椋? 個(gè) START 條件,后接 1 個(gè) 7 位/10 位地址、1 個(gè) 1 位 R/~W 和 1 個(gè) 1 位 ACK/NACK。隨后,數(shù)據(jù)類型傳輸包含 8 位數(shù)據(jù)和 1 位 ACK/NACK。

I2C 總線條件

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

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

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

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

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

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

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

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

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

3 時(shí)鐘拉伸 (Clock Stretching)

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

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

5 初始化

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

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

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

AXI IIC 仿真

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

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

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

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

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

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

    關(guān)注

    5424

    文章

    12042

    瀏覽量

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

    關(guān)注

    28

    文章

    1541

    瀏覽量

    127789

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

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

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    I2C總線復(fù)用

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

    I2C總線通信原理 如何設(shè)計(jì)I2C總線電路

    I2C總線通信原理 I2C(Inter-Integrated Circuit)總線是一種用于集成電路之間進(jìn)行通信的串行通信協(xié)議。它最早由飛利
    的頭像 發(fā)表于 01-31 15:01 ?1123次閱讀

    I2C總線與Arduino的接口示例

    基礎(chǔ) I2C總線由兩條線組成:數(shù)據(jù)線(SDA)和時(shí)鐘線(SCL)。SDA用于傳輸數(shù)據(jù),而SCL用于同步數(shù)據(jù)傳輸。I2C設(shè)備可以是主設(shè)備從設(shè)備。主設(shè)備生成時(shí)鐘信號(hào)并啟動(dòng)數(shù)據(jù)傳輸,從設(shè)備
    的頭像 發(fā)表于 01-17 15:34 ?1592次閱讀

    I2C總線的工作模式介紹

    在現(xiàn)代電子系統(tǒng)中,I2C總線作為一種多主機(jī)、多從機(jī)的串行通信協(xié)議,扮演著至關(guān)重要的角色。它允許多個(gè)設(shè)備共享同一總線,進(jìn)行數(shù)據(jù)傳輸,從而簡(jiǎn)化了系統(tǒng)設(shè)計(jì)并降低了成本。 I2C
    的頭像 發(fā)表于 01-17 15:32 ?974次閱讀

    I2C總線協(xié)議詳細(xì)解析

    1. I2C總線簡(jiǎn)介 I2C總線由Philips Semiconductor(現(xiàn)為NXP Semiconductors)在1980年代初期開(kāi)發(fā)。它是一種多主機(jī)
    的頭像 發(fā)表于 01-17 15:22 ?895次閱讀

    I2C總線故障排除技巧

    導(dǎo)致整個(gè)系統(tǒng)的功能受到影響。 1. 檢查硬件連接 1.1 確認(rèn)電源和接地 首先,確保I2C設(shè)備的電源和接地連接正確無(wú)誤。不良的電源接地連接可能導(dǎo)致信號(hào)不穩(wěn)定,從而引發(fā)通信錯(cuò)誤。 1.2 檢查總線線纜 檢查SDA和SCL線是否正
    的頭像 發(fā)表于 01-17 15:20 ?2311次閱讀

    I2C總線應(yīng)用實(shí)例分析

    在現(xiàn)代電子系統(tǒng)中,I2C總線因其簡(jiǎn)單、靈活和高效的特點(diǎn)而被廣泛應(yīng)用于各種設(shè)備之間的通信。 I2C總線概述 I2C
    的頭像 發(fā)表于 01-17 15:09 ?742次閱讀

    I2C總線與SPI總線的比較

    在現(xiàn)代電子系統(tǒng)中,微控制器與各種外設(shè)之間的通信是必不可少的。I2C和SPI是兩種流行的串行通信協(xié)議,它們各自具有獨(dú)特的特點(diǎn)和應(yīng)用場(chǎng)景。 I2C總線 I2C是一種多主機(jī)、多從機(jī)的同步通信
    的頭像 發(fā)表于 01-17 15:08 ?934次閱讀

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

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

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

    時(shí)一直保持高電平狀態(tài),稱為上拉電阻。總線的上拉電阻各有不同作用,如I2C的上拉電阻是由I2C端口內(nèi)部結(jié)構(gòu)決定的,而RS485和CAN總線的上
    的頭像 發(fā)表于 12-27 11:34 ?1840次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>總線</b>上拉電阻阻值如何確定?

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

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

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

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

    I2C協(xié)議的基礎(chǔ)知識(shí)

    本文從I2C協(xié)議的概述開(kāi)始,描述協(xié)議的歷史、不同速度模式、物理層和數(shù)據(jù)幀結(jié)構(gòu),最后介紹I2C混合電壓系統(tǒng)中電平兼容性以及上拉電阻大小計(jì)算。
    的頭像 發(fā)表于 10-22 15:51 ?2168次閱讀
    <b class='flag-5'>I2C</b>協(xié)議的<b class='flag-5'>基礎(chǔ)知識(shí)</b>

    詳解I2C總線與SPI總線的區(qū)別

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

    了解I2C總線

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