IIC 總線接口詳細介紹

1. 概述

IIC = Inter Integrated-Circuit 總線是PHLIPS公司推出的一種串行總線,是具備多主機系統所需的包括總線裁決和高低速器件同步功能的高性能串行總線,它支持多主控(multimastering),其中任何能夠進行發送和接收的設備都可以成為主總線。I2C總線只有兩根雙向信號線。一根是數據線SDA,另一根是時鐘線SCL,如下圖:

2. 硬件結構

I2C總線通過上拉電阻(大小由速度和容性負載決定一般在3.3K-10K之間)接正電源。當總線空閑時,兩根線均為高電平。連到總線上的任一器件輸出的低電平,都將使總線的信號變低,即各器件的SDA及SCL都是線“與”關系。如下圖:

? ? ? ? ? ? ??

每個連接到總線的設備都有唯一的地址,地址為7位,前四位鑒定器件類別,一般是固定的;后三位由器件本身管腳A0、A1、A2可以編程,故同類器件一般最多掛8個。

工作速率如下:

常見的有標準模式100Kbit/s和快速模式400Kbit/s兩種,增強快速模式1Mbit/s和高速模式3.4Mbit/s,極速模式單向數據傳輸速率可達5Mbit/s。

可以實現半雙工通信。基于I2C衍生出來的標準有SMBus、PMBus、IPMI、DDC和ATCA等。

?3. 總線尋址

總線明確規定,采用7位尋址字節,D7~D1位組成從機的地址。

D0位是數據傳送方向位,為“0”時表示寫數據,為“1”時表示讀數據。

主機發送地址時,總線上的每個從機都將這7位地址碼和自己的地址碼比較,如果相同則認為自己被主機尋址,根據讀寫位確認為發送器或者接收器。

部分規格書中說明地址是8位則分讀地址和寫地址,即增加了讀寫位在里面:

極少數情況下有10位尋址的情況;

IIC總線保留地址表如下:

? 0000 0000 為通用廣播地址。

?4. 數據傳輸

  • 數據位有效性規定

I2C總線進行數據傳送時,時鐘信號為高電平期間,數據線上的數據必須保持穩定,只有時鐘信號為低電平時,數據線上的電平才允許變化。如下圖:

  • 起始信號和終止信號

SCL線為高電平時,SDA線由高變低表示起始信號;

SCL線為高電平時,SDA線由低變高表示終止信號。

起始信號和終止信號均是主機發出;

起始信號產生后,總線處于被占用狀態;

終止信號產生后,總線處于空閑狀態;

  • 數據傳送格式
  1. 字節傳送與應答

每一個字節必須保證是8位長度。數據傳送時,先傳送最高位(MSB),每一個被傳送的字節后面都必須跟隨一位應答位(即一幀共有9位)。如下圖:

由于某種原因從機不對主機尋址信號應答時(如從機正在進行實時性的處理工作而無法接收總線上的數據),它必須將數據線置于高電平,而由主機產生一個終止信號以結束總線的數據傳送;

如果從機對主機進行了應答,但在數據傳送一段時間后無法繼續接收更多的數據時,從機可以通過對無法接收的第一個數據字節的“非應答”通知主機,主機則應發出終止信號以結束數據的繼續傳送;

當主機接收數據時,它收到最后一個數據字節后,必須向從機發出一個結束傳送的信號。這個信號是由對從機的“非應答”來實現的。然后,從機釋放SDA線,以允許主機產生終止信號。

  1. 數據幀率格式

IIC總線上的數據包括地址信號和數據信號。在起始信號后必須傳送一個從機的地址(7位),第8位是數據的傳送方向即讀還是寫(R=1/W=0),每次數據傳送均是主機產生終止信號而結束。

????????????? 總線的一次數據傳輸,包括以下幾種組合:

  • 主機向從機發送數據,數據的傳送方向在整個傳送過程中不變:

?????????????? ???????????

  • 主機在第一個字節后,立即從從機讀數據:

?????????????? ???????

  • 在傳送過程中,需要改變讀寫方向時,起始信號和從機地址都得重新一次:

?????????????? ??????

?5. 注意事項

  • 所有器件的接口均是開漏結構,通過外接上拉電阻實現線與邏輯;
  • 總線上所有設備通過軟件尋址(7位或者10位不常見);
  • 每個字節傳送均是高位在前面MSB;
  • 如果從機需要延遲下一個數據字節的開始傳送時間,可以把SCL電平拉低并保持來強制主機進入等待狀態;
  • 總線最大電容值,一般為400pf,高速模式下為100pf;、
  • SLC一般情況下不會擁堵在低電平,如果出現這種現象,有硬件復位管腳的話,推薦使用硬件復位;沒有的話,推薦使用重新上電方式觸發上電復位電路;
  • SDA擁堵在低電平,主機應發送9個時鐘脈沖,那些將SDA拉低的設備在這9個時鐘周期內應釋放總線。如果沒有的話,則需要通過硬件復位或重新上電的方式清除擁堵。

歡迎加入硬件QQ群:101 808 3751,一起討論硬件問題,分享調試心得,共同成長。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/253344.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/253344.shtml
英文地址,請注明出處:http://en.pswp.cn/news/253344.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

DMA數據傳輸過程

DMA方式具有如下特點:1、 外部設備的輸入輸出請求直接發給主儲存器。主存儲器既可以被CPU訪問,也可以被外圍設備訪問。因此,在主存儲器中通常要有一個存儲管理部件來為各種訪問主存儲器的申請排隊,一般計算機系統把外圍設備的訪問…

Android JNI開發系列(二)HelloWorld

2019獨角獸企業重金招聘Python工程師標準>>> 入門HelloWorld 新建項目 Configure your new project部分選中 Include C Support 復選框 Next 正常填寫所有其他字段并完成向導接下來幾個部分 在向導的Customize C Support 部分,您可以使用謝列選項自定…

sublime text3安裝js提示的插件

今天安裝Sublime Text3的js插件,在網上查了很多資料,為了方便以后看,寫一個安裝插件的總結和方法。 要安裝js相關的插件,就要先安裝一個Package Control(插件管理器)的插件,通過這個插件再去安裝…

SPI接口詳細介紹

1. 概述 SPI Serial Peripheral Interface,是串行外圍設備接口,是一種高速,全雙工,同步的通信總線。常規只占用四根線,節約了芯片管腳,PCB的布局省空間。現在越來越多的芯片集成了這種通信協議&#xff0…

駐扎博客園

今天把之前hexo里的一些文章全部轉移到博客園了,之后就在博客園寫點東西,記錄一些生活的瑣事。為什么要移至博客園呢?其實很簡單,這邊可以和一些同意從事前端的小伙伴一起互動。技術還是需要多討論的,希望之后能多更新…

H.264 Profile、Level、Encoder三張簡圖

H.264有四種畫質級別,分別是BP、EP、MP、HP: 1、BP-Baseline Profile:基本畫質。支持I/P 幀,只支持無交錯(Progressive)和CAVLC;   2、EP-Extended profile:進階畫質。支持I/P/B/SP/SI 幀&…

require.js學習記錄

1、簡介 官方對requirejs的描述:RequireJS is a JavaScript file and module loader. It is optimized for in-browser use, but it can be used in other JavaScript environments, like Rhino and Node. Using a modular script loader like RequireJS will impro…

iOS-AFNetworking參數和多文件同時上傳【多文件上傳】

1. 前言 在項目開發中,我們經常需要上傳文件,例如:上傳圖片,上傳各種文件,而有時也需要將參數和多個文件一起上傳,不知道大家的項目中遇到了沒有,我在最近的項目中,就需要這樣的一個…

智能音箱 之 平臺方案簡介

智能音箱,被認為是物聯網時代的入口,在去年成為了各大廠商爭相投入的風口。在當今互聯網時代,它不僅僅是一臺單純的音樂播放器,在其背后支撐的 AI 技術才是整個產品的核心,也是各大公司覬覦物聯網入口的最根本原因。經…

Linux Kconfig及Makefile學習

內核源碼樹的目錄下都有兩個文檔 Kconfig (2.4版本是Config.in)和Makefile。分布到各目錄的Kconfig構成了一個分布式的內核配置數據庫,每個Kconfig分別描述了 所屬目錄源文檔相關的內核配置菜單。在內核配置make menuconfig時,從K…

Linux編程 23 shell編程(結構化條件判斷 命令if -then , if-then ... elif-then ...else,if test)...

一.概述 在上一篇里講到了shell腳本,shell按照命令在腳本中出現的順序依次進行處理,對于順序操作已經足夠了,但許多程序要求對shell腳本中的命令加入一些邏輯流程控制,這樣的命令通常叫做 結構化命令。 1.1 使用if - then語句 --最…

Scala-Spark digamma stackoverflow問題

這兩天在用spark做點擊率的貝葉斯平滑,參考雅虎的論文進行了一番嘗試。 先上代碼: 1 # click_count, show_count # this method takes time2 def do_smooth(data_list):3 import scipy.special as sp4 a, b, i 1.0, 1.0, 05 da, db a, b6 …

IIS接口詳細介紹

1. 概述 I2S Inter-IC Sound Integrated Interchip Sound IIS,是飛利浦在1986年定義(1996年修訂)的數字音頻傳輸標準,用于數字音頻數據在系統內器件之間傳輸,例如編解碼器CODEC、DSP、數字輸入/輸出接口、ADC、DAC…

UVA - 10934 Dropping water balloons(裝滿水的氣球)(dp)

題意:有k個氣球,n層樓,求出至少需要多少次實驗能確定氣球的硬度。氣球不會被實驗所“磨損”。 分析: 1、dp[i][j]表示第i個氣球,測試j次所能確定的最高樓層。 2、假設第i-1個氣球測試j-1次所確定的最高樓層是a, 若第i個…

繼承進階

先講一個例子&#xff1a; #老師有生日&#xff0c;怎么組合哪&#xff1f; class Birthday: # 生日def __init__(self,year,month,day):self.year yearself.month monthself.day dayclass Teacher: # 老師<br>def __init__(self,name,birth):self.name nameself.b…

PCM接口詳細介紹--TDM方式

1. 概述 PCM = Pulse Code Modulation 是通過等時間隔(即采樣率時鐘周期)采樣將模擬信號數字化的方法。圖為4 bit 采樣深度的PCM數據量化示意圖: PCM數字音頻接口,說明接口傳輸的音頻數據是通過PCM方式采樣得到的,區別于PDM形式;IIS傳輸的也是PCM類型數據,屬于其一個特…

網站同源策略

所謂"同源"指的是"三個相同"&#xff1a;協議&#xff0c;域名&#xff0c;端口。 舉例來說&#xff0c;http://www.example.com/dir/page.html這個網址&#xff0c;協議是http://&#xff0c;域名是www.example.com&#xff0c;端口是80&#xff08;默認端…

Kconfig文件結構(圖文)簡介

1 Kconfig和Makefile 毫不夸張地說&#xff0c;Kconfig和Makefile是我們瀏覽內核代碼時最為依仗的兩個文件。基本上&#xff0c;Linux 內核中每一個目錄下邊都會有一個Kconfig文件和一個Makefile文件。Kconfig和Makefile就好似一個城市的地圖&#xff0c;地圖引導我們去 認識一…

PDM接口介紹

1. 概述 PDM Pulse Density Modulation是一種用數字信號表示模擬信號的調制方法。 PDM則使用遠高于PCM采樣率的時鐘采樣調制模擬分量&#xff0c;只有1位輸出&#xff0c;要么為0&#xff0c;要么為1。因此通過PDM方式表示的數字音頻也被稱為Oversampled 1-bit Audio。相比P…

js正則學習分享

http://www.cnblogs.com/rubylouvre/archive/2010/03/09/1681222.htmlhttp://www.cnblogs.com/tylerdonet/p/4262251.html //正整數 /^[0-9]*[1-9][0-9]*$/; //負整數 /^-[0-9]*[1-9][0-9]*$/; //正浮點數 /^(([0-9]\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9])|([0-9]*[1…