操縱MCU SPI接口以訪問非標(biāo)準(zhǔn)SPI ADC
當(dāng)前許多精密模數(shù)轉(zhuǎn)換器(ADC)具有串行外設(shè)接口(SPI)或某種串行接口,用以與包括微控制器單元(MCU)、DSP和FPGA在內(nèi)的控制器進(jìn)行通信。控制器寫入或讀取ADC內(nèi)部寄存器并讀取轉(zhuǎn)換碼。SPI的印刷電路板(PCB)布線簡(jiǎn)單,并且有比并行接口更快的時(shí)鐘速率,因而越來越受歡迎。而且,使用標(biāo)準(zhǔn)SPI很容易將ADC連接到控制器。
一些新型ADC具有SPI,但有些ADC具有非標(biāo)準(zhǔn)的3線或4線SPI作為從機(jī),因?yàn)樗鼈兿M麑?shí)現(xiàn)更快的吞吐速率。例如,AD7616、AD7606和AD7606B系列有兩條或四條SDO線,在串行模式下可提供更快的吞吐速率。AD7768、AD7779和AD7134系列有多條SDO線,用作SPI主機(jī)。用戶在設(shè)計(jì)微控制器SPI以配置ADC和讀取代碼時(shí)往往會(huì)遇到困難。
圖1.AD7768用作串行主機(jī),具有兩個(gè)數(shù)據(jù)輸出引腳(14001-193)。
與ADC的標(biāo)準(zhǔn)MCU SPI連接
SPI是一種同步、全雙工、主從式接口。來自主機(jī)或從機(jī)的數(shù)據(jù)在時(shí)鐘上升沿或下降沿同步。主機(jī)和從機(jī)可以同時(shí)傳輸數(shù)據(jù)。圖2顯示了典型的4線MCU SPI接口連接。
要開始SPI通信,控制器必須發(fā)送時(shí)鐘信號(hào),并通過使能信號(hào)(通常是低電平有效信號(hào))來選擇ADC。SPI是全雙工接口,因此控制器和ADC可以分別通過MOSI/DIN和MISO/DOUT線同時(shí)輸出數(shù)據(jù)。控制器SPI接口允許用戶靈活選擇時(shí)鐘的上升沿或下降沿來采樣和/或移位數(shù)據(jù)。為了在主機(jī)和從機(jī)之間進(jìn)行可靠的通信,用戶必須遵守微控制器和ADC芯片的數(shù)字接口時(shí)序規(guī)范。
如果微控制器SPI和ADC串行接口具有標(biāo)準(zhǔn)SPI時(shí)序模式,那么用戶設(shè)計(jì)PCB布線和開發(fā)驅(qū)動(dòng)器固件不成問題。但是,有些新型ADC的串行接口端口不是典型的SPI時(shí)序模式。MCU或DSP似乎不可能通過AD7768串行端口(一種非標(biāo)準(zhǔn)時(shí)序SPI端口)讀取數(shù)據(jù),如圖4所示。
本文將介紹操縱標(biāo)準(zhǔn)微控制器SPI以便與具有非標(biāo)準(zhǔn)SPI端口的ADC接口的方法。
本文會(huì)給出四種通過串行接口讀取ADC碼的解決方案:
解決方案1:MCU作為SPI從機(jī),通過一條DOUT線與作為SPI主機(jī)的ADC接口。
解決方案2:MCU作為SPI從機(jī),通過兩條DOUT線與作為SPI主機(jī)的ADC接口。
解決方案3:MCU作為SPI從機(jī),通過DMA與作為SPI主機(jī)的ADC接口。
解決方案4:MCU作為SPI主機(jī)和SPI從機(jī),通過兩條DOUT線讀取數(shù)據(jù)。