中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 模擬技術(shù) > 設(shè)計(jì)應(yīng)用 > 基于Nios II的I2C總線(xiàn)接口的實(shí)現(xiàn)

        基于Nios II的I2C總線(xiàn)接口的實(shí)現(xiàn)

        作者:馬金嶺,劉桂敏,李洪波,李玉光 時(shí)間:2008-05-09 來(lái)源:《電子工程師》 收藏

          0引言

        本文引用地址:http://www.antipu.com.cn/article/82352.htm

          (Inter-Integrated Circuit)總線(xiàn)是一種由Phil-ips公司開(kāi)發(fā)的兩線(xiàn)式串行總線(xiàn),用于連接微控制器及其外圍設(shè)備。由于總線(xiàn)僅用兩根信號(hào)線(xiàn),并支持多主控工作方式,所以總線(xiàn)在電子產(chǎn)品設(shè)備中應(yīng)用非常普遍。文獻(xiàn)[1]使用Ⅱ的PIO接口模擬I2C時(shí)序完成對(duì)接口芯片的讀寫(xiě),而目前基于Ⅱ的IP核越發(fā)豐富。基于此,本文使用免費(fèi)的IP核--I2C-Master Core,實(shí)現(xiàn)了對(duì)I2C接口芯片的讀寫(xiě)操作,擴(kuò)充了一種新的設(shè)計(jì)方法。本文首先介紹了I2C總線(xiàn)結(jié)構(gòu)和工作原理,然后詳細(xì)說(shuō)明了基于Ⅱ的I2C-Master Core的使用方法,最后給出了的編程代碼。

          1 I2C總線(xiàn)基本原理

          I2C總線(xiàn)是由數(shù)據(jù)線(xiàn)SDA和時(shí)鐘SCL構(gòu)成的串行總線(xiàn),可發(fā)送和接收數(shù)據(jù)。在CPU與被控IC之間、進(jìn)行雙向傳送,最高傳送速度100 kbit/s。

          I2C總線(xiàn)在傳送數(shù)據(jù)的過(guò)程中共有4種基本類(lèi)型信號(hào),分別是:開(kāi)始信號(hào)、數(shù)據(jù)傳輸信號(hào)、應(yīng)答信號(hào)和結(jié)束信號(hào)。

          a)開(kāi)始信號(hào):SCL為高電平時(shí),SDA由高電平向低電平跳變,開(kāi)始傳送數(shù)據(jù)。所有的命令都必須在開(kāi)始條件以后進(jìn)行。

          b)結(jié)束信號(hào):SCL為低電平時(shí),SDA由低電平向高電平跳變,結(jié)束傳送數(shù)據(jù)。所有的操作都必須在停止條件以前結(jié)束??偩€(xiàn)開(kāi)始和停止數(shù)據(jù)傳送的時(shí)序如圖1所示。

               

          c)數(shù)據(jù)傳輸信號(hào):在開(kāi)始條件以后,時(shí)鐘信號(hào)SCL的高電平周期期問(wèn),當(dāng)數(shù)據(jù)線(xiàn)穩(wěn)定時(shí),數(shù)據(jù)線(xiàn)SDA的狀態(tài)表示數(shù)據(jù)有效,即數(shù)據(jù)可以被讀走,開(kāi)始進(jìn)行讀操作。在時(shí)鐘信號(hào)SCL的低電平周期期間,數(shù)據(jù)線(xiàn)上數(shù)據(jù)才允許改變。每位數(shù)據(jù)需要一個(gè)時(shí)鐘脈沖。I2C總線(xiàn)的數(shù)據(jù)位傳送時(shí)序如圖2所示。

               

          d)應(yīng)答信號(hào):接收數(shù)據(jù)的從器件收到8 bit數(shù)據(jù)后,向發(fā)送數(shù)據(jù)的主控器件發(fā)出特定的低電平脈沖,表示已收到數(shù)據(jù)。這要求主器件必須產(chǎn)生一個(gè)與確認(rèn)位相應(yīng)的額外時(shí)鐘脈沖(第9個(gè)脈沖)。若主控器件確認(rèn)失敗,主控器件必須發(fā)送一個(gè)數(shù)據(jù)結(jié)束信號(hào)給從器件。這時(shí)從器件必須使SDA線(xiàn)保持高電平,使主控器件能產(chǎn)生停止條件。總線(xiàn)的應(yīng)答信號(hào)時(shí)序見(jiàn)圖3。
         
                   

          2 I2C接口芯片AT24C01/02工作原理

          AT24CXX系列芯片是采用I2C總線(xiàn)標(biāo)準(zhǔn)的常用的串行EEROM芯片。本文以AT24C02為例介紹。AT24C02具有256×8(2 k)bit的存儲(chǔ)容量,即總共32頁(yè),每頁(yè)有8字節(jié)的容量。每次寫(xiě)入數(shù)據(jù)是從主器件發(fā)送來(lái)的片內(nèi)選擇地址開(kāi)始寫(xiě)人,如果寫(xiě)到頁(yè)末尾,主器件還在繼續(xù)發(fā)送的話(huà),不會(huì)自動(dòng)轉(zhuǎn)到下一頁(yè),而是從該頁(yè)的頭地址開(kāi)始繼續(xù)寫(xiě)入,覆蓋該頁(yè)的原有數(shù)據(jù),而造成數(shù)據(jù)丟失。AT24C02工作于從器件方式,它的地址由外圍的3個(gè)引腳A2、A1、A0決定,如圖4所示。在I2C總線(xiàn)上總共可以連接8個(gè)AT24C02接口芯片,每個(gè)器件硬件地址與控制寄存器的地址內(nèi)容保持一致,就能夠自由地與主控器件進(jìn)行數(shù)據(jù)傳輸。

               

          1)器件字節(jié)寫(xiě)操作

          在字節(jié)寫(xiě)模式下,發(fā)送器件寫(xiě)控制字,控制字包括4位固定器件碼,3位片選碼,以及一位低電平的寫(xiě)控制位。主器件在收到從器件產(chǎn)生應(yīng)答信號(hào)后,主器件發(fā)送一個(gè)8位字節(jié)地址寫(xiě)入AT24C02。主器件在收到從器件的另一個(gè)應(yīng)答信號(hào)后,再發(fā)送數(shù)據(jù)到被尋址的存儲(chǔ)單元。AT24C02再次應(yīng)答,并在主器件產(chǎn)生停止信號(hào)后開(kāi)始內(nèi)部數(shù)據(jù)的擦寫(xiě),在內(nèi)部擦寫(xiě)過(guò)程中,AT24C02不再應(yīng)答主器件的任何請(qǐng)求。時(shí)序見(jiàn)圖5。

                
         
          2)器件隨機(jī)地址讀操作

          對(duì)AT24C02讀操作的初始化方式和寫(xiě)操作時(shí)一樣,僅把R/W位置為1。圖6所示為AT24C02隨機(jī)地址讀時(shí)序圖。隨機(jī)讀操作允許主器件對(duì)寄存器的任意字節(jié)進(jìn)行讀操作,主器件首先通過(guò)發(fā)送起始信號(hào)、從器件地址和它想讀取的字節(jié)數(shù)據(jù)的地址執(zhí)行一個(gè)偽寫(xiě)操作。在AT24C02應(yīng)答之后,主器件重新發(fā)送起始信號(hào)和從器件地址,此時(shí)R/W位置1,AT24C02響應(yīng)并發(fā)送應(yīng)答信號(hào),然后輸出所要求的一個(gè)8位字節(jié)數(shù)據(jù),主器件不發(fā)送應(yīng)答信號(hào)但產(chǎn)生一個(gè)停止信號(hào)。

                
         
          3 I2C-Master Core工作原理

          基于NiosⅡ的IP核應(yīng)用非常簡(jiǎn)便,因此越發(fā)受到青睞。Altera公司已經(jīng)提供了一些通用的IP核可供使用,但沒(méi)有提供I2C核。文獻(xiàn)[3]提供了免費(fèi)的I2C-Master Core,經(jīng)筆者的應(yīng)用與長(zhǎng)時(shí)間測(cè)試,證明該Mas-ter Core使用方便可靠,工作穩(wěn)定。該Master Core的內(nèi)部結(jié)構(gòu)如圖7所示,主要由時(shí)鐘發(fā)生器、字節(jié)命令控制器、比特命令發(fā)生器和數(shù)據(jù)移位寄存器4個(gè)模塊組成。其他模塊是一些相關(guān)接口和臨時(shí)數(shù)據(jù)存儲(chǔ)器。
         
              

          時(shí)鐘發(fā)生器主要是產(chǎn)生SCL信號(hào),該時(shí)鐘的頻率可由預(yù)分頻寄存器設(shè)置,控制子計(jì)算公式如下:
              


          例如:SCL頻率為100kHz,NiosⅡ工作頻率為50 MHz,則預(yù)分頻=99,PRERlo=99,PRERhi=0。

                
         
          字節(jié)命令控制器在字節(jié)級(jí)連接命令寄存器、狀態(tài)寄存器和比特命令控制器。通過(guò)將表2所示命令寄存器相應(yīng)的比特位置1,可以產(chǎn)生I2C接口的開(kāi)始、結(jié)束、確認(rèn)等信號(hào),以及讀寫(xiě)控制。這些有效控制通過(guò)字節(jié)命令控制器轉(zhuǎn)送到比特命令控制器,使其發(fā)生作用,在信號(hào)產(chǎn)生后,這些比特位自動(dòng)清0。

          NiosⅡ向發(fā)送寄存器寫(xiě)數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)輸出,讀接收寄存器獲取從器件輸出的數(shù)據(jù)。數(shù)據(jù)的讀寫(xiě)是否完成可通過(guò)中斷或查詢(xún)方式得知。如采用中斷方式,狀態(tài)寄存器中的IF狀態(tài)位置1;如采用查詢(xún)方式,數(shù)據(jù)處理過(guò)程中,狀態(tài)位TIP置1,處理完畢后置1。

          4應(yīng)用實(shí)例

          筆者在NiosⅡIDE7.1環(huán)境下編寫(xiě)了使用該Mas-ter Core的代碼,現(xiàn)把部分主程序代碼列出。

          1)IP-Master Core初始化

          完成對(duì)預(yù)分頻器的設(shè)置,確定SCL時(shí)鐘頻率;控制寄存器中I2C-Master Core使能位置1,使其工作。
         
          

          2)查詢(xún)確認(rèn)信號(hào)

          數(shù)據(jù)收發(fā)是否完成,通過(guò)查詢(xún)TIP狀態(tài)位來(lái)確定。

          

          3)寫(xiě)字節(jié)操作

          單字節(jié)寫(xiě)入按圖5操作流程:
         
          

          4)隨即地址讀操作

          隨即地址讀字節(jié)按圖6流程操作:
         
          

          以上是使用I2C-Master Core的關(guān)鍵代碼,若向地址0xS0寫(xiě)入0x5A,再將其讀出,可按下面寫(xiě)法:
          
          

          若操作正確,DATA的值應(yīng)該位為0x5A。

          5結(jié)束語(yǔ)

        本文探討了使用免費(fèi)I2C-Master Core的方法,方便地實(shí)現(xiàn)了基于Nios Ⅱ的I2C接口芯片的開(kāi)發(fā),為I2C的電子工程設(shè)計(jì)使用提供了一種簡(jiǎn)單快捷的方法。

        分頻器相關(guān)文章:分頻器原理


        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉