串行外圍設備接口(Serial Peripheral InteRFace,SPI)總線(xiàn)技術(shù)是Motorola公司推出的一種高速同步串行輸入/輸出接口,近年來(lái)廣泛應用于外部移位寄存器、D/A轉換器、 A/D轉換器、串行EEPROM、LED顯示器等外部設備的拓展。SPI總線(xiàn)是一種三線(xiàn)同步總線(xiàn)(CLK、SI-MO、SOMI),可以共享,便于組成帶多個(gè)SPI接口的控制系統。其傳輸速率可編程,連接線(xiàn)少,具有良好的拓展性。 ADS1178是一款典型的具有SPI接口的A/D轉換器,它可以方便地與帶有SPI接口的處理器或控制器相連接。OMAP-L137是一款處理能力強、外接存儲空間大、集成度高、外設管理方便的新型工控芯片。 目前,ADS1178與OMAP-L137的數據通信主要通過(guò)SPI接口直接連接實(shí)現。通過(guò)配置,使OMAP-L137工作在主模式,ADS1178工作在從模式,由OMAP-L137提供用來(lái)進(jìn)行數據傳輸的時(shí)鐘。但是,采用此模式結合EDMA進(jìn)行數據接收時(shí),每接收一組采樣數據都需要通過(guò)中斷來(lái)改變接收數據的存放地址,即完成N組數據的接收需要N個(gè)中斷來(lái)完成,這會(huì )給系統的資源管理帶來(lái)很大的麻煩。 本設計使OMAP-L137、ADS1178的SPI接口工作在從模式,由CPLD作主片來(lái)提供進(jìn)行數據傳輸的時(shí)鐘。在準確、快速完成數據傳輸的同時(shí),節省了處理器資源,方便了系統資源的管理。 1 硬件設計 1.1 芯片概述 ADS1178是TI公司于2008年9月推出的一款A/D控制芯片,它采用△-∑模/數轉換器結構,可以達到16位的數據采集精度,并且擁有良好的交流特性。其帶寬達25 kHz,具有97 dB的信噪比和-105 dB的總諧波失真。在正常工作時(shí)每通道的功耗只有31 mW,支持8路通道同時(shí)采樣,并將數據依次連續地送上數據總線(xiàn);在滿(mǎn)足實(shí)時(shí)同步采樣的同時(shí),還具有52 ksps的轉換速率。該芯片主要應用于三相交流電的實(shí)時(shí)監測、心電圖監視器、質(zhì)量流量計、振動(dòng)系統的模態(tài)分析實(shí)驗設計,同時(shí)還支持SPI和幀同步兩種數據傳輸格式,并支持A/D間的級聯(lián)。 OMAP-L137是TI司推出的針對工業(yè)控制領(lǐng)域的雙核處理器,它綜合了ARM和DSP兩個(gè)處理器各自在實(shí)時(shí)性和計算精度上的優(yōu)勢。兩個(gè)處理器的主頻均達到300MFHz(DSP的處理速度高達2 400MIPS/1 800MFLOPS)?梢酝饨2個(gè)存儲空間EMIFA和EMIFB,并且在片上有著(zhù)非常豐富的外設資源,主要針對工業(yè)應用環(huán)境的控制提供了EHRPWM、ECAP、EQEP、 EMAC等模塊,并在各控制模塊和各接口之間采用EDMA3模塊進(jìn)行數據傳遞。這大大減輕了雙核處理器的負擔,占用很少的處理器資源,同時(shí)在兩個(gè)處理器之間開(kāi)辟了一塊128 KB的共享存儲空間,可以使數據在雙核之間快速地進(jìn)行交換。 1.2 硬件原理 在SPI從模式下,設計使OMAP-L137、ADS1178作從片,CPLD作主片來(lái)提供進(jìn)行數據傳輸的時(shí)鐘。OMAP-L137的SPI接口支持3針、4針、5針三種傳輸模式,這里采用3針模式(即CLK、SIMO、SOMI)。OMAP- L137引出一個(gè)GPIO口作同步信號線(xiàn)SYCN,ADS1178的READY信號線(xiàn)送給CPLD用來(lái)產(chǎn)生采樣時(shí)鐘,硬件連接如圖1所示。CLK用來(lái)傳遞接收和發(fā)送數據時(shí)的同步時(shí)鐘信號,SIMO在OMAP-L137作主片時(shí)為輸出數據線(xiàn),在OMAP-L137作從片時(shí)為輸人數據線(xiàn)。SOMI在此模式下不被采用。 OMAP-L137的SPI接口工作在從模式的配置如下:SPIGCR1寄存器的低2位配置為00,選擇SPI工作在從模式;通過(guò)配置SPIPC0和 SPIPC1寄存器來(lái)選擇采用的針模式和引腳的信號方向,這里選擇使能CLK、SIMO、SOMI三根信號線(xiàn),并分別配置為輸入、輸入和輸出;配置 SPIFMT0寄存器先輸出每組數據的“大端MSB”,根據ADS1178手冊中對數據輸出時(shí)序的要求,配置數據在CLK信號的下降沿輸出,使CLK信號工作在13MHz,同時(shí)配置現在的數據總線(xiàn)為16位。SPI的參考配置如表1所列。 在采樣數據送到OMAP-L137的SPI接口時(shí),可以啟動(dòng)EDMA模塊來(lái)對采樣數據進(jìn)行搬移。EDMA的觸發(fā)事件為SPI的每一通道數據(16位)的接收中斷,相當于完成一組(8通道)數據的傳輸需要8個(gè)觸發(fā)事件。EDMA的參數相關(guān)配置如圖2所示。其中,OPT、DSTCINT、SRCCIND和 CCNT都需要根據應用情況來(lái)進(jìn)行參數配置。 2 軟件設計 2.1 CPLD程序設計 CPLD中主要實(shí)現ADS1178對數據格式的要求。在檢測到READY信號的電平變化后,以外部時(shí)鐘ECLK為時(shí)鐘基準,產(chǎn)生128個(gè)時(shí)鐘周期 (CLK)分別送給OMAP-L137和ADS1178,來(lái)完成8通道的數據傳輸。圖3為等效原理圖,CPLD程序流程如圖4所示。 2.2 采樣程序設計 代碼調試中的主要工作是測試同步采樣A/D的8路通道。SPI和EDMA的參考配置及使能在上面已經(jīng)完成。當ADS1178開(kāi)始數據采集時(shí),通過(guò)GPIO口由OMAP-L137先向ADS1178發(fā)送一個(gè)由低變高的同步信號來(lái)通知 ADS1178開(kāi)始工作。當ADS1178完成了數據轉換時(shí),向OMAP-L137發(fā)送一個(gè)由高到低的READ-Y信號,通知OMAP-L137數據已經(jīng)準備就緒,等待主芯片的時(shí)鐘將數據送到數據線(xiàn)上;并在CPLD送出采樣時(shí)鐘后,等待EDMA的數據接收中斷,當中斷到來(lái)時(shí)完成數據的采集工作。采樣程序流程如圖5所示。 3 系統測試 通過(guò)示波器可以觀(guān)測到CLK(圖6中上面的曲線(xiàn))和SIMO(圖6中下面的曲線(xiàn))引腳的波形圖。采樣結果放在數組Adresult中,如圖7所示。 從圖6和圖7中可以看出,采用SPI從模式的數據傳輸方法,可以通過(guò)CPLD上的程序設計得到128個(gè)連續的采樣時(shí)鐘,數據傳遞的連續性好,每組時(shí)鐘之間不存在時(shí)鐘間隔。在程序處理的后續階段,通過(guò)配置EDMA的接收事件就可以連續接收多組數據,在數據全部接收到OMAP-L137中時(shí)觸發(fā)一次中斷便可完成接收工作,從而節省了處理器資源。 4 結 論 在OMAP-L137與ADS1178的實(shí)時(shí)采集數據傳遞問(wèn)題上,采用SPI主模式進(jìn)行數據接收時(shí),每接收一組數據后都需要通過(guò)中斷資源來(lái)變更接收地址。而本文通過(guò)SPI從模式進(jìn)行數據接收,可以在接收完多組數據后僅用一次接收中斷便結束工作,節約了處理器資源,并且實(shí)際測試表明,傳輸數據的連續性和實(shí)時(shí)性較好。由此看出,采用SPI從模式配合CPLD來(lái)處理OMAP-L137與ADS1178數據通信問(wèn)題無(wú)疑是一種很好的解決方案。 |