日韩欧美自拍在线观看-欧美精品在线看片一区二区-高清性视频一区二区播放-欧美日韩女优制服另类-国产精品久久久久久av蜜臀-成人在线黄色av网站-肥臀熟妇一区二区三区-亚洲视频在线播放老色-在线成人激情自拍视频

按平臺模式設(shè)計的虛擬I²C總線軟件包VIIC

出處:http://www.cnbpq.com 發(fā)布于:2007-09-26 15:20:49

  摘要 VIIC是主方式下的虛擬I2C總線軟件包,用于80C51系列單片機的單主系統(tǒng)中。只需兩根普通I/O口線就可隨時擴展I2C總線外圍器件。將VIIC1.0裝入程序存儲器中,對其中的符號單元賦值后,使用三條通用操作命令就可實現(xiàn)任何I2C總線外圍器件的應(yīng)用程序設(shè)計。本文以VIIC為例,介紹應(yīng)用軟件形式的廣義平臺設(shè)計方法,給出VIIC1.0程序文本。按照這一思路,也可移植到其他系列的嵌入式系統(tǒng)中。

  關(guān)鍵詞 平臺模式虛擬I2C總線VIIC應(yīng)用程序設(shè)計

一、  I2C總線及其虛擬應(yīng)用

1.  I2C總線應(yīng)用呼喚平臺模式

  目前,單片機應(yīng)用系統(tǒng)的外圍擴展已從并行方式為主過渡到以串行方式為主的時代。許多新型外圍器件都帶有串行擴展接口。通常的串行擴展接口和串行擴展總線有UART的移位寄存器方式、MOTOROLA公司的SPI、NS公司的Microwire、Dallas公司的1-Wire和Philips公司的I2C總線等。其中,I2C總線提供了較完善的總線協(xié)議、簡單的串行連接方式,并提供了總線操作的狀態(tài)處理軟件包,因而得到了廣泛的應(yīng)用。但廠家并未提供完善的平臺模式應(yīng)用軟件包。因此,用戶在擴展I2C總線外圍器件時,還要在了解I2C總線協(xié)議、操作原理的基礎(chǔ)上,采用直接方式進行I2C總線外圍器件的應(yīng)用程序設(shè)計。迄今為止,許多期刊的文章中還是以這種方式來介紹I2C總線的擴展應(yīng)用。由于I2C總線協(xié)議的復雜性和操作管理的特殊性,從I2C總線結(jié)構(gòu)原理到I2C總線應(yīng)用的直接設(shè)計方式難度較大,使I2C總線推廣應(yīng)用較慢。因此,迫切呼喚推出I2C總線的應(yīng)用軟件平臺,使人們不必了解I2C總線就能設(shè)計I2C總線應(yīng)用程序。

2.  廣泛使用的主工作方式

  I2C總線是1個十分完善的多主系統(tǒng)總線,總線上可以掛接多個MCU,因此有4種工作方式,即主發(fā)送、主接收、從發(fā)送、從接收。但實際的單片機應(yīng)用系統(tǒng)絕大多數(shù)都是單個MCU系統(tǒng),只用到I2C總線的主方式,即主發(fā)送與主接收。

3.  虛擬I2C總線的廣泛需求

  目前,有許多外圍器件帶有I2C總線接口,然而,帶有I2C總線接口的MCU只有少數(shù)廠家的個別型號,致使I2C總線難以推廣。因此,人們便使用MCU通用的I/O口來虛擬I2C總線接口。早期東芝公司在彩電中就在自己的MCU中虛擬I2C總線接口,實現(xiàn)I2C總線外圍器件擴展的虛擬應(yīng)用。

  采用虛擬I2C總線后,任何1個廠家的單片機都可以無障礙地使用I2C總線外圍器件。同樣,虛擬I2C總線的應(yīng)用也呼喚平臺模式。

二、  VIIC1.0軟件包設(shè)計

  VIIC1.0是物化形式為軟件包文檔的廣義平臺,適合在80C51單片機系列單主系統(tǒng)中應(yīng)用。
按照廣義平臺設(shè)計內(nèi)容,VIIC有包容性設(shè)計、后歸一化設(shè)計、前歸一化設(shè)計、物化設(shè)計和應(yīng)用界面設(shè)計。

1.  包容性設(shè)計

  包容性設(shè)計是廣義平臺適用范圍的選擇性設(shè)計。完整的I2C總線有4種操作方式,并且有指定的端口,有地址寄存器(S1ADR)來設(shè)定MCU的地址。在VIIC的包容性設(shè)計中規(guī)定為主方式下的通用I/O口虛擬。規(guī)定為主方式后,避免了多主方式下極大難度的總線沖突仲裁處理程序設(shè)計,又保證了能滿足絕大多數(shù)I2C總線擴展應(yīng)用。采用通用I/O口的虛擬,使用戶可隨意規(guī)定虛擬I2C總線端口,擴大了虛擬I2C總線應(yīng)用的靈活性。

2.  后歸一化設(shè)計

  后歸一化設(shè)計是確定應(yīng)用范圍的相關(guān)設(shè)計。VIIC的后歸一化設(shè)計有:

(1)  應(yīng)用范圍指定為帶I2C總線的外圍器件擴展;
(2)  所有I2C總線外圍器件的操作方式歸一化為外圍器件N個字節(jié)的讀寫操作;
(3)  總線節(jié)點通信方式歸一化為SLAW/SLAR節(jié)點尋址后的點對點的讀寫操作。

3.  前歸一化設(shè)計

  前歸一化設(shè)計是從I2C總線協(xié)議原理、操作方式、時序規(guī)則出發(fā),實現(xiàn)后歸一要求的設(shè)計。VIIC的前歸一化設(shè)計有:

(1)  時序的指令模擬即模擬I2C總線操作時序。I2C總線操作的典型時序信號有起始位(STAR)、停止位(STOP)、發(fā)送應(yīng)答位(MACK)、發(fā)送非應(yīng)答位(MNACK)。
(2)  數(shù)據(jù)傳送操作虛擬即模擬I2C數(shù)據(jù)傳送過程。例如,應(yīng)答位檢查(CACK)、發(fā)送1個字節(jié)數(shù)據(jù)(WRBYT)、接收1個字節(jié)數(shù)據(jù)(RDBYT)。
(3)  外圍器件讀寫操作虛擬。要求虛擬1個I2C總線讀寫操作過程(RDNBYT、WRNBYT)。

4.  VIIC1.0的結(jié)構(gòu)設(shè)計

(1)  VIIC1.0的組成。 根據(jù)歸一化設(shè)計,主方式下虛擬I2C總線由下列9個子程序組成:
  · 時序模擬子程序STAR,STOP,MACK,MNACK;
  · 操作模擬子程序CACK,WRBYT,RDBYT;
  · 數(shù)據(jù)讀寫子程序RDNBYT,WRNBYT。
  由于篇幅所限,本文中省略了VIIC1.0軟件包中這9個子程序的虛擬設(shè)計方法。需要詳細了解的讀者可參看文尾參考資料2中7.3節(jié)“I2C總線的串行擴展技術(shù)”的有關(guān)部分。
(2)  軟件包的出口界面 軟件包VIIC實現(xiàn)非介入性操作,出口界面是軟件包應(yīng)用時惟一的觸及面。VIIC1.0中的出口界面為數(shù)據(jù)讀寫子程序 RDNBYT/WRNBYT。
(3)  軟件包的符號單元 VIIC中的符號標記有發(fā)送數(shù)據(jù)緩沖區(qū)MTD、接收數(shù)據(jù)緩沖區(qū)MRD、傳送字節(jié)數(shù)存放單元NUMBYT以及尋址字節(jié)SLAW/SLAR存放單元SLA。這些符號單元都采用了標準I2C總線狀態(tài)處理軟件包中規(guī)定的字符標記。

5.  應(yīng)用界面設(shè)計

  VIIC1.0軟件包規(guī)定了讀寫子程序RDNBYT/WRNBYT的惟一出口界面,因此RDNBYT/WRNBYT的調(diào)用操作命令,以及滿足調(diào)用操作的初始化操作的三條命令為VIIC的應(yīng)用界面,即:

MOV SLA,#SLAR/SLAW ;總線上節(jié)點尋址并確定傳送方向
MOV NUMBYT,#N ;確定傳送字節(jié)數(shù)N
LCALL RDNBYT/WRNBYT ;讀/寫操作調(diào)用

三、  VIIC1.0軟件包清單

  VIIC1.0軟件包清單如下。

①  STAR:SETB VSDA;啟動I2C總線
    SETB VSCL
    NOP
    NOP
    CLR VSDA
    NOP
    NOP
    CLR VSCL
    RET
②  STOP: CLR VSDA ;停止I2C總線數(shù)據(jù)傳送
    SETB VSCL
    NOP
    NOP
    SETB VSDA
    NOP
    NOP
    CLR VSDA
    CLR VSCL
    RET
③  MACK: CLR VSDA ;發(fā)送應(yīng)答位
    SETB VSCL
    NOP
    NOP
    CLR VSCL
    SETB VSDA
    RET
④  MNACK: SETB VSDA ;發(fā)送非應(yīng)答位
    SETB VSCL
    NOP
    NOP
    CLR VSCL
    CLR VSDA
    RET
⑤  CACK: SETB VSDA ;應(yīng)答位檢查
    SETB VSCL
    CLR F0
    MOV C,VSDA
    JNC CEND
    SETB F0
  CEND: CLR VSCL
    RET
⑥  WRBYT: MOV R0,#08H ;向VSDA線上發(fā)送1個數(shù)據(jù)字節(jié)
  WLP: RLC A
    JC WR1
    AJMP WR0
  WLP1: DJNZ R0,WLP
    RET
  WR1: SETB VSDA
    SETB VSCL
    NOP
    NOP
    CLR VSCL
    CLR VSDA
    AJMP WLP1
  WR0: CLR VSDA
    SETB VSCL
    NOP
    NOP
    CLR VSCL
    AJMP WLP1
⑦  RDBYT: MOV R0,#08H ;從VSDA線上讀取1個數(shù)據(jù)字節(jié)
  RLP: SETB VSDA
    SETB VSCL
    MOV C,VSDA
    MOV A,R2
    RLC A
    MOV R2,A
    CLR VSCL
    DJNZ R0,RLP
    RET
⑧  WRNBYT: MOV R3,NUMBYT ;虛擬I2C總線發(fā)送N個字節(jié)數(shù)據(jù)
    LCALL STA
    MOV A,SLA
    LCALL WRBYT
    LCALL CACK
    JB F0,WRNBYT
    MOV R1,#MTD
  WRDA: MOV A,@R1
    LCALL WRBYT
    LCALL CACK
    JB F0,WRNBYT
    INC R1
    DJNZ R3,WRDA
    LCALL STOP
    RET
⑨  RDNBYT: MOV R3, NUMBYT ;模擬I2C總線接收n個字節(jié)數(shù)據(jù)
    LCALL STA
    MOV A,SLA
    LCALL WRBYT
    LCALL CACK
    JB F0,RDNBTY
  RDN: MOV R1,#MRD
  RDN1: LCALL RDBYT
    MOV @R1,A
    DJNZ R3,ACK
    LCALL MNACK
    LCALL STOP
    RET
  ACK: LCALL MACK
    INC R1
    SJMP RDN1

四、  VIIC1.0應(yīng)用指南

1.  適用范圍

  VIIC1.0適用于80C51系列單主系統(tǒng)中I2C總線外圍器件擴展的應(yīng)用程序設(shè)計。由于時序模擬基于6MHz時鐘設(shè)計,在高速時鐘下,可適當增加時序模擬子程序中的空操作指令。

2.  資源占用

  VIIC使用了R0,R1,R2,R3,F(xiàn)0,C等資源。

3.  符號單元

  PVIIC中有許多符號標記,這些符號標記有:

  VSDA 虛擬I2C總線數(shù)據(jù)線;
  VSCL虛擬I2C總線時鐘線;
  SLA尋址字節(jié)存放單元;
  NUMBYT傳送字節(jié)數(shù)存放單元;
  MTD發(fā)送數(shù)據(jù)緩沖區(qū);
  MRD接收數(shù)據(jù)緩沖區(qū)。

4.  歸一化操作命令

  不論總線上擴展什么外圍器件,都只須使用以下三條指令:

  MOV SLA,#SLAW/SLAR
  MOVNUMBYT,#N
  LCALLWRNBYT/RDNBYT

5.  VIIC的裝載

  由于WRNBYT/RDNBYT都使用長調(diào)用命令LCALL,故VIIC1.0可放在程序存儲器的任意空間。


圖1

6.  通用的應(yīng)用界面

  VIIC1.0的應(yīng)用界面如圖1所示。與VIIC1.0有關(guān)的只是3條歸一化操作命令;與硬件電路相關(guān)的是器件地址與引腳地址構(gòu)成的尋址字節(jié)和由器件規(guī)定的數(shù)據(jù)操作格式。

五、  VIIC1.0應(yīng)用示例

  在本文參考文獻2中給出了一些基于VIIC軟件包的外圍串行擴展應(yīng)用實例。現(xiàn)就帶I2C總線接口LED顯示驅(qū)動器SAA1064擴展8位LED顯示電路來示范VIIC1.0的應(yīng)用。

1.  硬件電路與尋址字節(jié)

  用2片SAA1064擴展的8位LED顯示電路如圖2(b)所示,圖2(a)為SAA的引腳排列圖。設(shè)80C51用P1.1/P1.0來虛擬SDA/SCL口線。兩片SAA1064的ADR引腳分別接地和VCC。SAA1064(1)、(2)的器件地址為0111,引腳地址為000和111,因此它們的尋址字節(jié)SLAW/SLAR分別為70H/71H和76H/77H。

2.  顯示原理與數(shù)據(jù)操作格式

  在I2C總線外圍器件的數(shù)據(jù)手冊中,都給出了實現(xiàn)器件功能的數(shù)據(jù)操作格式,以及實現(xiàn)功能的控制命令與寄存器的管理模式。

(1)  SAA1064的數(shù)據(jù)操作格式

  80C51只須對SAA1064進行寫操作,便實現(xiàn)了LED的顯示驅(qū)動控制。SAA1064的寫數(shù)據(jù)操作格式如下:

  只須對SAA1064中首地址為SUBADR的5個寄存器單元中依次寫入控制命令COM和4個LED共陰極段碼datal~data4,SAA1064的SUBADR=00H。

  控制命令COM格式及位功能規(guī)定如下:

  C0靜、動態(tài)顯示選擇。C0=1,動態(tài)顯示。
  C1顯示位1,3暗亮選擇。C1=1,選擇亮。
  C2顯示位2,4暗亮選擇。C2=1,選擇亮。
  C3測試位。C3=1,所有段點亮。
  C4,C5,C6驅(qū)動電流控制位。C4,C5,C6為 “1”時,驅(qū)動電流分別為3mA,6mA,12mA;皆為1時輸出驅(qū)動電流,達21 mA。

3.  應(yīng)用程序設(shè)計

  按下列步驟完成圖2(b)的8位LED顯示程序設(shè)計。


圖2

(1)  將VIIC1.0裝入程序存儲器中。

(2)  根據(jù)硬件電路及資源分配,將VIIC1.0中的符號單元賦值如下:

  VSDA EQU P1.1 ;用P1.1虛擬SDA
  VSCL EQU P1.0 ;用P1.0虛擬SCL
  SLA EQU 50H ;50H為尋址字節(jié)存放單元
  NUMBYT EQU 51H ;51H為傳送字節(jié)數(shù)據(jù)存放單元
  MTD EQU 30H ;30H為發(fā)送緩沖區(qū)首地址

(3)  8位LED顯示子程序設(shè)計

  這里介紹1個在圖2(b)LED顯示器上顯示“bUAA0706”固定字符的子程序。

  根據(jù)SAA1064的數(shù)據(jù)操作格式,點亮4個LED只須依首地址SUBADR順序送入控制命令COM和4個LED共陰極段選碼data1~data4。

  設(shè)LED驅(qū)動電流為18 mA(C6,C5為高電平;C4為低電平)動態(tài)顯示要求(C2,C1,C0為高電平)故COM=67H。SAA1064(1)顯示“0706”的段碼依次是7DH,3FH,07H,3FH;SAA1064(2)顯示“bUAA”的段碼依次為77H,77H,3EH,7CH。因此,SAA1064(1),(2)的數(shù)據(jù)操作格式具體化為

  設(shè)顯示“bUAA0706”的子程序名為VSAA8。VSAA8的程序清單如下:

  VSDA EQU P1.0
  VSCL EQU P1.1
  SLA EQU 50H
  NUMBYT EQU 51H
  MTD EQU 30H
VSAA8: MOV 30H,#00H;將SUBADR,COM,LED共陰極段碼data1~data4依次裝入發(fā)送緩沖區(qū)
  MOV 31H,#67H
  MOV 32H,#7DH
  MOV 33H,#3FH
  MOV 34H,#07H
  MOV 35H,#3FH
  MOV SLA,#70H;尋址SAA104(1)并為發(fā)送狀態(tài)
  MOV NUMBYT,#06H;確定發(fā)送字節(jié)數(shù)
  LCALL WRNBYT;調(diào)用VIIC1.0中N個字節(jié)寫入子程序
  MOV 30H,#00H;將SUBADR,COM,data1~data4依次裝入發(fā)送緩沖區(qū)
  MOV 31H,#67H
  MOV 32H,#77H
  MOV 33H,#77H
  MOV 34H,#3EH
  MOV 35H,#7CH
  MOV SLA,#76H ; 尋址SAA1064(2)并為發(fā)送狀態(tài)
  MOV NUMBYT,#06H ;確定發(fā)送字節(jié)數(shù)
  MOV WRNBYT;調(diào)用VIIC1.0中N個字節(jié)寫入子程序
  RET

  如果要隨意顯示內(nèi)存中的8個BCD碼,可開辟顯示緩沖區(qū)DISRAM,設(shè)計1個子程序,將顯示緩沖區(qū)中的8個BCD碼轉(zhuǎn)換成共陰極段碼再和SUBADR和COM一道送入MTD中,然后使用VIIC1.0的三條操作命令即可。

  從上述應(yīng)用可看出,使用VIIC軟件包后,編寫應(yīng)用程序不必了解I2C總線原理、協(xié)議和時序,只要了解VIIC的應(yīng)用操作即可。


  

參考文獻:

[1]. 80C51 datasheet http://www.hbjingang.com/datasheet/80C51_103447.html.
[2]. SAA1064 datasheet http://www.hbjingang.com/datasheet/SAA1064_596299.html.
[3]. COM datasheet http://www.hbjingang.com/datasheet/COM_1118194.html.
[4]. BCD datasheet http://www.hbjingang.com/datasheet/BCD_1225719.html.


關(guān)鍵詞:按平臺模式設(shè)計的虛擬I²C總線軟件包VIICSAA106480C51PHILIPSDALLASMOTOROLA6MHZ12MA

版權(quán)與免責聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://www.hbjingang.com,違反者本網(wǎng)將追究相關(guān)法律責任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔此類作品侵權(quán)行為的直接責任及連帶責任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負版權(quán)等法律責任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!