并行模數轉換器ADS8364與TMS320F2812的接口設計
0 引言
ADS8364是美國德州儀器公司(TI)的一款六通道、16位并行輸出、同步采樣的模數轉換器。該芯片提供了一個靈活的高速并行接口,可以直接與數字信號處理器TMS320F2812相連。本文主要介紹了這個接口的軟、硬件設計,著重論述了這兩款芯片是如何配置啟動和工作的。本設計廣泛應用于電機控制、多軸定位系統(tǒng)、三相功率轉換、多通道數據采集等場合。
1 芯片簡介
ADS8364是一款六路模擬輸入、16位并行輸出的模數轉換器。六路模擬輸入分為三組(A,B 和C) ,每個輸入端都有一個保持信號來實現所有通道的同時采樣與轉換功能,非常適合于多路(多種)采集系統(tǒng)的需要。ADS8364提供了一個靈活的高速并行接口,可以運行在直接尋址、循環(huán)采樣、FIFO等三種模式,每個通道的輸出數據都可直接作為一個16bit的字。
TMS320F2812是TI公司生產的一款DSP芯片,TMS320F28X系列是當今世界上最先進的32位定點DSP芯片。它不但運行速度高,處理功能強大,并且具有豐富的片內外圍設備,便于接口和模塊化設計。它既具有數字信號處理能力,又具有強大的事件管理能力和嵌入式控制功能,特別適用于有大批量數據處理的測控場合,如工業(yè)自動化控制、智能化儀器儀表及電機伺服控制系統(tǒng)等。
2 ADS8364的工作原理
ADS8364的最大工作頻率可達5MHz,采樣/轉換可在20個轉換時鐘周期內完成。ADS8364的六個通道可以同時進行采樣/轉換。吞吐率最大可達250ksps。ADS8364采用+5V工作電壓,并帶有80DB共模抑制的全差分輸入通道以及六個4μs連續(xù)近似的模數轉換器、六個差分采樣放大器。另外,在REFIN和REFOUT引腳內部還帶有+2.5V參考電壓。ADS8364的差分輸入可在-VREF到+VREF之間變化。三個保持信號(HOLDA、HOLDB、HOLDC)可以啟動指定通道的轉換。當三個保持信號同時被選通時,其轉換結果將保存在六個寄存器中。對于每一個讀操作,ADS8364均輸出十六位數據,地址/模式信號(A0,A1,A2)可以選擇如何從ADS8364讀取數據,也可以選擇單通道、單周期或FIFO模式。在ADS8364的HOLDX保持至少20ns的低電平時,轉換開始。這個低電平可使各個通道的采樣保持放大器同時處于保持狀態(tài)從而使每個通道同時開始轉換。當轉換結果被存入輸出寄存器后,引腳EOC的輸出將保持半個時鐘周期的低電平。另外,通過置RD和CS為低電平可使數據讀出到并行輸出總線。
ADS8364工作時序圖
3 ADS8364與TMS320F2812的接口電路
電路部分主要分為DSP芯片的最小系統(tǒng)設計和ADS8364的接口設計。分別給予介紹。
3.1 TMS320F2812的最小系統(tǒng)設計:
(1)電源和復位部分:本設計采用外部5V直流電壓供電。通過DC/DC器件產生3.3V的內核電壓VDD和1.8V的I/O電壓VDDIO電壓。電源芯片TPS767D318為雙電源輸出,一路為3.3V、一路為1.8V。每路電源的最大輸出電流為1A。芯片還提供兩個寬度為200ms的低電平復位脈沖。本設計的復位信號分兩種:上電復位、手動復位。上電復位由芯片TPS767D318產生,手動復位由電阻電容組成的電路產生。
(2)時鐘部分:為DSP芯片提供時鐘一般有兩種方法。一種是采用晶體,一種是采用外部有源時鐘芯片。本設計采用前者。它利用了DSP芯片內部所提供的晶振電路,在DSP芯片的X1和X2之間連接一晶體可啟動內部振蕩器。
(3)仿真部分:這一部分將作為程序的調試和燒錄所用。2812芯片提供了5個標準的JTAG信號(TRST、TCK、TMS、TDI、TDO)和兩個仿真引腳(EMU0、EMU1)。
3.2 ADS8364的接口設計
ADS8364采用+5V模擬電源(AVDD)和數字電源(DVDD),而其內部的緩沖器采用與TMS320F2812相同的+3.3V電壓。緩沖器電壓(BVDD)允許直接連接到3V或5V電壓系統(tǒng)。TMS320F2812的I/O電壓為+3.3V,因此,若使用該元件,ADS8364的BVDD必須設置成3.3V。
在這個設計中,ADS8364采用的是4MHz時鐘。每個通道的吞吐率最大可達200ksps。將ADS的地址線A[2:0]接到TMS320F2812的地址線。當A0接到數字地,A2和A1接到VCC上可迫使ADS8364進入周期模式。在這個模式中,轉換器可自動對六個通道進行采樣,并可將數據按從A0到C1的順序傳送到輸出端。
將ADS8364的BYTE引腳接到VCC上,可以使能字節(jié)模式。在這個模式中,要從ADC中正確地讀取數據,需要對每個通道進行兩次連續(xù)的讀操作。第一次讀取的是轉換數據的高位字節(jié),第二次讀取的是低位字節(jié)。假如通道信息要作為數據輸出的一部分,那么,應將ADS8364的ADD引腳也接到VCC。讀取數據時,需要對ADS8364的每個通道進行三次讀操作。第一次讀取通道和數據信息,后兩次分別讀取高位和低位數據。
3.3 ADC的初始化操作
觸發(fā)ADS8364的復位引腳RST可以確保讀指針指向第一個數據位置。作為TMS320F2812初始化的一部分,由TMS320F2812的通用輸入輸出口GPIOF0提供給ADS8364的引腳RST。當系統(tǒng)時鐘穩(wěn)定后,被觸發(fā)為低電平,從而確保了從ADC輸出的數據對應于通道A0、A1、B0、B1、C0、C1的排列。
對于每一個轉換通道,EOC均是低電平信號。 ADS8364可為TMS320F2812提供三個脈沖。每個脈沖信號表明一個轉換的結束。當ADC的這三個引腳同時置低時,三個通道被認為有效并同時進行轉換。另外,EOC引腳也可被連接到TMS320F2812的一個中斷引腳,以觸發(fā)一個讀周期。
ADS8364的片選CS是一個有源低電平輸入信號。當CS為高時,并行輸出引腳處于高阻態(tài)。當CS為低時,并行數據線反映了輸出緩沖器的當前狀態(tài)。為了正確地從ADS8364的并行數據總線上讀取數據,ADS8364必須被片選CS選中后才能進行讀操作。
ADS8364的讀(RD)信號端也是有源低電平信號。當CS為低時,在讀信號(RD)的下降沿,ADS8364 中寄存器的內容將被更新。這意味著在每個讀序列之前,RD信號必須被觸發(fā),這樣才能更新輸出緩沖器。通過TMS320F2812的中斷子程序將ADS8364的RD引腳置低可以保存輸入的數據,之后可再將RD引腳置高。
ADS8364與TMS320F2812的連接圖
4 初始化編程
(1)頭文件(.H)的編寫:主要用來定義片內寄存器以便函數中引用
例如:系統(tǒng)控制與狀態(tài)寄存器的定義:
struct SCSR_BITS
{ // 位描述
Uint16 WDOVERRIDE:1; // 0 允許看門狗無效位
……};
union SCSR_REG
{
Uint16 all;
struct SCSR_BITS bit;
};
此外頭文件中還聲明一些全局函數和常量。
例如:extern void InitAdc(void); //初始化ADC函數
(2)命令文件(.CMD)的編寫:該文件中用到了兩個偽指令MEMORY和SECTIONS。
MEMORY偽指令用來標示實際存在的目標系統(tǒng)中可被使用的存儲器范圍。
SECTIONS偽指令用來定位一些代碼和數據塊。
部分代碼:
MEMORY
{
PAGE 0 : //聲明了片內的存儲單元,包括起始地址和長度
PRAMH0 : origin = 0x3F8000, length = 0x001000
PAGE 1 :
RAMM0 : origin = 0x000000, length = 0x000400
……
}
SECTIONS
{ codestart : PRAMH0, PAGE = 0 /*定位代碼數據段*/
PieCtrlRegsFile : > PIE_CTRL, PAGE = 1 /* 定位各外設的積存器結構體 */
……
}
(3)主程序及中斷程序:
void main(void)
{ ……
InitSysCtrl(); //調用初始化系統(tǒng)控制函數
//該函數用于初始化系統(tǒng)控制寄存器、PLL、看門狗、時鐘
InitGpio(); //調用初始化GPIO函數,用于選擇適當的GPIO
ResetADS8364(); //復位ADS8364
……
DINT; // 禁止和清楚所有CPU中斷
IER = 0x0000; IFR = 0x0000;
InitPieCtrl(); // 初始化Pie控制寄存器為默認值
InitPieVectTable(); // 初始化中斷向量表
……
EINT; // 使能全局中斷 INTM
PWM(); //開啟轉換時鐘
while(1) // 循環(huán),根據條件讀數并產生中斷
{……}
}
void read_ADD() //該函數讀取采集的數據
{ //根據通道讀取數據
if (ADD_Mode){ADC_address[0] = (*ptrCHA0);}
……
if (ADD_Mode){ADC_address[5] = (*ptrCHC1);}
CHC1_Data[idx] = *ptrCHC1;
}
5 結束語
本文以ADS8364模數轉換芯片為基礎,詳細討論了ADS8364和TMS320F2812的接口設計和工作原理,重點介紹了TMS320F2812控制芯片的最小系統(tǒng)設計、ADS8364和TMS320F2812的連接、初始化程序等三部分內容。該設計方案在電機控制、多軸定位系統(tǒng)、多通道數據采集等場合有著廣泛的應用。