I2C總線驅動在嵌入式系統中的兩種實現

2020-11-29 電子產品世界

1 引 言

I2C總線(Inter-IC Bus)是一種通用的串行總線,是用於IC器件之間連接的二線制總線。他通過串行數據線(Serial Data Lines,SDL)及串行時鐘線(Serial ClockLine,SCL)兩線在連接到總線上的器件之間傳送信息,並根據地址識別每個器件。一個或多個微控制器以及外圍器件可以通過I2C總線接口非常方便的連接在一起構成系統。這種總線結構的連線和連接引腳少,器件間總線簡單。結構緊湊,因此其構成系統的成本較低;並且在總線上增加器件不會影響系統的正常工作,所有的I。C器件共用一套總線,因此其系統修改和可擴展性好。即使有不同時鐘速度的器件連接到總線上,時間同步機制也能夠很方便地確定總線時鐘,因此在嵌入式系統中得到了廣泛的應用。 2 I2C總線原理

2.1 I2C工作原理

I2C總線是由數據線SDA和時鐘線SCL構成的串行總線,可發送和接收數據。每個連接到總線的器件都可以通過惟一的地址與主機通訊,主機可以作為主機發送器或主機接收器。他是一個真正的多主機總線,如果兩個或更多主機同時初始化,數據傳輸可以通過衝突檢測和仲裁防止數據被破壞。串行的8位雙向數據傳輸位速率在標準模式下可達100 kb/s,快速模式下可達400 kb/s,高速模式下可達3.4 Mb/s。連接到相同總線的IC數量只受到總線的最大電容400 pF限制。

I2C總線在傳送數據過程中共有3種特殊的電平變換情況,他們分別是:起始(start)、停止(stop)和響應(aek)。

當SCL為高電平時,SDA由高電平向低電平跳變,這個表示起始條件;當SCL是高電平時,SDA線由低電平向高電平跳變表示停止條件。起始和停止條件一般由主機產生,總線在起始條件後被認為處於忙的狀態,在停止條件的某段時間後總線被認為再次處於空閒狀態。

響應信號是指從機在接收到8b數據後,向主機發出特定的低電平脈衝,表示已收到數據。在響應的時鐘脈衝期間,從機必須將SDA線拉低使他在這個時鐘脈衝的高電平期間保持穩定的低電平,主機收到應答信號後,根據實際情況做出是否繼續傳遞信號的判斷。若未收到應答信號,則判斷為從機出現故障。

2.2操作時序

I2C總線運用主/從雙向通訊。主機和從機都可以工作於接收和發送狀態。總線必須由主機(通常為微控制器)控制,主機產生串行時鐘(SCL)控制總線的傳輸方向,並產生起始和停止條件。SDA線上的數據狀態僅在SCL為低電平的期間才能改變,SCL為高電平的期間,SDA狀態的改變被用來表示起始和停止條件。具體時序見圖1。

3嵌入式系統中的I2C驅動的兩種實現

3.1 系統自帶I2C寄存器的實現

下面以ARM S3C4510B為例,給出基於寄存器方式的I2C驅動實現。S3C4510B內含一個I2C總線主控器,可方便地與各種帶有I2C接口的器件相連。I2C總線控制器有3個特殊功能寄存器:一個控制狀態寄存器(I2CON),一個預分頻寄存器(I2CPS)和一個移位緩衝寄存器(I2CBUF)。通過配置這些寄存器,可實現正確的I2C數據傳輸時序。下面分別給出讀、寫實現的實例。讀操作:

通過對控制狀態寄存器(I2CC()N)寫入OxlO發送啟動碼初始化串行I2C總線,然後總線控制器發送7位的從設備地址並通過移位緩衝寄存器發送讀/寫控制位,接收器則在主控器的SCL脈衝期間通過將SDA線從高電平下拉到低電平作為應答信號。

寫數據的操作 先設置控制狀態寄存器的BF位(0x01),然後寫入數據到移位緩衝寄存器。移位緩衝寄存器無論是被讀還是寫,BF位均會自動清零。若要進行連續的讀/寫操作,必須設置控制狀態寄存器的ACK位(0x08)。

讀數據的操作 在設置控制狀態寄存器的BF位以後,可以進行讀數據的操作,當讀/寫完最後一個字節時,可對ACK位進行復位通知發送器/接收器讀數據操作結束。

在讀/寫操作完成以後,可通過對I2CCON寫入0x20生成結束碼。


相關焦點

  • Linux下I2C總線EEPROM驅動程序設計方法
    3 Linux中I2C總線驅動體系結構   在Linux系統中,對於一個給定的I2C總線硬體配置系統,I2C總線驅動程序體系結構由I2C總線驅動和I2C設備驅動組成。其中I2C總線驅動包括一個具體的控制器驅動和I2C總線的算法驅動。一個算法驅動適用於一類總線控制器。
  • 嵌入式Win CE中CAN總線控制器的驅動設計與實現
    嵌入式Win CE中CAN總線控制器的驅動設計與實現 秩名 發表於 2012-05-17 10:18:10   0 引 言   近年來,由於消費電子、
  • 實戰經驗吐血推薦:怎樣在Linux環境下輕鬆實現基於I2C總線的EEPROM...
    在主從通信中,可有多個I2C總線器件同時接到I2C總線上,通過地址來識別通信對象。筆者在開發基於MPC8250的嵌入式Linux系統的過程中發現I2C總線在嵌入式系統中應用廣泛,I2C總線控制器的類型比較多,對系統提供的操作接口差別也很大。與I2C總線相連的從設備主要有微控制器、EEPROM、實時時鐘、A/D轉換器等。
  • 救活你的I2C總線故障方案出爐了!
    本文主要針對 i2c 設備,講解如何解決 i2c 設備主機與從機直接無法正常數據交互的問題,側重點是針對硬體設計不太合理、i2c 設備設計不標準導致總線故障的情況,並且通過分析現象,提出解決方案。對於在設備初始化中,沒有設置相應的寄存器或者發送命令,而導致的無法獲取想要的數據情況,不作詳細介紹。
  • 基於嵌入式WinCE的CAN總線控制器驅動設計
    嵌入式作業系統(:Real-time Embedded OperatingSystem,RTOs或EOs)作為一種實時的、支持嵌入式系統應用的作業系統軟體,成為嵌入式系統(包括硬、軟體系統)極為重要的組成部分,通常包括與硬體相關的底層驅動軟體、系統內核、設備驅動接口、通信協議、圖形界面、標準化瀏覽器Browser等。
  • 在嵌入式網關中CAN總線有什麼應用?
    在嵌入式網關中CAN總線有什麼應用?而為了使這一趨勢得以實現,連接Internet網絡的嵌入式網關是其關鍵。 從現實來看,乙太網擴展了現有的系統,但是現場總線不可能完全被工業乙太網替代,後者的潛力巨大,其應用領域一定會不斷擴大。所以,將現場總線與乙太網結合,從而實現底層生產與上層管理的緊密集成,已經成為一種趨勢。
  • 嵌入式系統常用接口規範
    一、引言本文引用地址:http://www.eepw.com.cn/article/201610/305641.htm嵌入式系統的硬體除了核心的微處理器之外就是外圍器件和接口。接口技術在嵌入式系統設計處於如此重要的位置,是嵌入式系統設計師硬體部分的重要考試範圍。
  • 基於Linux系統的多種串行總線統一接口的實現
    統一接口的應用層API與底層的具體總線操作形式無關,而且便於應用系統的升級和移植。文中給出了一種多種串行總線統一接口的實現方法,並以ARM9為平臺,以I2C、1-Wire、SPI為例,驗證了新方法的可行性。
  • 飛利浦推出業界首款快速模式I2C總線控制器
    通過擴展I2C在計算、電信和聯網系統應用方面作為維護和控制總線的用途,該晶片具有更高的速度和更低的電壓, 使亞太區的設計師能夠建造目前市場上最靈活、性能最高的I²C系統,並通過使用飛利浦半導體80C51微控制器軟體而縮短開發時間。
  • 嵌入式系統USB接口的虛擬示波器設計
    嵌入式系統的發展使得基於嵌入式微處理器和實時作業系統的嵌入式虛擬儀器能夠滿足惡劣工作環境下的便攜虛擬儀器的需要。同時,基於USB總線的儀器設備克服了現有PC總線虛擬儀器的不足,可滿足自動化工業測量的要求,特別適合現場信號的測試。
  • 淺談I2C總線,I2C接口和SPI接口的作用相同
    I2C(Inter Integrated Circuit,內部集成電路)總線是價格低廉卻很有效的用以互連小規模嵌入式系統內的外設的網絡。I2C 總線有時候也叫作 IIC,它已有20多年的歷史了。I2C 接口和 SPI 接口的作用相同,但二者的使用方法有些不同。  I2C 總線用兩根線來連接多支路總線中的多個設備。這種總線是雙向、低速的,並與公共時鐘同步。可以直接將一個設備接到 I2C 總線上或是從該總線上取下,而不會影響其他設備。
  • 樹莓派怎樣連接多個I2C設備
    i2c總線可以處理多個設備,但是它們應具有不同的i2c地址。有些i2c設備具有用於設置其他i2c地址的跳線,但許多設備卻沒有。在這種情況下,您可以使用i2c多路復用器(硬體)來旋轉i2c SDA(數據)和SCL(時鐘),也可以創建其他i2c總線或更多。
  • 嵌入式PROFIBUS現場總線通信接口設計
    0引言 目前國內對自動化產品(電器、儀表、驅動裝置等)提出PROFIBUS通信功能要 求,主要來源於: (1)國外生產設備及技術的引進,特別是從歐洲引進的成套設備通常採用PROFIBUS現場總線 ,因此對國內配套產品提出了現場總線PROFIBUS通信功能的技術要求; (2)國內自動化系統廠家比較成功的、面向行業的控制系統
  • 嵌入式中常用的總線與接口有哪一些
    嵌入式中常用的總線與接口有哪一些 中國電子網 發表於 2019-09-27 16:28:38 任何一個微處理器都要與一定數量的部件和外圍設備連接,但如果將各部件和每一種外圍設備都分別用一組線路與
  • 詳解I2C總線鍵盤電路以及驅動程序設計
    >以及驅動程序的設計。二、MAX7348MAX7348 是美國MAXIM 公司生產的2 線接口、低EMI 鍵盤開關和發聲控制器,可監控多達40 個按鍵,可對按鍵去抖並保存在FIFO 中,去抖時間用戶可在9 ~ 40ms 之間任意設置,MAX7348 自帶的音調發生器在控制器的作用下可自動發出按鍵聲和報警聲,在發聲期間,輸出還可以設置為高電平或低電平,以驅動電子發聲器、繼電器或指示燈。
  • 實現了多鍵齊按和重複按鍵的嵌入式系統鍵盤驅動設計
    實現了多鍵齊按和重複按鍵的嵌入式系統鍵盤驅動設計 工程師黃明星 發表於 2018-06-26 10:39:00 1 鍵盤驅動程序的設計 隨著電子信息技術飛速發展,嵌入式系統構成的各種設備得到了廣泛的應用, 嵌入式
  • 基於嵌入式Linux的語音識別系統硬軟體設計
    在嵌入式Linux作業系統下,運用多進程機制完成了對語音識別晶片、超聲波測距和雲臺的控制,並將語音識別技術應用於多角度超聲波測距系統中。通過測試,系統可以通過識別語音指令控制測量方向,無需手動幹預,最後將測量結果通過語音播放出來。
  • 嵌入式系統歷史及發展趨勢
    後來人們可以不必從選擇晶片開始來設計一臺專用的嵌入式計算機,而是只要選擇各功能模塊,就能夠組建一臺專用計算機系統。用戶和開發者都希望從不同的廠家選購最適合的 OEM產品,插入外購或自製的機箱中就能形成新的系統,因此希望插件相互兼容,從而導致了工業控制微機系統總線的誕生。1976年Intel公司推出 Multibus,1983年擴展為帶寬達40MB/s的MultibusⅡ。
  • CAN總線—PROFIBUS-DP總線網關的實現方法
    工廠在擴建,改建等過程中很可能會選用與原先現場設備總線標準不同的產品,這些設備由於使用不同的現場總線,彼此間不能實現數據共享,於是就降低了設備間功能互補的優點。因此針對多種總線共存的客觀事實,探討如何解決不同現場總線系統的互聯有著重要的現實意義。
  • I2C總線概述及時序總結
    SCL:上升沿將數據輸入到每個EEPROM器件中;下降沿驅動EEPROM器件輸出數據。(邊沿觸發)SDA:雙向數據線,為OD門,與其它任意數量的OD與OC門成線與關係。2)引腳在輸出信號的同時還將引腳上的電平進行檢測,檢測是否與剛才輸出一致,為時鐘同步和總線仲裁提供了硬體基礎。三. 主設備與從設備系統中的所有外圍器件都具有一個7位的從器件專用地址碼,其中高4位為器件類型,由生產廠家制定,低3位為器件引腳定義地址,由使用者定義。