摘要:介紹了一種基于I2C總線接口的多功能串行芯片X1288的性能特點(diǎn)和工作原理,給出了X1288在電子電能表設(shè)計(jì)中的應(yīng)用方法,同時(shí)給出了X1288和AT89C52的連接電路。實(shí)際應(yīng)用表明:X1288能簡(jiǎn)化電路設(shè)計(jì)并可提高硬件的工作效率。 關(guān)鍵詞:X1288;I2C總線接口;電子電能表 1 引言 X1288是美國(guó)Xicor公司生產(chǎn)的一種集E2PROM、實(shí)時(shí)時(shí)鐘、日歷、CPU監(jiān)控和兩路報(bào)警于一體的多功能集成電路芯片。X1288的時(shí)鐘采用一種價(jià)格低廉的32.768kHz晶振,具有百分秒、秒、分、時(shí)、日、月、年及星期信息,并可設(shè)定兩個(gè)報(bào)警時(shí)間,其時(shí)鐘和報(bào)警寄存器的雙通道結(jié)構(gòu)使得它能在讀寫數(shù)據(jù)時(shí)仍保持時(shí)鐘的準(zhǔn)確性。此外,X1288還可提供32k字節(jié)的E2PROM陣列,并具有電源和CPU監(jiān)控功能。 X1288串行芯片一般采用I2C總線來(lái)實(shí)現(xiàn)與主控制器的數(shù)據(jù)交換。I2C是由Philips公司開發(fā)的一種用于內(nèi)部IC控制的雙向二線串行總線,通過(guò)該總線可很好地解決現(xiàn)代電子系統(tǒng)中眾多IC之間,及IC與外界的通信需要,并可大大簡(jiǎn)化電路設(shè)計(jì),提高硬件電路的工作效率。 X1288芯片具有16腳SOIC或14腳TSSOP小體積封裝形式。圖1為14腳TSSOP封裝的引腳示意圖,各引腳的定義如下: X1、X2:這兩個(gè)引腳可分別用作片內(nèi)振蕩器的反相放大器的輸入和輸出端。應(yīng)用時(shí)需外接一個(gè)32.768kHz的石英晶體,其作用是為系統(tǒng)時(shí)鐘/振蕩器提供時(shí)間基準(zhǔn)。 RESET:復(fù)位信號(hào)輸出端。當(dāng)看門狗超時(shí)或電壓跌落到固定的VTRIP門限時(shí),此引腳將向主處理器發(fā)送一個(gè)低電平有效的漏極開路輸出信號(hào),以使電路系統(tǒng)快速?gòu)?fù)位。 SDA:串行數(shù)據(jù)端,為漏極開路輸出的雙向引腳,用于數(shù)據(jù)的輸入輸出。實(shí)際應(yīng)用時(shí)需接上拉電阻,并應(yīng)與其它漏極或集電極開路輸出端線相或。該端的輸入緩沖器總是處于激活狀態(tài),輸出電路可通過(guò)一個(gè)斜率控制的下拉控制輸出信號(hào)的下降時(shí)間。設(shè)計(jì)時(shí)通常把電路設(shè)計(jì)成400kHz的二線接口。 SCL:串行時(shí)鐘端口。 PHZ/IRQ:可編程頻率/中斷輸出端。當(dāng)編程為頻率輸出時(shí),該端接到內(nèi)部振蕩器的輸出腳,以輸出頻率為32.768kHz、4096Hz或1Hz的信號(hào),也可以無(wú)信號(hào)輸出。當(dāng)編程為中斷輸出時(shí),該端可在報(bào)警發(fā)生時(shí)激活,以向主機(jī)請(qǐng)求中斷。 VBACK:備用電源輸入端。當(dāng)VCC小于VBACK-0.2V時(shí),電源控制電路將切換至VBACK供電;而當(dāng)VCC超過(guò)VBACK時(shí),又會(huì)自動(dòng)切回VCC供電方式,圖2所示是其電源控制過(guò)程示意圖。 X1228中的時(shí)鐘/控制寄存器(CCR)位于從E2PROM陣列中分離出來(lái)的一個(gè)區(qū)域,地址位于[000]0h~[003]Fh之間。CCR一般被分成5段,可分別用于狀態(tài)寄存器(1字節(jié))、實(shí)時(shí)時(shí)鐘(8字節(jié))、控制寄存器(4字節(jié))、報(bào)警寄存器1和報(bào)警寄存器0(各8字節(jié))。 3.1 狀態(tài)寄存器(SR) 狀態(tài)寄存器是易失性的,其地址是003Fh。表1所列是其命令格式,各命令字的具體含義如下:
BAT:后備電源標(biāo)志位。當(dāng)BAT為“1”時(shí),表明器件在使用后備電源。 AL1、AL0:報(bào)警選擇位。X1288中有兩個(gè)報(bào)警寄存器,若其中的某一報(bào)警時(shí)間與實(shí)時(shí)時(shí)鐘相同時(shí),相應(yīng)的AL1或AL0位將變?yōu)椤埃薄?;?dāng)讀取SR的值后,該位又變?yōu)椤埃啊薄?/P> RWEL:時(shí)鐘/控制寄存器(CCR)寫入控制位。對(duì)CCR進(jìn)行寫操作時(shí),必須先使該位為“1”。 WEL:CCR和E2PROM的寫入控制位。在對(duì)CCR和E2PROM進(jìn)行寫操作時(shí),必須先使該位為“1”。同理,如果要寫入時(shí)鐘和控制寄存器,也必須先寫“02h”至SR(使RWEL為“1”),再寫“06h” (使WEL為“1”)。 RTCF:掉電標(biāo)志位。當(dāng)全部電源(包括VCC和VBACK)失效后,該位變?yōu)?“1”;而在系統(tǒng)再次上電后,如果要對(duì)RTC進(jìn)行第一次有效寫操作,則應(yīng)首先將使該位為“0”。 需要說(shuō)明的是,雖然SR中的第3、4位沒有使用,但這些位必須置“0”。 實(shí)時(shí)時(shí)鐘寄存器的地址0030h~0037h分別對(duì)應(yīng)秒、分、時(shí)、日、月、年、星期和百分秒,并采用BCD碼表示。通過(guò)啟動(dòng)一條讀命令并確定相應(yīng)的地址,即可讀取時(shí)間信息。因?yàn)闀r(shí)鐘是連續(xù)運(yùn)行的,而每次讀操作都需要一定的時(shí)間,這就有可能在讀操作過(guò)程中使時(shí)間發(fā)生改變。本器件是由讀命令將時(shí)間鎖存在分立的鎖存器中,因而可以避免讀操作過(guò)程中時(shí)間發(fā)生變化。當(dāng)一次讀出并不是由讀操作引起時(shí),系統(tǒng)將發(fā)出報(bào)警。 可以通過(guò)向RTC寄存器中寫入數(shù)據(jù)來(lái)設(shè)定時(shí)間和日期。通過(guò)一次不完全連續(xù)的寫操作可避免改變當(dāng)前時(shí)間,在RTC數(shù)據(jù)輸入字節(jié)之前的ACK位時(shí),時(shí)鐘的下降沿會(huì)將當(dāng)前的時(shí)間值裝載到分立的緩沖器中,以使時(shí)鐘繼續(xù)運(yùn)行。而此時(shí)新的串行輸入數(shù)據(jù)將取代緩沖器的值。當(dāng)有效的寫操作結(jié)束后,系統(tǒng)產(chǎn)生停止位時(shí),這個(gè)新值才被裝載到RTC寄存器中。向RTC寫入單個(gè)字節(jié)并不對(duì)其它字節(jié)的數(shù)據(jù)產(chǎn)生影響。 當(dāng)X1288在VCC和VBACK都失效以后,即使再次上電后,其時(shí)鐘也將停止增加,直到在時(shí)鐘寄存器中進(jìn)行至少一個(gè)字節(jié)的寫操作以后。 讀出和設(shè)定時(shí)鐘應(yīng)注意:百分秒寄存器(SSEC)是只讀的;小時(shí)寄存器(HR)中的MIL位是12/24時(shí)制選擇位?“1”為24時(shí)制,“0”為12時(shí)制?,H21位是AM/PM標(biāo)志位?“1”代表PM,“0”代表AM?;星期中的七天只用三位(DY0~2)來(lái)計(jì)數(shù),其值在0~6之間循環(huán),數(shù)字所代表星期中的哪一天可由設(shè)計(jì)者決定,缺省值為0。 3.3 控制寄存器 表2所示是4個(gè)控制寄存器的命令字列表,其中的DTR是數(shù)字化微調(diào)寄存器,它的作用是調(diào)整每秒的計(jì)數(shù)值和ppm誤差,以便在長(zhǎng)時(shí)間內(nèi)獲得更好的計(jì)時(shí)精度。DTR2是符號(hào)位,“1”為正補(bǔ)償,“0”為負(fù)補(bǔ)償;DTR1、DTR0可分別提供10ppm、20ppm的補(bǔ)償。由DTR0~DTR2三位可表示-30ppm~+30ppm的補(bǔ)償范圍。
ATR寄存器用來(lái)微調(diào)X1和X2之間的片內(nèi)負(fù)載電容,其范圍從+116ppm~-37ppm,具體電容值的大小可由下式計(jì)算: CART=[(ATR的十進(jìn)制值)×0.25]+11.0pF 實(shí)際上,數(shù)字和模擬結(jié)合起來(lái)的微調(diào)范圍可高達(dá)+146ppm。BL中的BP2~BP0位是塊保護(hù)位,這些位可用來(lái)決定對(duì)E2 PROM陣列中8?jìng)€(gè)保護(hù)段的某些具體段提供寫保護(hù)(參見表3所列);WD1、WD0用來(lái)設(shè)置看門狗時(shí)限。
INT是中斷控制和頻率輸出寄存器,其中AL1E和AL0E是報(bào)警中斷信號(hào)(IRQ)的輸出使能位,這兩位分別結(jié)合SR中的AL1和AL0,可用來(lái)指示報(bào)警是否發(fā)生;IM是脈沖中斷方式控制位,當(dāng)報(bào)警條件匹配時(shí),IRQ將輸出一個(gè)單次脈沖,若IM設(shè)為“1”,則脈沖輸出是周期性的;FO1和FO0是頻率輸出控制位,主要用于選擇內(nèi)部振蕩器的三種分頻輸出之一并在PHZ端輸出。 3.4 報(bào)警寄存器 X1288有兩個(gè)報(bào)警寄存器,地址分別在0000h~0007h和0008h~000Fh,通過(guò)這兩個(gè)報(bào)警寄存器可設(shè)置兩個(gè)報(bào)警時(shí)間。報(bào)警寄存器的內(nèi)容與RTC很類似,不同之處在于其最高位被設(shè)置為使能位,而取消了HR中的12/24時(shí)制控制位。使能位規(guī)定了哪些寄存器可用來(lái)與實(shí)時(shí)時(shí)鐘寄存器作比較。通過(guò)設(shè)置EMOn位并結(jié)合其它使能位和特定的報(bào)警時(shí)間,用戶可以建立在每年的同一時(shí)間(精確到秒)觸發(fā)一次報(bào)警。用戶可以通過(guò)輪詢AL0和AL1軟標(biāo)志來(lái)確定一次報(bào)警的發(fā)生,或者使能IRQ輸出作為一個(gè)硬件報(bào)警標(biāo)志。當(dāng)所有的使能位都被設(shè)置成“0”時(shí),整個(gè)系統(tǒng)無(wú)報(bào)警。 X1288在應(yīng)用時(shí)一般作為從器件通過(guò)串行I2C總線來(lái)實(shí)現(xiàn)與主控制器的通信。其中,SDA用來(lái)接收、發(fā)送數(shù)據(jù);SCL用于接收產(chǎn)生的同步脈沖,當(dāng)SCL為低時(shí),SDA上的數(shù)據(jù)發(fā)生變化,為高時(shí)表明可以接收SDA上的數(shù)據(jù)。 I2C總線在SCL為高且SDA線上出現(xiàn)一個(gè)下降沿時(shí)啟動(dòng);而在SCL為高且SDA線上出現(xiàn)一個(gè)上升沿時(shí)停止。啟動(dòng)和停止信號(hào)都由主控器產(chǎn)生,這樣,總線上帶有I2C接口的器件就能很容易地檢測(cè)到這些信號(hào)。但對(duì)于不具備這種接口的單片機(jī)來(lái)說(shuō),為了能夠準(zhǔn)確地檢測(cè)到這些信號(hào),必須保證在總線的一個(gè)時(shí)鐘周期內(nèi)對(duì)SDA線至少進(jìn)行兩次采樣。 I2C總線上的應(yīng)答信號(hào)是用于表明數(shù)據(jù)傳輸成功的信號(hào)。當(dāng)發(fā)送的設(shè)備發(fā)送了啟動(dòng)位和8位數(shù)據(jù)之后,在第9個(gè)SCL有效時(shí),接收設(shè)備將使SDA為低以產(chǎn)生有效的應(yīng)答信號(hào),該信號(hào)可用來(lái)說(shuō)明數(shù)據(jù)已成功接收。當(dāng)接收設(shè)備發(fā)送了表明數(shù)據(jù)已成功接收的應(yīng)答信號(hào)之后,發(fā)送設(shè)備可選擇繼續(xù)發(fā)送數(shù)據(jù)或發(fā)送停止位以結(jié)束發(fā)送,如發(fā)送設(shè)備沒有收到接收設(shè)備的應(yīng)答信號(hào),則說(shuō)明發(fā)送失敗,此時(shí)應(yīng)重發(fā)。 一般情況下,I2C總線上可同時(shí)接多個(gè)設(shè)備,每個(gè)器件都有唯一的地址。X1288有兩個(gè)從設(shè)備地址(從地址的高4位):其中1010為訪問(wèn)E2PROM陣列;1101為訪問(wèn)CCR。從地址的3~1位為器件的選擇位,它們規(guī)定為111,最低位R/W用于定義此操作是讀或?qū)?。I2C總線上傳送的每一個(gè)字節(jié)為8位,而啟動(dòng)一次I2C總線后傳輸?shù)淖止?jié)數(shù)可以是一個(gè),也可以是多個(gè)。每傳送一個(gè)字節(jié)后,都必須跟隨一個(gè)應(yīng)答位,并且先發(fā)送的數(shù)據(jù)位為最高位。在全部數(shù)據(jù)傳送結(jié)束后主控制器發(fā)送終止信號(hào)。X1288有兩種寫操作方式,分別為單字節(jié)寫或頁(yè)面寫。圖4所示是對(duì)X1288完成一個(gè)字節(jié)的寫操作時(shí)序,由圖可見,寫操作共由四個(gè)字節(jié)組成,其中包括一個(gè)從地址字節(jié)、一個(gè)要訪問(wèn)的地址字(2字節(jié))、一個(gè)字節(jié)的操作數(shù)。采用頁(yè)面寫時(shí),它將以和單字節(jié)寫操作相同的方式啟動(dòng),但在第一個(gè)字節(jié)傳送之后不結(jié)束寫周期,主機(jī)可發(fā)送多于63個(gè)字節(jié)到存儲(chǔ)器陣列和多于7個(gè)字節(jié)到CCR。X1288有三種基本的讀操作方式:當(dāng)前地址讀、隨機(jī)讀和序列讀。 在多用戶電子電能表的設(shè)計(jì)中,X1288的實(shí)時(shí)時(shí)鐘可保證系統(tǒng)時(shí)間的正確性,并為多費(fèi)率的電價(jià)計(jì)量等提供準(zhǔn)確的時(shí)間;當(dāng)由于外部干擾而產(chǎn)生死循環(huán)時(shí),單片機(jī)能自動(dòng)復(fù)位;32k字節(jié)的E2PROM則可用于保證所有用戶的電能累積值、預(yù)交電費(fèi)余額和異常故障等重要數(shù)據(jù)的可靠保存和靈活更改;當(dāng)系統(tǒng)掉電時(shí),系統(tǒng)中的電源管理系統(tǒng)將會(huì)自動(dòng)轉(zhuǎn)為鋰離子電池供電方式。 X1288與單片機(jī)的接線如圖5所示, 由于AT89C52本身沒有帶I2C總線接口,設(shè)計(jì)中使用P1.6/ P1.7作為I2C總線接口的SCL/SDA。本電路為單主系統(tǒng),單片機(jī)只對(duì)X1288進(jìn)行讀寫操作,因此可通過(guò)對(duì)I2C總線典型信號(hào)的時(shí)序模擬編制應(yīng)用程序。文獻(xiàn)?2?中提供了一套I2C總線數(shù)據(jù)模擬傳送的通用軟件包,可方便地作為讀寫子程序來(lái)設(shè)計(jì)系統(tǒng)軟件,其中包括基本的啟動(dòng)、停止、發(fā)送應(yīng)答位、發(fā)送非應(yīng)答位的子程序,同時(shí)還有應(yīng)答位檢查、發(fā)送一個(gè)字節(jié)數(shù)據(jù)、接收一個(gè)字節(jié)數(shù)據(jù)、發(fā)送n個(gè)字節(jié)數(shù)據(jù)和接收n個(gè)字節(jié)數(shù)據(jù)等子程序。 X1288作為微處理器的外圍器件,它把最基本的功能組合在了一起,因而具有較高的性價(jià)比,可大大降低電路板的空間和功耗,因此,是系統(tǒng)可靠運(yùn)行的關(guān)鍵器件。 |
- I2C串(5463)
I2C總線的工作原理和功能特點(diǎn)
2514
I2C總線的工作原理和應(yīng)用
3134
I2C總線原理詳解
3925
I2C的定義及其類型簡(jiǎn)介
電子式電能表的程序設(shè)計(jì)
電能計(jì)量集成電路芯片CS5460A電子資料
電能表
電能表與感應(yīng)電機(jī)的磁極結(jié)構(gòu)有哪些不同
電能表是什么?
電能表潛動(dòng)現(xiàn)象的原因及判定
電能表的分類以及命名規(guī)則
STM32三相電能表的電能參量怎么計(jì)算?
[原創(chuàng)]誰(shuí)有電子式電能表的原理圖,它里面的控制芯片是用什么語(yǔ)言編寫的程序,屬于哪
【創(chuàng)龍TLZ7x-EasyEVM評(píng)估板試用連載】電能表設(shè)計(jì)
業(yè)內(nèi)分享熱敏電阻在智能電能表中常用的型號(hào)及相關(guān)特性
使用CyControl編程I2C串行EEPROM導(dǎo)致失敗
基于單片機(jī)的數(shù)字電能表設(shè)計(jì)
復(fù)費(fèi)率電能表中 鋰電池的使用一般應(yīng)考慮哪些因素
如何通過(guò)ModbusRTU協(xié)議讀取電能表的數(shù)據(jù)?
常用的電能表主要分為哪些
感應(yīng)系電能表的結(jié)構(gòu)
請(qǐng)問(wèn)電能表有哪些類型及型號(hào)含義?
鐵電存儲(chǔ)器FM24C256在電能表中的使用概述
HD-3005系列三相國(guó)網(wǎng)智能電能表校驗(yàn)裝置
i2c總線介紹
0高精度的實(shí)時(shí)時(shí)間芯片X1288的原理及應(yīng)用1
15I2C 串行總線技術(shù)在DSP 系統(tǒng)中的虛擬實(shí)現(xiàn)The Sim
9I2C總線在MCS51系列單片機(jī)數(shù)據(jù)采集系統(tǒng)中的實(shí)現(xiàn)
48基于S3C44B0X的I2C總線設(shè)計(jì)
30I2C總線應(yīng)用中的幾個(gè)問(wèn)題
51I2C總線接口模塊設(shè)計(jì)
41I2C總線
49PCA9564 并行總線轉(zhuǎn)I2C總線接口芯片簡(jiǎn)介
51PCA9665并行總線轉(zhuǎn)I2C總線接口芯片簡(jiǎn)介
46I2C Guid I2C指南
36I2C總線技術(shù)在彩電中的應(yīng)用
25基于ADE7758芯片的GPRS網(wǎng)絡(luò)電能表的設(shè)計(jì)與實(shí)現(xiàn)
91鐵電存儲(chǔ)器FM3116在電能表中的應(yīng)用
49I2C總線在Linux系統(tǒng)中的驅(qū)動(dòng)設(shè)計(jì)
40I2C總線在大屏幕電視中的運(yùn)用
1501
i2c總線
1403
I2C總線協(xié)議及其應(yīng)用
1756
I2C總線的工作原理與應(yīng)用
5200
CS5460A及其在電子式電能表中的應(yīng)用
2866
I2C總線的單片機(jī)C語(yǔ)言實(shí)現(xiàn)及其應(yīng)用
3293
I2C總線詳解
4147基于CPLD的I2C總線接口設(shè)計(jì)
96電子式多功能電能表在計(jì)量管理中的應(yīng)用
2912互聯(lián)IC總線(I2C)
13探討I2C總線應(yīng)用中的幾個(gè)問(wèn)題
4電能表計(jì)量芯片原理與應(yīng)用
36I2C總線及其在植入式電刺激器中如何應(yīng)用
2I2C串行總線的組成及工作原理的詳細(xì)資料說(shuō)明
6I2C通信協(xié)議應(yīng)該如何學(xué)習(xí)
22電子式電能表和感應(yīng)式電能表的區(qū)別
11965I2C系列的合集,可以系統(tǒng)學(xué)習(xí)I2C協(xié)議
3841LTC2946:寬范圍I2C電源、充電和電能監(jiān)控器數(shù)據(jù)表
4I2C總線的基本通信總結(jié)
19393
你不能不知的I2C總線
14I2C接口配置ES7243錄音芯片,MCU(STM32)收不到I2C ACK的問(wèn)題
10傳感器i2c與arduino連接_Nodemcu I2C接口連接Arduino
1硬件I2C與模擬I2C
81ESP32 之 ESP-IDF 教學(xué)(六)——I2C數(shù)據(jù)總線(I2C)
22一文看懂I2C協(xié)議
40什么是I2C協(xié)議?I2C的功能特點(diǎn)有哪些
9364如何連接和使用16x2 I2C LCD的教程
0類I2C介紹及應(yīng)用注意事項(xiàng)
3123I2C通信協(xié)議及其工作原理
6713I2C子系統(tǒng)SW Architecture
1514
如何解決I2C器件死鎖的問(wèn)題?
3964I2C串行總線協(xié)議是什么?I2C總線有哪些優(yōu)點(diǎn)?
2898什么是串口轉(zhuǎn)I2C?有什么特點(diǎn)?
2046i2c采樣是上升沿嗎?
4510具有串行I2C接口的實(shí)時(shí)時(shí)鐘1339 數(shù)據(jù)表
1遠(yuǎn)程費(fèi)控電能表在電能管理系統(tǒng)中的應(yīng)用
1572
什么是I2C協(xié)議 I2C總線的控制邏輯
2428
簡(jiǎn)單認(rèn)識(shí)I2C通信協(xié)議
3491I2C總線通信原理 如何設(shè)計(jì)I2C總線電路
2047I2C總線設(shè)備地址設(shè)置方法
7449I2C總線在嵌入式系統(tǒng)中的應(yīng)用
1276AS32X601的I2C模塊操作EEPROM詳解
446
電子發(fā)燒友App







評(píng)論