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

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

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

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

基于FPGA的I2C通信協(xié)議設(shè)計(jì)

友晶FPGA ? 來源:友晶FPGA ? 2025-12-26 09:44 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1 I2C簡介

I2C(Inter-Integrated Circuit)是一種由飛利浦半導(dǎo)體(現(xiàn)為恩智浦半導(dǎo)體)在1980年代初開發(fā)的同步、串行、半雙工的總線型通信協(xié)議。主要用于近距離(同一塊印刷電路板(PCB)上的集成電路(IC)之間)、低速(注:標(biāo)準(zhǔn)模式100K,快速模式400K,高速模式3.4M)的芯片之間的通信。

I2C總線有兩根信號(hào)線,一根數(shù)據(jù)線SDA用于收發(fā)數(shù)據(jù),一根時(shí)鐘線SCL用于通信雙方時(shí)鐘的同步。I2C總線是一種多主機(jī)總線,連接在I2C總線上的器件分為主機(jī)和從機(jī),主機(jī)有權(quán)發(fā)起和結(jié)束一次通信,而從機(jī)只能被主機(jī)呼叫。每個(gè)連接到I2C總線上的器件都有一個(gè)唯一的地址(7-bit)。主機(jī)通過I2C設(shè)備的地址來選擇從機(jī)。

97eb9964-dae8-11f0-8c8f-92fbcf53809c.png

2 I2C的三態(tài)門電路

信息雙向傳輸(方向?yàn)閕nout)的時(shí)候需要使用三態(tài)門電路。FPGA內(nèi)部三態(tài)門結(jié)構(gòu):

984718e8-dae8-11f0-8c8f-92fbcf53809c.png

當(dāng)sda_out為1時(shí),sda被設(shè)置為高阻態(tài)(1'bz),即此時(shí)sda由外部設(shè)備(或上拉電阻)控制。當(dāng)sda_out為0時(shí),sda被驅(qū)動(dòng)為0。這種設(shè)計(jì)符合I2C協(xié)議的開漏輸出特性:I2C設(shè)備只能將數(shù)據(jù)線拉低(輸出0)或釋放(輸出高阻,由上拉電阻拉高)。因此,這個(gè)三態(tài)設(shè)置實(shí)現(xiàn)了I2C數(shù)據(jù)線的雙向通信:既可以輸出數(shù)據(jù)(拉低),也可以輸入數(shù)據(jù)(釋放總線并讀取)。具體的Verilog實(shí)現(xiàn)如下:

989c7edc-dae8-11f0-8c8f-92fbcf53809c.png

所以FPGA和外設(shè)之間要有個(gè)上拉電阻,如下是DE10-Nano的相關(guān)電路圖:

98f0b182-dae8-11f0-8c8f-92fbcf53809c.png

3 I2C協(xié)議的開始與結(jié)束信號(hào)

開始條件為當(dāng)SCLK(時(shí)鐘腳)保持在高電平時(shí), SDIN(數(shù)據(jù)腳)從高到低,接著會(huì)開始進(jìn)行地址與數(shù)據(jù)傳輸;停止的條件是被定義成在 SCLK 在高電平時(shí), SDIN 有一個(gè)低到高轉(zhuǎn)換:

99446d54-dae8-11f0-8c8f-92fbcf53809c.png

4 I2C協(xié)議的字節(jié)傳送與應(yīng)答

I2C總線通信時(shí)每個(gè)字節(jié)為8位長度,數(shù)據(jù)傳送時(shí),先傳送最高位,后傳送低位,發(fā)送器發(fā)送完一個(gè)字節(jié)數(shù)據(jù)后,接收器必須發(fā)送1位應(yīng)答位(應(yīng)答:低電平"0";非應(yīng)答:沒接收到數(shù)據(jù)或者接收器不想應(yīng)答,就保持高電平"1")來回應(yīng)發(fā)送器,即一幀共有9位。

9997e9d4-dae8-11f0-8c8f-92fbcf53809c.png

5 I2C協(xié)議的同步信號(hào)

I2C總線在進(jìn)行數(shù)據(jù)傳送時(shí):

時(shí)鐘線SCL為低電平時(shí),發(fā)送器向數(shù)據(jù)線上發(fā)送1-bit數(shù)據(jù),在此期間數(shù)據(jù)線上的信號(hào)允許變化;

時(shí)鐘線SCL為高電平時(shí),接收器從數(shù)據(jù)線上讀取1-bit數(shù)據(jù),在此期間數(shù)據(jù)線上的信號(hào)不允許發(fā)生變化,必須保持穩(wěn)定。

99edb562-dae8-11f0-8c8f-92fbcf53809c.png

6 I2C協(xié)議的寫操作

主機(jī)先產(chǎn)生一個(gè)起始信號(hào)ST,再由主機(jī)發(fā)送出欲控制的器件地址Device Address[6:0],再加上 1 位的 W/R 讀寫位(設(shè)定為 0)。從機(jī)收到主機(jī)發(fā)送出8 位信號(hào)后,會(huì)回應(yīng)一個(gè) ACK 信號(hào);接著送出寄存器地址Register Address[7:0](有的寄存器地址是16位,則可分兩次發(fā)送),從機(jī)收到主機(jī)發(fā)送出8 位信號(hào)后,會(huì)回應(yīng)一個(gè) ACK 信號(hào);接著送出 8 位數(shù)據(jù) Data[7:0],從機(jī)收到主機(jī)發(fā)送出8 位信號(hào)后,會(huì)回應(yīng)一個(gè)ACK 信號(hào)。傳輸完成后,會(huì)從主機(jī)送出停止信號(hào)SP。則完成了將數(shù)據(jù) Data[7:0] 寫入 Device Address[6:0] 設(shè)備中的 Register Address[7:0] 寄存器中:

9a43e5cc-dae8-11f0-8c8f-92fbcf53809c.png

7 I2C協(xié)議的讀操作

主機(jī)先產(chǎn)生一個(gè)起始信號(hào)ST,再由主機(jī)發(fā)送出欲控制的器件地址Device Address[6:0],再加上 1 位的 W/R 讀寫位(設(shè)定為 0)。從機(jī)收到主機(jī)發(fā)送出8 位信號(hào)后,會(huì)回應(yīng)一個(gè) ACK 信號(hào);接著送出寄存器地址Register Address[7:0],從機(jī)收到主機(jī)發(fā)送出8 位信號(hào)后,會(huì)回應(yīng)一個(gè) ACK 信號(hào);接著主機(jī)重新送出開始信號(hào)SR(restart),再由主機(jī)發(fā)送出欲控制的器件地址DeviceAddress[6:0],再加上 1 位的 W/R 讀寫位(設(shè)定為 1)。從機(jī)收到主機(jī)發(fā)送出8 位信號(hào)后,會(huì)回應(yīng) 一個(gè) ACK 信號(hào)。接著讀取 8 位數(shù)據(jù) Data[7:0],主機(jī)收到8 位信號(hào)后發(fā)送一個(gè)NACK給從機(jī),通知從機(jī)主機(jī)不再需要更多的數(shù)據(jù),最后從主機(jī)送出停止信號(hào)SP:

9a99bad8-dae8-11f0-8c8f-92fbcf53809c.png

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

    關(guān)注

    1660

    文章

    22406

    瀏覽量

    636073
  • 通信協(xié)議
    +關(guān)注

    關(guān)注

    28

    文章

    1092

    瀏覽量

    42139
  • 接收器
    +關(guān)注

    關(guān)注

    15

    文章

    2644

    瀏覽量

    77102
  • I2C總線
    +關(guān)注

    關(guān)注

    8

    文章

    417

    瀏覽量

    63351

原文標(biāo)題:4-DE10-Nano的HDMI方塊移動(dòng)案例——I2C通信協(xié)議

文章出處:【微信號(hào):友晶FPGA,微信公眾號(hào):友晶FPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    3分鐘理解通信協(xié)議I2C總線 #通信協(xié)議

    通信協(xié)議I2CI2C總線總線/接口技術(shù)
    硬聲課堂
    發(fā)布于 :2021年10月18日 10:39:12

    i2c通信協(xié)議

    1.1 i2c通信協(xié)議通信協(xié)議:用來實(shí)現(xiàn)數(shù)據(jù)傳輸。i2c物理總線:SCL(時(shí)鐘線) SDA(數(shù)據(jù)線)i2c
    發(fā)表于 03-06 16:15

    I2C通信協(xié)議硬軟件

    目錄12C通信協(xié)議硬軟件I2CAHT20測溫濕度參考12C通信協(xié)議I2C
    發(fā)表于 08-23 07:42

    I2C通信協(xié)議簡介

    一.I2C通信協(xié)議簡介1.物理層I2C物理層有以下特點(diǎn):I2C是支持多設(shè)備的總線,支持多個(gè)通訊主機(jī)、多個(gè)通訊從機(jī)I2C使用兩條總線線路,SD
    發(fā)表于 01-13 07:20

    I2C通信協(xié)議的原理是什么

    I2C通信協(xié)議I2C通信原理I2C通信原理:I2C
    發(fā)表于 02-17 07:16

    I2C總線通信協(xié)議的相關(guān)資料下載

    基于I2C總線通信協(xié)議的溫度采集實(shí)驗(yàn)(基于AHT20) I2C總線通信協(xié)議簡介 AHT20簡介 一.項(xiàng)目說明1)實(shí)戰(zhàn)目標(biāo):2)實(shí)戰(zhàn)元件: 二
    發(fā)表于 02-22 07:37

    SPI、I2C、UART串行總線協(xié)議

    串口通訊通信協(xié)議UART,以及常用外設(shè)通信協(xié)議 SPI、I2C的介紹與他們之間的區(qū)別
    發(fā)表于 11-30 11:28 ?96次下載

    實(shí)驗(yàn)八-I2C通信協(xié)議

    實(shí)驗(yàn)八-I2C通信協(xié)議,感興趣的可以瞧一瞧。
    發(fā)表于 09-22 16:42 ?2次下載

    I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)

    我最近剛做完I2C通信協(xié)議的編寫與調(diào)試,下面介紹一下我從一開始理解夏老師的程序,修改程序,直到下板調(diào)試整個(gè)的學(xué)習(xí)過程,希望對(duì)大家學(xué)習(xí) I2C 有一定的幫助。一、 分析源代碼學(xué)習(xí) I2C
    發(fā)表于 04-28 08:00 ?22次下載
    <b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>應(yīng)該如何學(xué)習(xí)

    什么是I2C通信協(xié)議?

    在本教程中,我們將學(xué)習(xí)如何在Raspberry Pi Pico中使用I2C引腳并遍歷I2C掃描器代碼。
    的頭像 發(fā)表于 04-26 15:08 ?8987次閱讀
    什么是<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>?

    MPU6050的I2C通信協(xié)議

    不同硬件有不同的I2C協(xié)議
    發(fā)表于 12-06 12:21 ?3次下載
    MPU6050的<b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>

    i2c和spi通信協(xié)議的概念與區(qū)別 I2C/SPI總線通信協(xié)議你搞懂沒有

    計(jì)劃第四期:硬聲UP主@硬件研究獅 從工程實(shí)踐的角度,給大家拆解I2C與SPI。 ? ? 四分鐘搞定通信協(xié)議的分類 簡介: 同步通信與異步通信,全雙工
    的頭像 發(fā)表于 06-23 17:19 ?5042次閱讀

    I2C通信協(xié)議:了解I2C Primer、 PMBus和SMBus

    I2C,即Inter-Integrated Circuit,是一種常用的串行通信協(xié)議,用于在器件之間——特別是兩個(gè)或兩個(gè)以上不同電路之間建立通信。I2C Primer是最常用的
    的頭像 發(fā)表于 06-15 15:29 ?8424次閱讀
    <b class='flag-5'>I2C</b><b class='flag-5'>通信協(xié)議</b>:了解<b class='flag-5'>I2C</b> Primer、 PMBus和SMBus

    SPI和I2C通信協(xié)議:應(yīng)用與區(qū)別

    本文深入解析了SPI和I2C這兩種通信協(xié)議的特點(diǎn)、工作原理和應(yīng)用場景。SPI適用于高速數(shù)據(jù)傳輸,常用于存儲(chǔ)器芯片和顯示器驅(qū)動(dòng)等領(lǐng)域;I2C適用于低速控制和傳感器數(shù)據(jù)傳輸,常用于溫度傳感器和ADC
    的頭像 發(fā)表于 04-22 16:45 ?3702次閱讀

    簡單認(rèn)識(shí)I2C通信協(xié)議

    I2C(Inter-Integrated Circuit)通信協(xié)議是由飛利浦公司(現(xiàn)為恩智浦半導(dǎo)體)開發(fā)的一種簡單、雙向二線制同步串行總線協(xié)議。自1982年發(fā)布以來,I2C
    的頭像 發(fā)表于 07-25 18:06 ?3719次閱讀