同步串行擴(kuò)展總線接口
[摘要]簡要論述了當(dāng)前單片機(jī)測控領(lǐng)域常見的幾種同步串行擴(kuò)展總線的基本原理,給出了它們典型的應(yīng)用接口方式,同時(shí)對單片機(jī)測控系統(tǒng)的總線選擇提出一些建議。
[關(guān)鍵詞]同步串行總線;單總線;I2C;SPI
1串行總線接口簡介
眾所周知,單片機(jī)與外圍設(shè)備的通信方式可分為并行通信和串行通信,相應(yīng)的通信總線被稱為并行總線和串行總線。并行通信速度快,實(shí)時(shí)性好,但由于占用單片機(jī)的口線多(即使地址和數(shù)據(jù)線可部分復(fù)用),不適合作為小型化產(chǎn)品和分布式、遠(yuǎn)程測控系統(tǒng)的數(shù)據(jù)通信方式。串行通信只需一根和幾根數(shù)據(jù)傳輸線(兼作地址、控制線),不僅大大降低硬件成本,也有利于系統(tǒng)的擴(kuò)展設(shè)計(jì),所以串行總線廣泛應(yīng)用于單片機(jī)測控中。目前串行總線除了使用通用異步串行接口(UART,如:RS-232C/449/423/422/485)以外,應(yīng)用越來越多的是同步串行擴(kuò)展總線接口,主要有單總線、I2C、SPI、USB、MPS、Microwire/PLUS等。越來越多的外圍器件如A/D、E2PROM、集成智能傳感器等,都配置了同步串行擴(kuò)展總線接口I2C、SPI等,而擯棄了以往的并行總線接口。從20世紀(jì)90年代開始,眾多的單片機(jī)廠商都陸續(xù)推出了
帶有同步串行接口的單片機(jī)(一般保留了異步口UART),如:Philips公司的8XC552和LPC76X系列,帶I2C接口;Motorola公司的M68HC05和M68HC11,ATMEL公司的AT89S8252以及新一代的基于RISC的AVR系列單片機(jī)都集成有SPI接口??梢哉f串行總線是當(dāng)今單片機(jī)測控系統(tǒng)開發(fā)的首選,只有在沒必要或不能使用串行總線的場合才用并行總線。文中將逐一介紹上述幾種同步串行擴(kuò)展總線及其接口方式,以便給大家選擇外圍器件及進(jìn)行系統(tǒng)設(shè)計(jì)提供一點(diǎn)借鑒。
2幾種常見的同步串行總線接口的基本原理和使用方法
2.1I2C總線
I2C(Inter-IC)總線是英文INTERICBUS或ICTOICBUS的簡稱,它是由Philips公司推出的一種基于兩線制的同步串行總線,被廣泛應(yīng)用于消費(fèi)類電子產(chǎn)品、通信產(chǎn)品、儀器儀表及工業(yè)測控系統(tǒng)中。在標(biāo)準(zhǔn)模式下,I2C總線的數(shù)據(jù)傳輸速率可達(dá)100間進(jìn)行雙向傳送。各種器件均并聯(lián)在這條總線上,而且每個(gè)器件都有惟一的地址。MCU發(fā)出的控制信號分為地址碼和數(shù)據(jù)碼兩部分:地址碼用來標(biāo)識器件地址,即確定和哪個(gè)器件進(jìn)行通信;數(shù)據(jù)碼就是通信的內(nèi)容。這樣,各器件雖然掛在同一條總線上,卻彼此獨(dú)立,互不干擾。圖2—1以AT89C51(本身不帶I2C接口,用I/O口模擬)接兩片E2PROMAT24C16為例簡要說明I2C接口的使用方法。
圖2—1中,由A0、A1、A2確定器件的地址,故U1的地址為000,U2的地址為001;R1、R2為上拉電阻;用AT89C51的P1.0、P1.1腳模擬出I2C的SCL和SDA信號,對于有I2C的MCU直接接到對應(yīng)的SCL和SDA腳即可。
2.2SPI總線
SPI(SerialPeripheralInterface串行外設(shè)接口)是由Motorola公司提出的一種基于四線制的同步串行總線,它在速度要求不高、低功耗、需保存少量參數(shù)的智能化儀表及測控系統(tǒng)中得到廣泛應(yīng)用。使用SPI總線接口不僅能簡化電路設(shè)計(jì),還可以提高設(shè)計(jì)的可靠性。SPI總線使用4條線:1)SCK(SerialClock),串行時(shí)鐘線,主機(jī)啟動發(fā)送并產(chǎn)生SCK,從機(jī)被動接收時(shí)鐘;2)MISO(MasterInSlaveOut),主機(jī)輸入從機(jī)輸出;3)MOSI(MasterOutSlaveIn),主機(jī)輸出從機(jī)輸入;4)(SlaveSelect),從機(jī)選擇信號,低電平有效。典型的由SPI總線構(gòu)成的分布式測控系統(tǒng)如圖2—2所示。
圖2—2中,各器件的片選端或使能端由MCU的其它I/O端口來控制。同I2C一樣,SPI總線也可以用軟件來模擬。
2.3單總線(1-WIRE)
單總線是DALLAS公司的一項(xiàng)專利技術(shù),它將地址線、數(shù)據(jù)線、控制線、電源線合為一根信號線,允許在這根信號線上掛數(shù)百個(gè)測控對象,這些測控對象使用的芯片每個(gè)都有一個(gè)64位的ROM,也稱之為身份證號,確保掛在單總線上后,可以被惟一地區(qū)分識別出來。ROM中含有CRC檢驗(yàn)碼,能確保數(shù)據(jù)交換可靠。芯片內(nèi)還有收、發(fā)控制和電源存儲電路,一般不用另附電源。這些芯片在檢測地點(diǎn)就把模擬信號數(shù)字化,單總線上傳送的是數(shù)字信號,使系統(tǒng)的抗干擾性能好、可靠性高。單總線系統(tǒng)按單總線協(xié)議規(guī)定的時(shí)序和信號波形進(jìn)行初始化、識別器件和交換數(shù)據(jù),單片機(jī)I/O口P1、P2、P3中的任一位端口都可以與總線進(jìn)行雙向數(shù)據(jù)傳輸。通過單總線可以方便、便宜地構(gòu)建分布式單片機(jī)測控系統(tǒng)。圖2—3所示的環(huán)境監(jiān)控系統(tǒng),只需要一條雙絞線(一根為信號線,一根為地線)從單片機(jī)拉向監(jiān)控系統(tǒng),然后將各種監(jiān)控對象掛在其上就可以了。
2.4USB總線
USB(UniversalSerialBus)是1995年Microsoft、Compaq、IBM等公司聯(lián)合制定的一種新的串行通信協(xié)議。USB支持熱插拔和即插即用,USB接口可對外提供電源,USB2.0規(guī)范提供高達(dá)480Mbit/s的數(shù)據(jù)傳輸速率,最多支持127個(gè)設(shè)備。數(shù)據(jù)傳輸除了支持同步方式外,還可以采用控制、中斷和批量傳輸?shù)确绞健T趩纹瑱C(jī)應(yīng)用系統(tǒng)中,常用的USB接口方法有兩種:一種是系統(tǒng)外部擴(kuò)展USB接口器件(如NS公司的USBN9602);另一種是選用內(nèi)部帶USB接口的單片機(jī)(如ATMEL公司的AT43USB351M等)。
2.5MPS總線
MPS是MicroPortSaver(節(jié)省微處理器接口的器件)的縮寫,代表產(chǎn)品是Xicor公司的串行E2PROM存儲器X84XXX系列。MPS接口器件可直接連到處理器總線上,并通過標(biāo)準(zhǔn)總線讀寫時(shí)序進(jìn)行數(shù)據(jù)傳輸(可看作同步方式),在微控制器的控制線如、等的配合下,可以最大限度地節(jié)省I/O口,并簡化邏輯編程。圖2—4以AT89C51接兩片E2PROMX84041為例簡要說明MPS接口的使用方法(X84041的片選接74LS138輸出即可,圖中省略)。
2.6Microwire和Microwire/PLUS總線
Microwire總線是美國國家半導(dǎo)體(NS)公司推出的三線同步串行總線。這種總線由一根數(shù)據(jù)輸出線(SO)、一根數(shù)據(jù)輸入線(SI)和一根時(shí)鐘線(SK)組成(但每個(gè)器件還要接一根片選線)。原始的Microwire總線上只能連接一片單片機(jī)作為主機(jī),總線上的其它設(shè)備都是從機(jī)。此后,NS公司推出了8位的COP800單片機(jī)系列,仍采用原來的Microwire總線,但單片機(jī)上的總線接口改成既可由自身發(fā)出時(shí)鐘,也可由外部輸入時(shí)鐘信號,也就是說,連接到總線上的單片機(jī)既可以是主機(jī),也可以是從機(jī)。為了區(qū)別于原有的Microwire總線,稱這種新產(chǎn)品為增強(qiáng)型的Microwire/PLUS總線。增強(qiáng)型的Microwire/PLUS總線上允許連接多片單片機(jī)和外圍器件,因此,總線具有更大的靈活性和可變性,非常適用于分布式、多處理器的單片機(jī)測控系統(tǒng)。要改變一個(gè)系統(tǒng),只需改變連接到總線上的單片機(jī)及外圍器件的數(shù)量和型號。Microwire總線系統(tǒng)的典型結(jié)構(gòu)如圖2—5所示。
2.7其它的串行接口
除了以上介紹的5種串行擴(kuò)展總線接口,還有一些器件具有類似的總線接口,如DS1302,它是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、星期、時(shí)、分、秒進(jìn)行記時(shí),具有閏年補(bǔ)償功能。它采用三線制與MCU進(jìn)行通信:(1)I/O,串行數(shù)據(jù)輸入/輸出;(2)SCLK,串行時(shí)鐘輸入端,是串行數(shù)據(jù)的同步信號;(3),復(fù)位兼片選端。
3結(jié)論
以上簡要論述了當(dāng)前單片機(jī)測控領(lǐng)域常見的幾種同步串行擴(kuò)展總線的接口方式,大家可以根據(jù)需要選擇適當(dāng)?shù)慕涌诜绞絹斫M成自己的單片機(jī)測控系統(tǒng)。一般來說,外圍器件或被控器(從機(jī))具有上述的一種或幾種串行接口;主控機(jī)可以有兩種選擇:(1)選擇有對應(yīng)接口的單片機(jī)。它們的內(nèi)部已經(jīng)具有了相應(yīng)的時(shí)序硬件控制邏輯,并提供了相應(yīng)的控制寄存器和中斷向量,只要按資料進(jìn)行編程控制即可;(2)用常用的單片機(jī),但是沒有相應(yīng)的同步串行接口,此時(shí),大部分情況下可以通過I/O口的模擬來實(shí)現(xiàn)接口的功能(就是用軟件模擬出通信過程中的時(shí)序變化),這樣做必然會增加編程的代碼量和降低系統(tǒng)的可靠性。