當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]在對(duì)串行實(shí)時(shí)時(shí)鐘芯片X1203內(nèi)部結(jié)構(gòu)和工作特性作基本介紹的基礎(chǔ)上,設(shè)計(jì)出用單片機(jī)的通用I/O口線虛擬I2C總線來實(shí)現(xiàn)與時(shí)鐘芯片的串行接口電路以及利用虛擬I2C總線軟件包VIIC設(shè)計(jì)時(shí)鐘芯片1203的應(yīng)用程序。

摘要:在對(duì)串行實(shí)時(shí)時(shí)鐘芯片X1203內(nèi)部結(jié)構(gòu)和工作特性作基本介紹的基礎(chǔ)上,設(shè)計(jì)出用單片機(jī)的通用I/O口線虛擬I2C總線來實(shí)現(xiàn)與時(shí)鐘芯片的串行接口電路以及利用虛擬I2C總線軟件包VIIC設(shè)計(jì)時(shí)鐘芯片1203的應(yīng)用程序
關(guān)鍵詞:單片機(jī) 實(shí)時(shí)時(shí)鐘 虛擬I2C總線

實(shí)時(shí)時(shí)鐘是微機(jī)測(cè)控系統(tǒng)中的一個(gè)重要組成部分。美國Xicor公司推出的串行接口實(shí)時(shí)時(shí)鐘芯片X1203提供備用電源輸入引腳,使器件能用非可重新充電電池任務(wù)用電源。該芯片以其體積小、功耗低、使用簡單、接口容易、與單片機(jī)連線少為主要特點(diǎn),同時(shí)具有較高的精度,能很好滿足微機(jī)測(cè)控系統(tǒng)的求。下面具體介紹該芯片的內(nèi)部結(jié)構(gòu)、工作特性、與51系列單片機(jī)接口設(shè)計(jì)實(shí)例以及如何利用虛擬I2C總線軟件包VIIC來設(shè)計(jì)實(shí)時(shí)時(shí)鐘芯片X1203的應(yīng)用程序。

1 X1203內(nèi)部結(jié)構(gòu)和工作特性

X1203是帶時(shí)鐘、日歷和2個(gè)鬧鐘報(bào)警的實(shí)時(shí)時(shí)鐘。雙端口時(shí)鐘和報(bào)警寄存器使時(shí)鐘即使在讀寫操作期間也能精確地工作,時(shí)鐘/日歷提供了可通過一組寄存器進(jìn)行控制和讀出的功能;時(shí)鐘使用32.768kHz晶體輸入,以秒、分、時(shí)、日、星期、月和年為單位跟蹤時(shí)間,具有閏年校正,并能對(duì)小于31天的月自動(dòng)進(jìn)行調(diào)整;2個(gè)鬧鐘(報(bào)警)即中斷輸出,輸出脈沖重復(fù)率可以從1次/min~1次/年,支持I2C總線的2線接口,具有400kHz的數(shù)據(jù)傳送速率和內(nèi)部切換電路的輔助電源輸入端,可靠性高,電源電壓從2.5~6V實(shí)時(shí)時(shí)鐘均能正常工作。

X1203的內(nèi)部結(jié)構(gòu)如圖1所示,由電源控制、振蕩器、分頻器、時(shí)鐘控制寄存器(CCR)、控制邏輯電路、移位寄存器等組成。

1.1 X1203的封裝形式和引腳說明

X1203有8引腳SOIC和8引腳TSSOP 2種封裝形式,引腳排列如圖2所示。

    SCL:串行時(shí)鐘引腳,用于使所有數(shù)據(jù)隨時(shí)鐘同步輸入器件和從器件輸出。此引腳上的輸入緩沖器總是激活的(不選通)。

SDA:串行數(shù)據(jù)引腳,用于把數(shù)據(jù)送入器件和從器件送出數(shù)據(jù)。它具有漏極開路的輸出,可以與其它漏極開路或集電極開路輸出端進(jìn)行線“或”。輸入緩沖器總是激活(不選通)。漏極開路輸出要求使用上拉電阻。

VBACK:備用電源引腳,向器件提供備用電源電壓,在VCC電源出現(xiàn)故障時(shí)向器件提供電源。

IRQ:中斷信號(hào)輸出引腳。引信號(hào)通知處理器,報(bào)警已發(fā)生并請(qǐng)求動(dòng)作,是漏極開路的低電平有效輸出端。

X1、X2:反向放大器的輸入和輸出端引腳,可以在X1端接受外部32.768kHz的方波基準(zhǔn)或配置為片內(nèi)振蕩器。

電源控制電路由引腳Vcc和引腳VBACK輸入,當(dāng)Vcc<VBACK-0.2V時(shí),電源控制電路切換到VBACK,當(dāng)VCC超過VBACK時(shí),它將切換回到VCC。

1.2 時(shí)鐘/控制寄存器(CCR)

時(shí)鐘/控制寄存器(CCR)分為5個(gè)部分:

①報(bào)警寄存器0(Alarm0)為8字節(jié),字節(jié)地址為0000H~0007H;

②報(bào)警寄存器1(Alarm1)為8字節(jié),字節(jié)地址為0008H~000FH;

③控制寄存器(Control)為1字節(jié),字節(jié)地址為0011H;

④實(shí)時(shí)時(shí)鐘(RTC)為8字節(jié),字節(jié)地址為0030H~0037H;

⑤狀態(tài)寄存器(Status)為1字節(jié),字節(jié)地址為0003FH;

其中①~③為非易失性的E2PROM,而④、⑤為易失性的SRAM。CCR的映像如表1所列。

表1 CCR映像

地址 名稱 D7 D6 D5 D4 D3 D2 D1 D0 范圍
00FH SR BAT AL1 AL0 0 0 RWEL WEL RTCF  
0037H Y2K 0 0 Y2K21 Y2K20 Y2K13 0 0 Y2K10 19/20
0036H DW 0 0 0 0 0 DY2 DY1 DY0 0~6
0035H YR Y23 Y22 Y21 Y20 Y13 Y12 Y11 Y10 0~99
0034H MO 0 0 0 G20 G13 G12 G11 G10 1~12
0033H DT 0 0 D21 D20 D13 D12 D11 D10 1~31
0032H HR T24 0 H21 H20 H13 H12 H11 H10 0~23
0031H MN 0 M22 M21 M20 M13 M12 M11 M10 0~59
0030H SC 0 S22 S21 S20 S13 S12 S11 S10 0~59
0011H INT IM AL1E AL0E 0 0 0 0 0  
000FH 未用
000EH DWA1 EDW1 0 0 0 0 DY2 DY1 DY0 0~6
000DH 未用缺省=RTC年值
000CH MOA1 EMO1 0 0 A1G20 A1G13 A1G12 A1G11 A1G10 1~12
000BH DTA1 EDT1 0 A1D21 A1D20 A1D13 A1D12 A1D11 A1D10 0~31
000AH HRA1 EHR1 0 A1H21 A1H20 A1H13 A1H12 A1H11 A1H10 0~23
0009H MNA1 EMN1 A1M22 A1M21 A1M20 A1M13 A1M12 A1M11 A1M10 0~59
0008H SCA1 ESC1 A1S22 A1S21 A1S20 A1S13 A1S12 A1S11 A1S10 0~59
0007H 未用
0006H DWA0 EDW0 0 0 0 0 DY2 DY1 DY0 0~6
0005H 未用缺省=RTC年值
0004H MOA0 EMO0 0 0 A0G20 A0G13 A0G12 A0G11 A0G10 1~12
0003H DTA0 EDT0 0 A0D21 A0D20 A0D13 A0D12 A0D11 A0D10 0~31
0002H HRA0 EHR0 0 A0H21 A0H20 A0H13 A0H12 A0H11 A0H10 0~23
0001H MNA0 EMN0 A0M22 A0M21 A0M20 A0M13 A0M12 A0M11 A0H10 0~59
0000H SCA0 ESC0 A0S22 A0S21 A0S20 A0S13 A0S12 A0S11 A0S10 0~59

實(shí)時(shí)時(shí)鐘(RTC)使用外部32.768kHz石英晶體來保持年、月、日、時(shí)、分和秒的精確的內(nèi)部表示。RTC具有閏年校正和世紀(jì)字節(jié)。上電后,直到至少有1字節(jié)寫入RTC寄存器時(shí),時(shí)鐘才開始計(jì)數(shù)。啟動(dòng)讀命令并指定對(duì)應(yīng)于實(shí)時(shí)時(shí)鐘(RTC)寄存器的地址可以讀RTC,也可以通過寫RTC寄存器來設(shè)置時(shí)間和日期。2個(gè)報(bào)警寄存器,其內(nèi)容模仿RTC的內(nèi)容,只是增加了使能位并去除了24小時(shí)時(shí)間選擇位。通過使能位和實(shí)時(shí)寄存器的設(shè)置,可以確定報(bào)警時(shí)間。

控制寄存器中位IM為方式控制位。

①IM=0(正常方式)。RTC與Alarm0寄存器設(shè)置的內(nèi)容匹配時(shí),將自動(dòng)置位狀態(tài)寄存器的AL0位。如果控制寄存器的AL0E位也為“1”,則輸出IRQ信號(hào)將變?yōu)橛行?;如果AL0E為“0”,則AL0位被置位,IRQ信號(hào)保持不變。RTC與Alarm1寄存器設(shè)置的內(nèi)容匹配時(shí)自動(dòng)置位AL1位。如果AL1E也為“1”,則輸出IRQ信號(hào)將變?yōu)橛行?;如果AL1E為“0”,則AL1位被復(fù)位,IRQ信號(hào)保持不變。

②IM=1(脈沖中斷方式)。此方式不使用位AL0E和AL1E,Alarm1的工作如前,RTC與Alarm1寄存器設(shè)置的內(nèi)容匹配時(shí)將自動(dòng)置位AL1位,機(jī)必須通過查詢AL1位以決定是否發(fā)生了報(bào)警。Alarm0提供輸出響應(yīng),RTC與Alarm0寄存器設(shè)置的內(nèi)容匹配時(shí),輸出IRQ脈沖1次,脈沖寬度約為30ms。所有的Alarm0寄存器使能選項(xiàng)均可使用,從而實(shí)現(xiàn)非常靈活的長時(shí)間循環(huán)觸發(fā)器。

1.3 串行通信接口

X1203支持I2C總線接口。I2C總線是一個(gè)十分完善的多主系統(tǒng)總線,總線上可以掛接多個(gè)MCU,因此有4種工作方式:主發(fā)送、主接收、從發(fā)送、從接收。下面介紹的單個(gè)MCU系統(tǒng),只用到I2C總線的主方式,即主發(fā)送與主接收。目前,帶有I2C總線接口的MCU只有少數(shù)廠家的個(gè)別產(chǎn)品,運(yùn)用單片機(jī)的通用I/O口來虛擬I2C總線接口,可以很好地解決與X01203的接口問題。圖3為X1203與51系列單片機(jī)的接口。X1203的SCL為串行移位時(shí)鐘輸入,P3.6與SCL相連以產(chǎn)生模擬時(shí)鐘信號(hào);SDA為串行數(shù)據(jù)輸入輸出,P2.7與SDA相連以實(shí)現(xiàn)主器件51系列單片機(jī)與從器件X1203的數(shù)據(jù)通信。

51系列單片機(jī)對(duì)X1203有讀寫兩種操作。寫操作包括字節(jié)寫和頁寫(1次寫8字節(jié)連續(xù)地址單元),讀操作包括當(dāng)前地址讀、隨機(jī)地址讀和順序讀。具體格式如圖4所示。順序讀以當(dāng)前地址讀或隨機(jī)地址讀啟動(dòng),但主器件接收到第1個(gè)數(shù)據(jù)字節(jié)后不是結(jié)束讀周期,而是以應(yīng)答做出響應(yīng)。這時(shí)讀操作的地址計(jì)數(shù)器自動(dòng)增量,允許在1次操作期間內(nèi)順序讀出整個(gè)存儲(chǔ)的內(nèi)容。

2 運(yùn)用虛擬I2C總線軟件包VIIC設(shè)計(jì)時(shí)鐘芯片X1203的應(yīng)用程序

由于I2C總線協(xié)議的復(fù)雜性和操作管理的特殊性,在擴(kuò)展I2C外圍器件時(shí),如果還要在了解I2C總線協(xié)議、操作原理的基礎(chǔ)上,采用直接方式進(jìn)行I2C總線外圍器件的應(yīng)用程序設(shè)計(jì),就會(huì)使得I2C總線應(yīng)用程序的設(shè)計(jì)難度很大,也使I2C總線推廣應(yīng)用較慢。因此,迫切需要推出I2C總線的應(yīng)用軟件平臺(tái),使大家不必了解I2C總線就能設(shè)計(jì)I2C總線應(yīng)用程序。下面介紹如何運(yùn)用虛擬I2C總線軟件包VIIC 1.0來設(shè)計(jì)時(shí)鐘芯片X1203的應(yīng)用程序。

軟件包VIIC實(shí)現(xiàn)非介入性操作,接口界面是軟件包應(yīng)用時(shí)唯一的觸及面。VIIC1.0的接口界面為數(shù)據(jù)讀寫子程序RDNBYT/WRNBYT,因此RDNBYT/WRNBYT的調(diào)用操作命令,以及滿足調(diào)用操作的初始化操作3的條命令為VIIC的應(yīng)用界面,即:

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

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

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

2.1 設(shè)定時(shí)鐘芯片當(dāng)前值

將時(shí)鐘芯片當(dāng)前值設(shè)定為2002、3、20、星期三、18:28:38

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

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

VSDA EQU P3.7 ;用P3.7虛擬SDA

VSCL EQU P3.6 ;用P3.6虛擬SCL

SLA EQU 60H ;60H為尋址字節(jié)存放單元

NUMBYT EQU 61H ;61H為傳送字節(jié)數(shù)據(jù)存放單元

MTD EQU 40H ;40H為發(fā)送緩沖區(qū)首地址

MRT EQU 50H ;50H為接收緩沖區(qū)首地址

③設(shè)定時(shí)鐘芯片當(dāng)前值子程序設(shè)計(jì)。設(shè)時(shí)鐘芯片當(dāng)前值設(shè)定子程序名為SJSD。SJSD的程序清單如下:

VSDA EQU P3.7

VSCL EQU P3.6

SLA EQU 60H

NUMBYT EQU 61H

MTD EQU 40H

SJSD:MOV 40H,#00H ;將狀態(tài)寄存器的高位地址、

MOV 41H,#3FH ;低位地址以及要寫入狀態(tài)

MOV 42H,#02H ;寄存器的值依次裝入發(fā)送緩沖區(qū)

MOV SLA,#0DEH ;尋址時(shí)鐘芯片X1203并為發(fā)送狀態(tài)

MOV NUMBYT,#03H ;確定發(fā)送字節(jié)數(shù)

LCALL WRNBYT ;調(diào)用VIIC1.0是N全字節(jié)寫入子程序

MOV 40H,#00H ;將狀態(tài)寄存器的高位地址、

MOV 41H,#3FH ;低位地址以及要寫入狀態(tài)

MOV 42H,#06H ;寄存器的值依次裝入發(fā)送緩沖區(qū)

MOV SLA,#0DEH ;尋址時(shí)鐘芯片X1203并為發(fā)送狀態(tài)

MOV NUMBYT,#03H ;確定發(fā)送字節(jié)數(shù)

LCALL WRNBYT ;調(diào)用VIIC1.0中N個(gè)字節(jié)寫入子程序

MOV 40H,#00H ;將RTC寄存器組的“秒”寄

MOV 41H,#30H :存器的高位地址、低位地址

MOV 42H,#38H ;以及待設(shè)定的時(shí)間參數(shù)依

MOV 43H,#28H ;次裝入發(fā)送緩沖區(qū)

MOV 44H,#98H

MOV 45H,#20H

MOV 46H,#03H

MOV 47H,#02H

MOV 48H,#03H

MOV 49H,#20H

MOV SLA,#0DEH;尋址時(shí)鐘芯片X1203并為發(fā)送狀態(tài)

MOV NUMBYT,#0AH ;確定發(fā)送字節(jié)數(shù)

LCALL WRNBYT ;調(diào)用VIIC1.0中N個(gè)字節(jié)寫入子程序

RET

   
2.2 讀出時(shí)鐘芯片當(dāng)前值

①、②與設(shè)定時(shí)鐘芯片當(dāng)前值相同。

③讀出時(shí)鐘芯片當(dāng)前值子程序設(shè)計(jì)。設(shè)時(shí)鐘芯片當(dāng)前值讀出子程序名為SJDC。SJDC的程序清單如下:

VSDA EQU P3.7

VSCL EQU P3.6

SLA EQU 60H

NUMBYT EQU 61H

MTD EQU 40H

MRD EQU 50H

SJDC:MOV 40H,#00H;將RTC寄存器組的“秒”

MOV 41H,#30H ;寄存器的高位地址、低位地址依次裝入發(fā)送緩沖區(qū)

MOV SLA,#0DEH;尋址時(shí)鐘芯片X1203并為發(fā)送狀態(tài)

MOV NUMBYT,#02H ;確定發(fā)送字節(jié)數(shù)

LCALL WRNBYT ;調(diào)用VIIC1.0中N個(gè)字節(jié)寫入子程序

MOV SLA,#0DFH ;尋址時(shí)鐘芯片X1203并為接收狀態(tài)

MOV NUMBYT,#08H ;確定接收字節(jié)數(shù)

LCALL RDNBYT ;調(diào)用VIIC1.0中N個(gè)字節(jié)讀出子程序

RET

設(shè)定時(shí)鐘芯片的報(bào)警值同設(shè)定時(shí)鐘芯片的當(dāng)前值類似,只不過是把待設(shè)定的報(bào)警值寫到相應(yīng)的報(bào)警寄存器組。

通過上述應(yīng)用可以看出,使用VIIC軟件包后,編寫I2C總線接口應(yīng)用程序不必了解I2C總線原理、協(xié)議和時(shí)序,只要了解VIIC的應(yīng)用操作即可。關(guān)于VIIC1.0軟件包的詳細(xì)內(nèi)容,可參閱參考文獻(xiàn)1和參考文獻(xiàn)2。

本站聲明: 本文章由作者或相關(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日 /美通社/ -- 英國汽車技術(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中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

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

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

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

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

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

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國電影電視技術(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年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動(dòng)力")與長三角投資(上海)有限...

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