近幾年來,,IC制造商設(shè)計了實現(xiàn)接口的各種方法,并且特別重視減少IC接口I/O引腳的數(shù)量,。MAX187就是這樣一個器件,,它是一個12位模/數(shù)轉(zhuǎn)換器(ADC)。你可以利用串行數(shù)據(jù)通信技術(shù)產(chǎn)生與該ADC的一個接口,。MAX187的模/數(shù)轉(zhuǎn)換和數(shù)據(jù)傳輸僅需三條數(shù)字I/O線,。你可以利用PC的Centronics打印機端口在MAX187和PC之間產(chǎn)生一個簡易接口(圖1)。只要將引腳分別設(shè)置為高電平或低電平,,你就能啟用或禁用MAX187(引腳 3),。如果使該引腳開路,則內(nèi)部參考電壓(4.096V) 就被禁用,,你必須將一個外部參考電壓加到引腳REF(引腳4)上,。在其他情況下,該引腳 與4.7μF旁路電容C1連接,。通過使用SCLK引腳(引腳8)上的外部時鐘脈沖,,來自 MAX187的數(shù)字?jǐn)?shù)據(jù)就以每次1位的速度傳輸給處理單元。
一次完整的數(shù)據(jù)傳輸需要13個外部時鐘脈沖,。第一個時鐘脈沖的下降沿鎖存DOUT引腳(引腳6)的第一個數(shù)據(jù)位(MSB),。輸出數(shù)據(jù)位在下一個外部時鐘脈沖的下降沿就改變,可以讀取串行數(shù)據(jù)位,,直到下一個時鐘周期的下降沿出現(xiàn)為止,。模/數(shù)轉(zhuǎn)換在ADC的引腳(引腳7)變成低電平時開始進(jìn)行。該引腳必
須保持低電平,,直到模/數(shù)轉(zhuǎn)換整個周期結(jié)束為止,,隨后進(jìn)行串行數(shù)據(jù)傳輸。DOUT引腳從低電平至高電平的狀態(tài)變化表示EOC(轉(zhuǎn)換結(jié)束)狀態(tài),。然后,,串行的12位數(shù)據(jù)就可以進(jìn)行傳輸了。MAX187的工作情況由軟件控制,。該軟件應(yīng)能產(chǎn)生成功完成轉(zhuǎn)換所需的所有控制信號,,而且應(yīng)能檢測EOC狀態(tài)。它還應(yīng)能產(chǎn)生13個外部時鐘脈沖,,以便讀取串行12位數(shù)據(jù)并將其轉(zhuǎn)換成并行數(shù)據(jù)。
控制MAX187工作情況的軟件是Turbo C++ 3.0版本(可從www.edn.com網(wǎng)站的《設(shè)計實例》的Web版本下載),。在代碼中,,Port定義與MAX187接口的PC的 Centronics端口,。Write Port定義用于初始化模/數(shù)轉(zhuǎn)換和產(chǎn)生外部時鐘脈沖的端口。Read Port定義用于從ADC讀取EOC和串行數(shù)據(jù)的端口,。在將CS引腳和SCLK引腳下拉至低電平后,,EOC環(huán)路檢查EOC狀態(tài)。如果未出現(xiàn)有效的EOC,,則該環(huán)路將繼續(xù)工作,。有效EOC出現(xiàn),13個時鐘周期中的第一個周期就出現(xiàn),,并鎖存第一個數(shù)據(jù)位(MSB),。此后,例行程序調(diào)用一個子例程(get_adc()),。子例程產(chǎn)生剩下的外部時鐘周期,,以便讀取12位串行數(shù)據(jù)。子例程還將接收到的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù)(adc_val),。這一轉(zhuǎn)換過程為:使adc_val左移一位,,由此將前一個數(shù)據(jù)乘以2,如果串行數(shù)據(jù)位的值為1,,則將1加到并行數(shù)據(jù)上,。一旦并行數(shù)據(jù)就緒,子例程將返回這個值并將其顯示在屏幕上,。
圖1 實現(xiàn)12位串行ADC與PC之間的接口是很容易的,。