基于NiosII的I2C總線接口的實現_第1頁
基于NiosII的I2C總線接口的實現_第2頁
基于NiosII的I2C總線接口的實現_第3頁
基于NiosII的I2C總線接口的實現_第4頁
基于NiosII的I2C總線接口的實現_第5頁
已閱讀5頁,還剩2頁未讀, 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于Nios II的I²C總線接口的實現0引言 I²C(Inter-Integrated Circuit)總線是一種由Phil-ips公司開發的兩線式串行總線,用于連接微控制器及其外圍設備。由于I²C總線僅用兩根信號線,并支持多主控工作方式,所以I²C總線在電子產品設備中應用非常普遍。文獻1使用Nios的PIO接口模擬I²C時序完成對接口芯片的讀寫,而目前基于Nios的IP核越發豐富。基于此,本文使用免費的IP核-I²C-Master Core,實現了對I²C接口芯片的讀寫操作,擴充了一種新的設計方法。本文首先介紹了I

2、78;C總線結構和工作原理,然后詳細說明了基于Nios的I²C-Master Core的使用方法,最后給出了C語言的編程代碼。1 I²C總線基本原理I²C總線是由數據線SDA和時鐘SCL構成的串行總線,可發送和接收數據。在CPU與被控IC之間、進行雙向傳送,最高傳送速度100 kbits。I²C總線在傳送數據的過程中共有4種基本類型信號,分別是:開始信號、數據傳輸信號、應答信號和結束信號。a)開始信號:SCL為高電平時,SDA由高電平向低電平跳變,開始傳送數據。所有的命令都必須在開始條件以后進行。b)結束信號:SCL為低電平時,SDA由低電平向高電平跳變

3、,結束傳送數據。所有的操作都必須在停止條件以前結束??偩€開始和停止數據傳送的時序如圖1所示。c)數據傳輸信號:在開始條件以后,時鐘信號SCL的高電平周期期問,當數據線穩定時,數據線SDA的狀態表示數據有效,即數據可以被讀走,開始進行讀操作。在時鐘信號SCL的低電平周期期間,數據線上數據才允許改變。每位數據需要一個時鐘脈沖。I²C總線的數據位傳送時序如圖2所示。 d)應答信號:接收數據的從器件收到8 bit數據后,向發送數據的主控器件發出特定的低電平脈沖,表示已收到數據。這要求主器件必須產生一個與確認位相應的額外時鐘脈沖(第9個脈沖)。若主控器件確認失敗,主控器件必須發送一個數據結束信

4、號給從器件。這時從器件必須使SDA線保持高電平,使主控器件能產生停止條件。總線的應答信號時序見圖3。2 I²C接口芯片AT24C0102工作原理AT24CXX系列芯片是采用I²C總線標準的常用的串行EEROM芯片。本文以AT24C02為例介紹。AT24C02具有256×8(2 k)bit的存儲容量,即總共32頁,每頁有8字節的容量。每次寫入數據是從主器件發送來的片內選擇地址開始寫人,如果寫到頁末尾,主器件還在繼續發送的話,不會自動轉到下一頁,而是從該頁的頭地址開始繼續寫入,覆蓋該頁的原有數據,而造成數據丟失。AT24C02工作于從器件方式,它的地址由外圍的3個引腳

5、A2、A1、A0決定,如圖4所示。在I²C總線上總共可以連接8個AT24C02接口芯片,每個器件硬件地址與控制寄存器的地址內容保持一致,就能夠自由地與主控器件進行數據傳輸。 1)器件字節寫操作 在字節寫模式下,發送器件寫控制字,控制字包括4位固定器件碼,3位片選碼,以及一位低電平的寫控制位。主器件在收到從器件產生應答信號后,主器件發送一個8位字節地址寫入AT24C02。主器件在收到從器件的另一個應答信號后,再發送數據到被尋址的存儲單元。AT24C02再次應答,并在主器件產生停止信號后開始內部數據的擦寫,在內部擦寫過程中,AT24C02不再應答主器件的任何請求。時序見圖5。2)器件隨機

6、地址讀操作 對AT24C02讀操作的初始化方式和寫操作時一樣,僅把RW位置為1。圖6所示為AT24C02隨機地址讀時序圖。隨機讀操作允許主器件對寄存器的任意字節進行讀操作,主器件首先通過發送起始信號、從器件地址和它想讀取的字節數據的地址執行一個偽寫操作。在AT24C02應答之后,主器件重新發送起始信號和從器件地址,此時RW位置1,AT24C02響應并發送應答信號,然后輸出所要求的一個8位字節數據,主器件不發送應答信號但產生一個停止信號。3 I²C-Master Core工作原理 基于Nios的IP核應用非常簡便,因此越發受到青睞。Altera公司已經提供了一些通用的IP核可供使用,但

7、沒有提供I²C核。文獻3提供了免費的I²C-Master Core,經筆者的應用與長時間測試,證明該Mas-ter Core使用方便可靠,工作穩定。該Master Core的內部結構如圖7所示,主要由時鐘發生器、字節命令控制器、比特命令發生器和數據移位寄存器4個模塊組成。其他模塊是一些相關接口和臨時數據存儲器。 時鐘發生器主要是產生SCL信號,該時鐘的頻率可由預分頻寄存器設置,控制子計算公式如下:例如:SCL頻率為100kHz,Nios工作頻率為50 MHz,則預分頻=99,PRERlo=99,PRERhi=0。字節命令控制器在字節級連接命令寄存器、狀態寄存器和比

8、特命令控制器。通過將表2所示命令寄存器相應的比特位置1,可以產生I²C接口的開始、結束、確認等信號,以及讀寫控制。這些有效控制通過字節命令控制器轉送到比特命令控制器,使其發生作用,在信號產生后,這些比特位自動清0。 Nios向發送寄存器寫數據實現數據輸出,讀接收寄存器獲取從器件輸出的數據。數據的讀寫是否完成可通過中斷或查詢方式得知。如采用中斷方式,狀態寄存器中的IF狀態位置1;如采用查詢方式,數據處理過程中,狀態位TIP置1,處理完畢后置1。4應用實例筆者在NiosIDE7.1環境下編寫了使用該Mas-ter Core的C語言代碼,現把部分主程序代碼列出。1)IP-Master Core初始化完成對預分頻器的設置,確定SCL時鐘頻率;控制寄存器中I²C-Master Core使能位置1,使其工作。2)查詢確認信號數據收發是否完成,通過查詢TIP狀態位來確定。3)寫字節操作單字節寫入按圖5操作流程:4)隨即地址讀操作隨即地址讀字節按圖6流程操作:以上是使用I²C-Master Core的關鍵代碼,若向地址0xS0寫入0x5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論