當(dāng)前位置:首頁(yè) > 工業(yè)控制 > 工業(yè)控制
[導(dǎo)讀]本文以VIIC為例,介紹應(yīng)用軟件形式的廣義平臺(tái)設(shè)計(jì)方法,給出VIIC1.0程序文本。

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

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

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

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

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

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

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

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

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

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

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

VIIC1.0是物化形式為軟件包文檔的廣義平臺(tái),適合在80C51單片機(jī)系列單主系統(tǒng)中應(yīng)用。

按照廣義平臺(tái)設(shè)計(jì)內(nèi)容,VIIC有最佳包容性設(shè)計(jì)、后歸一化設(shè)計(jì)、前歸一化設(shè)計(jì)、物化設(shè)計(jì)和應(yīng)用界面設(shè)計(jì)。

1.最佳包容性設(shè)計(jì)

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

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

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

(1) 應(yīng)用范圍指定為帶I2C總線的外圍器件擴(kuò)展;

(2) 所有I2C總線外圍器件的操作方式歸一化為外圍器件N個(gè)字節(jié)的讀寫操作;

(3) 總線節(jié)點(diǎn)通信方式歸一化為SLAW/SLAR節(jié)點(diǎn)尋址后的點(diǎn)對(duì)點(diǎn)的讀寫操作。

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

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

(1) 時(shí)序的指令模擬即模擬I2C總線操作時(shí)序。I2C總線操作的典型時(shí)序信號(hào)有起始位(STAR)、停止位(STOP)、發(fā)送應(yīng)答位(MACK)、發(fā)送非應(yīng)答位(MNACK)。

(2) 數(shù)據(jù)傳送操作虛擬即模擬I2C數(shù)據(jù)傳送過程。例如,應(yīng)答位檢查(CACK)、發(fā)送1個(gè)字節(jié)數(shù)據(jù)(WRBYT)、接收1個(gè)字節(jié)數(shù)據(jù)(RDBYT)。

(3) 外圍器件讀寫操作虛擬。要求虛擬1個(gè)I2C總線讀寫操作過程(RDNBYT、WRNBYT)。

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

(1) VIIC1.0的組成。 根據(jù)歸一化設(shè)計(jì),主方式下虛擬I2C總線由下列9個(gè)子程序組成: · 時(shí)序模擬子程序STAR,STOP,MACK,MNACK; · 操作模擬子程序CACK,WRBYT,RDBYT; · 數(shù)據(jù)讀寫子程序RDNBYT,WRNBYT。 由于篇幅所限,本文中省略了VIIC1.0軟件包中這9個(gè)子程序的虛擬設(shè)計(jì)方法。需要詳細(xì)了解的讀者可參看文尾參考資料2中7.3節(jié)“I2C總線的串行擴(kuò)展技術(shù)”的有關(guān)部分。

(2) 軟件包的出口界面 軟件包VIIC實(shí)現(xiàn)非介入性操作,出口界面是軟件包應(yīng)用時(shí)惟一的觸及面。VIIC1.0中的出口界面為數(shù)據(jù)讀寫子程序 RDNBYT/WRNBYT。

(3) 軟件包的符號(hào)單元 VIIC中的符號(hào)標(biāo)記有發(fā)送數(shù)據(jù)緩沖區(qū)MTD、接收數(shù)據(jù)緩沖區(qū)MRD、傳送字節(jié)數(shù)存放單元NUMBYT以及尋址字節(jié)SLAW/SLAR存放單元SLA。這些符號(hào)單元都采用了標(biāo)準(zhǔn)I2C總線狀態(tài)處理軟件包中規(guī)定的字符標(biāo)記。

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

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

MOV SLA,#SLAR/SLAW ;總線上節(jié)點(diǎn)尋址并確定傳送方向

MOV NUMBYT,#N ;確定傳送字節(jié)數(shù)N

LCALL RDNBYT/WRNBYT ;讀/寫操作調(diào)用

三、VIIC1.0軟件包清單

VIIC1.0軟件包清單如下。

①STAR:SETB VSDA;啟動(dòng)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個(gè)數(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個(gè)數(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個(gè) ;字節(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個(gè) ;字節(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總線外圍器件擴(kuò)展的應(yīng)用程序設(shè)計(jì)。由于時(shí)序模擬基于6MHz時(shí)鐘設(shè)計(jì),在高速時(shí)鐘下,可適當(dāng)增加時(shí)序模擬子程序中的空操作指令。

2. 資源占用

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

3.符號(hào)單元

PVIIC中有許多符號(hào)標(biāo)記,這些符號(hào)標(biāo)記有:

VSDA 虛擬I2C總線數(shù)據(jù)線;

VSCL虛擬I2C總線時(shí)鐘線;

SLA尋址字節(jié)存放單元;

NUMBYT傳送字節(jié)數(shù)存放單元;

MTD發(fā)送數(shù)據(jù)緩沖區(qū);

MRD接收數(shù)據(jù)緩沖區(qū)。

4.歸一化操作命令

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

MOV SLA,#SLAW/SLAR

MOVNUMBYT,#N

LCALLWRNBYT/RDNBYT

5.VIIC的裝載

由于WRNBYT/RDNBYT都使用長(zhǎng)調(diào)用命令LCALL,故VIIC1.0可放在程序存儲(chǔ)器的任意空間。 圖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)用示例

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

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

用2片SAA1064擴(kuò)展的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ù)手冊(cè)中,都給出了實(shí)現(xiàn)器件功能的數(shù)據(jù)操作格式,以及實(shí)現(xiàn)功能的控制命令與寄存器的管理模式。

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

S SLAW A SUBADR A COM A data1 A data2 A data3 A data A P

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

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

D7                                                                     D0

—— C6 C5 C4 C3 C2 C1 C0

C0   靜、動(dòng)態(tài)顯示選擇。C0=1,動(dòng)態(tài)顯示。

C1  顯示位1,3暗亮選擇。C1=1,選擇亮。

C2  顯示位2,4暗亮選擇。C2=1,選擇亮。

C3  測(cè)試位。C3=1,所有段點(diǎn)亮。

C4,C5,C6  驅(qū)動(dòng)電流控制位。C4,C5,C6為 “1”時(shí),驅(qū)動(dòng)電流分別為3mA,6mA,12mA;皆為1時(shí)輸出驅(qū)動(dòng)電流最大,達(dá)21mA。

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

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

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

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

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è)計(jì)

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

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

設(shè)LED驅(qū)動(dòng)電流為18 mA(C6,C5為高電平;C4為低電平)動(dòng)態(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個(gè)字節(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個(gè)字節(jié)寫 ;入子程序

RET

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

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

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉