摘要:根據(jù)坦克半主動(dòng)懸掛電控單元對(duì)定時(shí)的需要,文中給出了采用I2 C總線接口實(shí)時(shí)時(shí)鐘芯片進(jìn)行準(zhǔn)確定時(shí)的設(shè)計(jì)原理,提出了實(shí)時(shí)時(shí)鐘芯片DS1307與單片機(jī)接口電路的改進(jìn)辦法,同時(shí)給出了通用接口程序?qū)嵗,最后?duì)DS1307在應(yīng)用時(shí)的一些注意事項(xiàng)進(jìn)行了必要的說(shuō)明。
關(guān)鍵詞:半主動(dòng)懸掛;I2C總線;I2C總線虛擬技術(shù);DS1307
1 引言
坦克半主動(dòng)懸掛技術(shù)是坦克行動(dòng)部分的關(guān)鍵技術(shù),其中的電控單元是坦克懸掛按指定控制規(guī)律運(yùn)動(dòng)的保障,所以電控單元時(shí)鐘的選擇是至關(guān)重要的。
電控單元的時(shí)鐘基準(zhǔn)通?衫肅PU內(nèi)部定時(shí)器作為時(shí)鐘基準(zhǔn),并通過(guò)軟件編程和CPU時(shí)鐘中斷來(lái)構(gòu)造一個(gè)軟時(shí)鐘。這種方法的優(yōu)點(diǎn)是無(wú)需額外硬件支持,但缺點(diǎn)是時(shí)鐘的計(jì)時(shí)精度受CPU主晶振以及與其相連的起振電容的影響而無(wú)法做到很高,因此累積誤差較大。同時(shí)在主電源掉電時(shí)為了維持時(shí)鐘不停擺,系統(tǒng)必須由備用電源給整個(gè)CPU供電,這將導(dǎo)致功耗增大。
2 DS1307的特點(diǎn)
DS1307是美國(guó)DALLAS公司推出的I2C 總線接口實(shí)時(shí)時(shí)鐘芯片,它可獨(dú)立于CPU工作,不受CPU主晶振及其電容的影響,且計(jì)時(shí)準(zhǔn)確,月累積誤差一般小于10秒。芯片還具有主電源掉電情況下的時(shí)鐘保護(hù)電路,DS1307的時(shí)鐘靠后備電池維持工作,拒絕CPU對(duì)其讀出和寫入訪問(wèn)。同時(shí)還具有備用電源自動(dòng)切換控制電路,因而可在主電源掉電和其它一些惡劣環(huán)境場(chǎng)合中保證系統(tǒng)時(shí)鐘的定時(shí)準(zhǔn)確性。DS1307具有產(chǎn)生秒、分、時(shí)、日、月、年等功能,且具有閏年自動(dòng)調(diào)整功能。同時(shí),DS1307芯片內(nèi)部還集成有一定容量、具有掉電保護(hù)特性的靜態(tài)RAM,可用于保存一些關(guān)鍵數(shù)據(jù)。
3 硬件接口電路的改進(jìn)
按照DALLAS公司推薦的硬件接法,往往需要精度很度的晶體,為了提高其可靠性并節(jié)約成本,筆者經(jīng)過(guò)實(shí)驗(yàn),改用如圖1的接法,克服了使用普通晶振時(shí)DS1307不起振的問(wèn)題。從而保證了DS1307起振。
圖1中R1的作用是給晶振端加一偏置電壓,以保證DS1307起振,從而放寬DS1307對(duì)晶振的要求。而R2和R3則為I2C總線所需要的上拉電阻。
4 接口程序設(shè)計(jì)
4.1 I2C總線的特點(diǎn)
I2C總線是飛利浦公司的一種二線通信專利技術(shù)。它可用兩根線(SDA數(shù)據(jù)線和SCL時(shí)鐘線)連接多個(gè)具有I2C總線接口的器件,每類I2C器件都有唯一確定的地址號(hào),以便在器件之間進(jìn)行數(shù)據(jù)傳送。I2C總線是同步串行數(shù)據(jù)傳輸總線,其內(nèi)部為雙向傳輸電路,端口輸出為開(kāi)漏結(jié)構(gòu),故總線上必須有上拉電阻,通常可取5~10kΩ。I2C總線上可以連接若干單片機(jī)和外圍器件,每一個(gè)器件由一個(gè)唯一的地址確定,I2C總線的傳輸速率為100kb/s(改進(jìn)后的規(guī)范為400kb/s),總線驅(qū)動(dòng)能力為400pF。

普通的微處理器通常無(wú)I2C總線接口,這樣要驅(qū)動(dòng)DS1307,就必須采用單主方式下的I2C總線虛擬技術(shù)。在單主方式的I2C總線系統(tǒng)中,總線上只有一個(gè)單片機(jī),其余都是帶I2C總線的外圍器件,由于總線上只能有一個(gè)單片機(jī)成為主節(jié)點(diǎn)(又稱之為主器件),因此該單片機(jī)將永遠(yuǎn)占據(jù)總線而不會(huì)出現(xiàn)總線競(jìng)爭(zhēng),主節(jié)點(diǎn)不必有自己的節(jié)點(diǎn)地址,在這種情況下,單片機(jī)可以沒(méi)有I2C總線接口,但可以用兩根I/O口線來(lái)虛擬I2C總線接口,這就是I2C總線虛擬技術(shù)。在I2C總線中,發(fā)送數(shù)據(jù)的設(shè)備稱之為發(fā)送器,接收數(shù)據(jù)的設(shè)備稱之為接收器。I2C總線上的主器件應(yīng)是能夠在時(shí)鐘線(SDL)上產(chǎn)生時(shí)鐘脈沖,而在數(shù)據(jù)線(SDA)上產(chǎn)生尋址信號(hào)、開(kāi)始條件、停止條件以及建立數(shù)據(jù)傳輸?shù)钠骷,任何被尋址選中的器件都將被看成是從器件。因此,DS1307在I2C總線上應(yīng)作為從器件.
4.3 DS1307的時(shí)序
(1)I2C總線上的信號(hào)
DS1307的操作時(shí)序?qū)嶋H上就是I2C總線時(shí)序?偩上傳送的一幀數(shù)據(jù)為一個(gè)字節(jié)。啟動(dòng)I2C總線后,傳送的字節(jié)數(shù)沒(méi)有限制,它只要求每傳送一個(gè)字節(jié)后,對(duì)方回應(yīng)一個(gè)應(yīng)答位。在發(fā)送時(shí),首先發(fā)送數(shù)據(jù)的最高位。每次傳送開(kāi)始均需要有一個(gè)起始信號(hào),結(jié)束時(shí)有一個(gè)停止信號(hào)。在總線傳送完一個(gè)字節(jié)后,可以通過(guò)對(duì)時(shí)鐘線的控制來(lái)使傳送暫停。I2C總線上的信號(hào)如圖2所示。由圖中可以看出,啟動(dòng)信號(hào)(S)出現(xiàn)在時(shí)鐘SCL為高電平,且數(shù)據(jù)線SDA由高電平到低電平的變化時(shí)。
停止信號(hào)(P)是在時(shí)鐘SCL為高電平且數(shù)據(jù)線SDA由低到高電平變化時(shí),可用來(lái)停止I2C總線數(shù)據(jù)的傳遞。應(yīng)答信號(hào)(A)為I2C總線上的第9個(gè)時(shí)鐘
脈沖對(duì)應(yīng)的應(yīng)答位。當(dāng)相應(yīng)的數(shù)據(jù)線為低電平時(shí)為“應(yīng)答”信號(hào)(





