自在自线亚洲а∨天堂在线-中文字幕一区视频播放-扒开双腿猛进入喷水高潮叫声-欧美日本亚洲一区二区-老熟妇高潮偷拍一区二区-国产精品高清一区二区不卡-午夜色福利视频一区二区三区-亚洲国产成人精品福利在线观看-亚洲欧美成人一区二区在线电影

機電之家資源網(wǎng)
單片機首頁|單片機基礎(chǔ)|單片機應(yīng)用|單片機開發(fā)|單片機文案|軟件資料下載|音響制作|電路圖下載 |嵌入式開發(fā)
培訓(xùn)信息
贊助商
虛擬I²C總線軟件包的開發(fā)及其應(yīng)用
[1] [2]  下一頁
虛擬I²C總線軟件包的開發(fā)及其應(yīng)用
 更新時間:2008-8-18 10:00:16  點擊數(shù):14
【字體: 字體顏色

摘要:為了擴展I2C總線(Inter IC BUS)外圍器件的使用范圍,設(shè)計出了虛擬I2C總線軟件包VIICC1.0,介紹了它的1個應(yīng)用實例。結(jié)果表明:該軟件包具有可靠的性能和廣泛的適應(yīng)性,有利于I2C接口器件在不帶I2C總線接口的微控制器(MCU)系統(tǒng)中的應(yīng)用。

關(guān)鍵詞:I2C總線單片機程序設(shè)計

一、 I2C總線簡介 串行擴展總線在單片機系統(tǒng)中的應(yīng)用是目前單片機技術(shù)發(fā)展的一種趨勢。在目前比較流行的幾種串行擴展總線中,I2C總線以其嚴(yán)格的規(guī)范和眾多帶I2C接口的外圍器件而獲得廣泛的應(yīng)用。 I2C總線是PHILIPS公司推出的芯片間串行傳輸總線。它以1根串行數(shù)據(jù)線(SDA)和1根串行時鐘線(SCL)實現(xiàn)了全雙工的同步數(shù)據(jù)傳輸。隨著I2C總線研究的深入,它已經(jīng)廣泛應(yīng)用于視/音頻領(lǐng)域、IC卡行業(yè)和一些家電產(chǎn)品中,在智能儀器、儀表和工業(yè)測控領(lǐng)域也越來越多地得到應(yīng)用。 I2C總線的廣泛應(yīng)用是同它卓越的性能和簡便的操作方法分不開的。I2C總線的特點主要表現(xiàn)在以下幾個方面: (1) 硬件結(jié)構(gòu)上具有相同的硬件接口界面。I2C總線系統(tǒng)中,任何一個I2C總線接口的外圍器件,不論其功能差別有多大,都是通過串行數(shù)據(jù)線(SDA)和串行時鐘線(SCL)連接到I2C總線上。這一特點給用戶在設(shè)計應(yīng)用系統(tǒng)中帶來了極大的便利性。用戶不必理解每個I2C總線接口器件的功能如何,只要將器件的SDA和SCL引腳連到I2C總線上,然后對該器件模塊進行獨立的電路設(shè)計,從而簡化了系統(tǒng)設(shè)計的復(fù)雜性,提高了系統(tǒng)抗干擾的能力,符合EMC (Electromagnetic Compatibility)設(shè)計原則。 (2) 總線接口器件地址具有很大的獨立性。在單主系統(tǒng)中,每個I2C接口芯片具有惟一的器件地址,由于不能發(fā)出串行時鐘信號而只能作為從器件使用。各器件之間互不干擾,相互之間不能進行通信,各個器件可以單獨供電。MCU與I2C器件之間的通信是通過獨一無二的器件地址來實現(xiàn)的。 (3) 軟件操作的一致性。由于任何器件通過I2C總線與MCU進行數(shù)據(jù)傳送的方式是基本一樣的,這就決定了I2C總線軟件編寫的一致性。 (4) PHILIPS公司在推出I2C總線的同時,也為I2C總線制訂了嚴(yán)格的規(guī)范,如:接口的電氣特性、信號時序、信號傳輸?shù)亩x等。規(guī)范的嚴(yán)密性,結(jié)構(gòu)的獨立性和硬、軟件接口界面的一致性,極大地方便了I2C總線設(shè)計的模塊化和規(guī)范化,伴隨而來的是用戶在使用I2C總線時的“傻瓜”化。 一、開發(fā)虛擬I2C總線軟件包的必要性 所謂的虛擬I2C總線是指借用MCU的2根通用I/O口線來虛擬I2C總線接口,而用軟件來實現(xiàn)I2C協(xié)議的一種總線虛擬方式。 虛擬I2C總線軟件包的產(chǎn)生及其應(yīng)用是由虛擬I2C總線的廣泛需求和I2C總線的特點來決定的。其原因和應(yīng)用現(xiàn)狀主要表現(xiàn)在以下幾個方面: (1) 有大量的外圍接口器件,如PCF8574、PCF8591、CAT24WC256C等都帶有I2C接口?墒菐2C總線接口的MCU卻不多,例如AT89C52、8051、68HC05和68HC11等都不帶I2C總線接口。虛擬I2C總線的產(chǎn)生大大地擴展了I2C總線外圍器件的應(yīng)用范圍。 (2) PHILIPS公司為了將I2C總線器件應(yīng)用到不帶I2C接口的MCU系統(tǒng)中,推出了PCF8584作為不帶I2C接口的MCU與I2C總線連接的轉(zhuǎn)接器。但是,在一些小型的單片機應(yīng)用系統(tǒng)和對時序要求不是很嚴(yán)格的系統(tǒng)中,這種做法不僅會增加硬件成本,而且會增加線路的復(fù)雜性,不利于實現(xiàn)系統(tǒng)設(shè)計的最簡化和最優(yōu)化。 (3) 如簡介所述,I2C總線在進行數(shù)據(jù)傳輸方面,對于不同的I2C器件具有相同的操作模式,遵循相同的規(guī)范,這就為I2C總線的軟件虛擬提供了實現(xiàn)的可能性。 (4) 通過查閱近幾年I2C總線應(yīng)用方面的資料,發(fā)現(xiàn)虛擬I2C總線有了一定程度的應(yīng)用。但是,在應(yīng)用的過程中也有一些不盡人意的地方,如:大多數(shù)I2C總線操作程序都是針對具體的器件,按照I2C總線協(xié)議從最基本的時序編寫的;I2C協(xié)議的復(fù)雜性和不同器件的互異性決定了一個程序一個樣,可移植性較差,給I2C總線的應(yīng)用造成了不應(yīng)有的障礙。因此,I2C總線的用戶只有轉(zhuǎn)變觀念,將I2C總線的應(yīng)用開發(fā)由板凳模式變成平臺模式,才能夠為I2C總線應(yīng)用范圍的進一步擴大產(chǎn)生更大的推動作用。 基于此,本文將虛擬I2C總線軟件包VIICC1.0公布出來,希望它能夠給I2C總線應(yīng)用人員提供一些幫助。 二、 虛擬I2C總線軟件包VIICC1.0 I2C總線是一種多主系統(tǒng)總線,總線上可有多個MCU,因此有4種工作方式:主發(fā)送、主接收、從發(fā)送和從接收。虛擬I2C總線軟件包VIICC1.0虛擬了單主系統(tǒng)的I2C總線,即主發(fā)送和主接收。不過,在實際應(yīng)用中,單片機應(yīng)用系統(tǒng)絕大多數(shù)是單主系統(tǒng),因此它不會影響虛擬I2C總線軟件包的廣泛應(yīng)用。 虛擬I2C總線軟件包VIICC1.0是用Franklin C51編寫的。它由1個頭文件和1個源程序組成。頭文件(VIICC.H)的清單如下:

三、 虛擬I2C總線軟件包VIICC1.0應(yīng)用界面

在應(yīng)用VIICC1.0時,用戶要做的工作是:
(1) 將虛擬I2C總線軟件包的頭文件復(fù)制到Franklin C51編譯器的..\c51\inc目錄下;
(2) 將上面介紹的源程序復(fù)制到應(yīng)用系統(tǒng)主程序的末尾;
(3) 在主程序的最上面添加如下1條指令: #include <VIICC.H>
做完上面的工作后,用戶就可以自如地使用這個軟件包了。在使用時,用戶不必關(guān)心I2C外圍器件功能如何,都使用下面的幾條指令:
rdnbyt(uchar slar,uchar qq[],uchar number); 或:wrnbyt(uchar slaw,uchar ff[],uchar number); 其中:slar/slaw是從器件的地址(讀/寫);
number是需要讀寫的數(shù)據(jù)字節(jié)的個數(shù);
qq[]是從虛擬I2C總線上讀出的數(shù)據(jù)數(shù)組;
ff[]是需要向虛擬I2C總線上寫入的數(shù)據(jù)數(shù)組。
VIICC1.0占用資源與VIIC1.0(見《單片機與嵌入式系統(tǒng)應(yīng)用》2001年第2期上的相應(yīng)文章)占用資源基本上一樣。由于VIICC1.0的設(shè)計是基于12MHz的時鐘設(shè)計的,因此當(dāng)晶振頻率發(fā)生變化時,須要在頭文件中適當(dāng)修改nop ( )的個數(shù)。另外,當(dāng)所使用的通用I/O口線發(fā)生變化時,須要在頭文件中對SDA與SCL的宏定義進行修改。

四、c虛擬I2C總線軟件包 在CAT24WC256C中的應(yīng)用

CAT24WC256C是CATLYST推出的可直接和MCS-51接口的E2PROM。它遵循I2C總線協(xié)議,使用SDA和SCL雙總線進行數(shù)據(jù)通信。 CAT24WC256C是256K位(32KB)的串行CMOS E2PROM,有1個64字節(jié)的頁寫緩沖器。它能在1.8~6.0V的寬電壓范圍內(nèi)工作,實現(xiàn)了寫保護功能,即當(dāng)其WP引腳為高電平時進入寫保護狀態(tài)。CAT24WC256C的引腳分配及其定義如圖1所示。


圖1 CAT24WC256C的引腳分配及其定義

從圖1中可以看出,在單主系統(tǒng)中,由A1和A0地址譯碼最多可以接4片CAT24WC256C器件,即最多可擴展128KB的E2PROM。由于它不能發(fā)出串行時鐘信號和啟、停信號,因此,只能作為從器件被操作。 CAT24WC256C的器件地址格式為:

1

0

1

0

0

A1

A0

R/W

這個器件地址的最高5位固定為10100,A1和A0為器件的地址,這些位必須與硬件連線輸入腳A1和A0位相對應(yīng),最低位(R/)為讀寫控制位,“1”表示對器件進行讀操作;“0”表示對器件進行寫操作。CAT24WC256C收到起始信號和從器件地址字節(jié)后,比較從器件地址,如果發(fā)現(xiàn)與其自身地址相符合,則響應(yīng)1個應(yīng)答信號,然后根據(jù)(R/)位來進行讀/寫操作。
CAT24WC256C的寫操作中有2種方式:字節(jié)寫或頁寫,它們的本質(zhì)是一樣的,不同的是所傳輸?shù)臄?shù)據(jù)字節(jié)數(shù)不同,例如頁寫時序如下:

CAT24WC256C的讀操作有3種方式:立即/當(dāng)前地址讀、隨機讀和連續(xù)讀。立即地址讀與隨機讀基本上是一樣的,不同的是立即讀的地址是上次進行操作的地址+1;隨機讀可以由用戶隨意指定1個地址;連續(xù)讀可以對1個存儲區(qū)進行多個字節(jié)的連續(xù)讀。以連續(xù)讀為例,它的操作時序如下:

在操作中要注意頁的自動翻轉(zhuǎn)問題,解決頁自動翻轉(zhuǎn)問題的方法是在頁操作中不要一次傳輸超過64個字節(jié)的數(shù)據(jù)。
虛擬I2C總線軟件包VIICC1.0在CAT24WC256C中應(yīng)用的電路原理圖如圖2所示。

圖2 虛擬I2C總線軟件包 在CAT24WC256C中的應(yīng)用原理圖 在這個應(yīng)用實例中,首先向CAT24WC256C中起始地址為0x0080連續(xù)存儲區(qū)中寫入64個字節(jié)的數(shù)據(jù),然后再將這64個字節(jié)讀出來,放在輸出數(shù)組中,下面是部分源代碼。 ……

點擊下載代碼

結(jié)束語

虛擬I2C總線軟件包VIICC1.0在作者的多項科研工作中得到應(yīng)用,運行效果良好,表明該軟件包具有可靠的性能和廣泛的適應(yīng)性,具有一定的參考價值。MES

參考文獻

1 何立民. I2C總線應(yīng)用系統(tǒng)設(shè)計. 北京:北京航空航天大學(xué)出版社,1995
2 何立民. 單片機高級教程. 北京:北京航空航天大學(xué)出版社,2000
3 王晶晶,容太平. IC卡中I2C BUS設(shè)計及其在儀表中的應(yīng)用. 儀表技術(shù),1999(2):32~34
4 周軍,張瑞蘭. PCF8584 I2C總線擴展器的應(yīng)用. 電測與儀表,1998(10):36~38

  • 上一篇: 智能卡的邊頻攻擊分析及安全防范措施
  • 下一篇: 嵌入式軟件系統(tǒng)的實時性設(shè)計
  • 發(fā)表評論   告訴好友   打印此文  收藏此頁  關(guān)閉窗口  返回頂部
    熱點文章
     
    推薦文章
     
    相關(guān)文章
    網(wǎng)友評論:(只顯示最新5條。)
    關(guān)于我們 | 聯(lián)系我們 | 廣告合作 | 付款方式 | 使用幫助 | 機電之家 | 會員助手 | 免費鏈接

    點擊這里給我發(fā)消息66821730(技術(shù)支持)點擊這里給我發(fā)消息66821730(廣告投放) 點擊這里給我發(fā)消息41031197(編輯) 點擊這里給我發(fā)消息58733127(審核)
    本站提供的機電設(shè)備,機電供求等信息由機電企業(yè)自行提供,該企業(yè)負(fù)責(zé)信息內(nèi)容的真實性、準(zhǔn)確性和合法性。
    機電之家對此不承擔(dān)任何保證責(zé)任,有侵犯您利益的地方請聯(lián)系機電之家,機電之家將及時作出處理。
    Copyright 2007 機電之家 Inc All Rights Reserved.機電之家-由機電一體化網(wǎng)更名-聲明
    電話:0571-87774297 傳真:0571-87774298
    杭州濱興科技有限公司提供技術(shù)支持

    主辦:杭州市高新區(qū)(濱江)機電一體化學(xué)會
    中國行業(yè)電子商務(wù)100強網(wǎng)站

    網(wǎng)站經(jīng)營許可證:浙B2-20080178-1