基于SPI總線的多路數(shù)據(jù)采集系統(tǒng)的設(shè)計
掃描二維碼
隨時隨地手機看文章
摘要:文中采用高精度AD芯片AD7891與C8051F040單片機組成高速數(shù)據(jù)采集系統(tǒng),通過SPI總線,將AD7891與C8051F040直接連接,方便的實現(xiàn)了8路模擬量的高速采集和傳輸,并給出了SPI總線的接口電路及軟件設(shè)計。
關(guān)鍵詞:高精度;單片機;SPI;高速采集
隨著微處理器的發(fā)展及其在各領(lǐng)域的廣泛應(yīng)用,人們對電子測量技術(shù)和電子儀器系統(tǒng)提出越來越高的要求,對測試速度和精確度的要求也與日俱增。測試系統(tǒng)主要包括對實時數(shù)據(jù)的高速采集、現(xiàn)場顯示和分析處理3部分,其中最重要的一環(huán)就是實時數(shù)據(jù)高速采集,因為它關(guān)系到能否真實反映被測對象的狀態(tài)和性能。根據(jù)實際項目需要,文中基于80C51F040單片機的SPI總線和AD7891芯片,設(shè)計實現(xiàn)了多路數(shù)據(jù)的高速采集。文中給出了系統(tǒng)的主要硬件電路和對時序控制的軟件編程。
1 系統(tǒng)的硬件實現(xiàn)
本數(shù)據(jù)采集系統(tǒng)功能是能對多路電壓和電流進行高速采集和分析處理,其要求精度高,線性度好,采集電壓要求以1 mV為單位,模擬信號輸入范圍為-10~+10 V。系統(tǒng)處理芯片采用Silicon Laboratories公司出品的C8051F040單片機是完全集成的混合信號系統(tǒng)級芯片(SOC),具有與MCS-51完全兼容的指令內(nèi)核,該系列單片機采用流水線處理(pipeline)技術(shù)不再區(qū)分時鐘周期和機器周期,能在執(zhí)行指令期間預(yù)處理下一條指令,提高指令執(zhí)行效率。而且大部分C8051F040單片機具備控制系統(tǒng)所需要的模擬和數(shù)字外設(shè),包括看門狗、ADC、DAC、電壓比較器、電壓基準(zhǔn)輸出、定時器、PWM、定時器捕捉和方波輸出等,并具備多種總線接口,包括UART、SPI、SMBUS(與IC兼容)總線以及CAN總線。 C8051F系類單片機采用Flash ROM技術(shù),集成JTAG,支持在線編程。C8051F系列單片機諸多特點和優(yōu)越性,使其廣受單片機系統(tǒng)設(shè)計工程師青昧,成為很多測控系統(tǒng)設(shè)計的首選機型。雖然C8051F040內(nèi)部提供A/D轉(zhuǎn)換器,但在實時高速采集中易受干擾,性噪比比較低,A/D轉(zhuǎn)換速度不能滿足高速數(shù)據(jù)采集系統(tǒng)的要求,為了滿足系統(tǒng)的指標(biāo)、提高數(shù)據(jù)的精確性采樣和系統(tǒng)的抗干擾能力,本數(shù)據(jù)采集系統(tǒng)根據(jù)實際情況采用外擴的A/D轉(zhuǎn)換芯片。
本數(shù)據(jù)采集系統(tǒng)采用的A/D芯片是美國ADI公司推出的一種AD7891 12位數(shù)據(jù)采集系統(tǒng)(DAS),它具有并行和串行兩種工作模式,適合各種微處理器、控制器以及數(shù)字信號處理機接口。AD7891內(nèi)含有多路轉(zhuǎn)換器、采樣保持放大器、12位高速ADC、+2.5 V基準(zhǔn)電壓源和高速接口電路,并有8個具有過壓保護的模擬信號通道,AD7891-1可承受的過壓為±17 V。AD7891的模數(shù)轉(zhuǎn)換時間是1.6μs,采樣時間為1.4μs。當(dāng)只對一個通道信號采樣時,采樣率為500 kSPS;當(dāng)對8個通道信號逐個采樣時,采樣率為62.5 kSPS,AD7891-1使用硬件或軟件方法控制轉(zhuǎn)換開始得數(shù)據(jù)采樣時間分別為0.6μs和0.7μs,相應(yīng)的數(shù)據(jù)采集率分別為454.5 kSPS和435 kSPS。AD7891采用單電源工作,功耗低,可選擇輸入信號的范圍,也可并行或串行工作,非常適合用于數(shù)據(jù)采集系統(tǒng)、電機控制、移動通信系統(tǒng)和測試設(shè)備等方面的應(yīng)用。AD7891管腳功能說明如表1所示。
通常在高速數(shù)據(jù)采集系統(tǒng)中,AD7891和單片機之間的接口有串行和并行兩種方式,采用軟件控制數(shù)據(jù)線的方式來滿足系統(tǒng)所要求得采集速度。由于C80C51F040單片機具有SPI總線接口功能,所以本數(shù)據(jù)采集系統(tǒng)采用串行工作方式,數(shù)據(jù)的讀取通過單片機的SPI總線來傳輸,不僅能夠滿足采集系統(tǒng)的快速性要求,在硬件上也較易實現(xiàn)闈。圖1是AD7891與80C51F040單片機的接口電路。
2 系統(tǒng)的軟件實現(xiàn)
為了實現(xiàn)對模擬量的高速采樣,首先要對AD7891的時序進行分析,圖2為AD7891的串行讀操作時序圖,圖3為AD7891的串行寫操作時序圖。
圖2為AD7891的串行讀操作時序圖,從圖2中可以看出,當(dāng)單片機要從AD7891中讀取數(shù)據(jù)時,必須先將置低,串行數(shù)據(jù)時一位一位的接收的。在整個數(shù)據(jù)傳輸過程中,必須一直保持低電平。傳輸?shù)臄?shù)據(jù)格式是一次傳輸16位數(shù)據(jù),數(shù)據(jù)的傳輸是以FORMAT位開始的,緊接著是3位地址位,接下來是12位數(shù)據(jù)位,存放的是12位AD轉(zhuǎn)換的值,每一位數(shù)據(jù)都是在時鐘的上升沿開始發(fā)送的,16位數(shù)據(jù)發(fā)送完成后,DATA OUT線一直保持高阻態(tài)直到和SCLK其中任意一個有一個上升沿的脈沖出現(xiàn)。
圖3為AD7891的串行寫操作時序圖,從圖3中可以看出,當(dāng)單片機向AD7591中寫數(shù)據(jù)時,必須先將置低,AD7891的控制寄存器只接收前6位數(shù)據(jù),前三位A0、A1、A2用于配置AD采樣通道,在接收完前6位數(shù)據(jù)之后不再接收數(shù)據(jù),數(shù)據(jù)的接收都是在時鐘的下降沿進行的。下面給出通道1采集的主要程序代碼(C語言)
3 結(jié)束語
文中基于串行SPI通信方式,設(shè)計了一個高速數(shù)據(jù)采集系統(tǒng),用SPI總線來實現(xiàn)數(shù)據(jù)的讀取,能夠滿足數(shù)據(jù)采集系統(tǒng)的要求,具有硬件結(jié)構(gòu)簡單,軟件編程容易的特點。