TMS320F2812概述
TI(德州儀器)主推高性能TMS320C28x系列TMS320F281232位定點微控制單元(MCU),主頻高達150MHz;具備I2C、SPI、CAN、PWM等總線接口,適用于各種控制類工業設備;體積小、性能強、便攜性高,同時適用于多種手持設備;符合高低溫、振動測試,滿足工業環境應用。
TMS320F2812硬件參數
CPU:TI TMS320F2812浮點DSP,主頻150MHz ROM:片內256Kx16bit,外擴512Kx16bit NOR FLASH
RAM:片內34Kx16bit,外擴256Kx16bit SRAM
EEPROM:2Kbit,AT24C02C
核心板連接器:2x 80pin排針,共160pin,間距1.27mm
LED:2x電源LED(底板1個,核心板1個),6x 用戶LED(底板4個,核心板2個)
按鍵:3x 用戶可編程按鈕,1x 系統復位按鈕
JTAG:Debug,14pin TI Rev B JTAG座,間距2.54mm
eCAN:2x eCAN,3pin接線端子,間距3.81mm
DAC:1x DAC,0-5V,2pin接線端子,間距2.54mm
ADC:1x 16Channel ADC,0-3V,10pin接線端子,間距2.54mm
啟動方式:1x 4bit啟動撥碼開關
串口:1x UARTA,燒寫串口,提供4針TTL電平測試端口;1x UARTB,USB轉串口,提供4針TTL電平測試端口;1x UARTC,
RS232,DB9接口,提供4針TTL電平測試端口;1x RS485,3pin接線端子,間距3.81mm,與UARTC接口復用;
SD卡:1x MicroSD卡座
蜂鳴器:1x無源蜂鳴器
繼電器:1x 5V繼電器
步進電機接口:1x 五線四相步進電機,5pin接線端子,間距2.54mm
直流電機接口:1x 5V直流電機,2pin接線端子,間距2.54mm
音頻:1x LINE IN,3.5mm音頻座;1x LINE OUT,3.5mm音頻座;1x MIC IN,3.5mm音頻座;
RTC:1x RTC,CR1220紐扣電池座
拓展接口J13:ePWM、GPIO等信號,2x10pin排針,間距2.54mm
拓展接口J14:eQEP、SPI、I2C、GPIO等信號,2x10pin排針,間距2.54mm
拓展接口J15:XINTF、UART、I2C、GPIO等信號,2.54mm,2x25pin簡易牛角座
LCD:1x 1602液晶屏接口,16pin排母,間距2.54mm;1x 12864液晶屏接口,20pin排母,間距2.54mm;1x 4.3寸TFT觸摸屏接口,2x17pin排針,間距2.54mm
電源接口:1x 5V 2A直流輸入,DC-005電源接口
TMS320F2812軟件參數
DSP端軟件支持:裸機
CCS版本號:CCS5.5
TMS320F2812主要特點
TI主推高性能 TMS320C28x系列TMS320F2812 32位定點微控制單元(MCU),主頻高達150MHz;
具備I2C、SPI、CAN、PWM等總線接口,適用于各種控制類工業設備;
體積小、性能強、便攜性高,同時適用于多種手持設備;
符合高低溫、振動測試,滿足工業環境應用
AD7656概述
AD7656具有最大4 LSBS INL和每通道達250kSPS的采樣率,并且在片內包含一個2.5V內部基準電壓源和基準緩沖器。該器件僅有典型值160mW的功耗,比最接近的同類雙極性輸入ADC的功耗降低了60% 。
AD7656包含一個低噪聲、寬帶采樣保持放大器(T/H),以便處理輸入頻率高達8MHz的信號。該AD7656還具有高速并行和串行接口,可以與微處理器(mcu)或數字信號處理器(DSP)連接。AD7656在串行接口方式下,能提供一個菊花鏈連接方式,以便把多個ADC連接到一個串行接口上。
AD7656采用具有ADI專利技術的iCMOS(工業CMOS)工藝。iCMOS 工藝是一種高壓半導體工藝與亞微米CMOS(互補金屬氧化物半導體)和互補雙極型工藝相結合的制造上藝。它能開發出承受30V電源電壓的多種高性能模擬IC,并且其小封裝尺寸是任何其他同類高電壓IC都未曾達到的。與使用傳統CMOS工藝的模擬IC不同,iCMOS器件能承受高電源電壓,同時提高性能、顯著降低功耗和縮小封裝尺寸。AD7656是使用該種工藝設計制造的產品,所以非常適合在繼電保護、電機控制等工業領域使用。
AD7656的特性
下圖示出AD7656的功能框圖。AD7656的主要特性如下:
圖1 AD7656的功能框圖
●6通道16-bit逐次逼近型ADC;
●最大吞吐率為250kS/s;
●AVCC范圍為4.75V-5.25V;
●低功耗:在供電電壓為5V、采樣速率為250kS/s時的功耗為160mW;
●寬帶寬輸入:輸入頻率為50kHz時的信噪比(SNR)為85dB;
●片上有2.5V基準電壓源和基準緩沖器;
●有并行和串行接口;
●與SPI/QSPI/μWire/DSP兼容的高速串行接口;
●可通過引腳或軟件方式設定輸入電壓范圍(±10V,±5V);
●采用iCMOS工藝技術;
●64引腳QFP。
AD7656與TMS320F2812的接口設計
1、AD7656的工作原理
具有并行和串行兩種工作模式,本文采用并行工作模式,圖2所示是AD7656在并行方式下的工作時序圖。首先,由CONVST管腳啟動轉換,并保持為高電平。然后由AD7656在啟動轉換信號后輸出BUSY信號,當BUSY信號出現下降沿時,代表AD模數轉換已經結束。此時,AD7656內部的寄存器已經保存了轉換的數據,可通過控制片選CS和讀信號RD來依次讀出各個通道的AD轉換值。讀出轉換值后,可改變CONVST為低電平,為下一次轉換做好準備。但應注意,在設計時,一定要保證AD轉換過程中保持CONVST為高電平。
2、AD7656的接口電路設計
要使TMS320F2812能夠控制AD7656正常工作,通常需要TMS320F2812提供可滿足AD7656工作時序的控制信號。TMS320F2812上的外部存儲器接口提供有豐富的控制信號,如地址總線、數據總線、片選信號、讀寫控制信號、外部中斷信號等。此外,TMS320F2812還提供了豐富的通用IO口,也可輔助產生擴展設備的時序控制信號。AD7656的外圍電路及其與TMS320F2812的接口設計如圖3所示。
圖3中的DVCC和AVCC分別是數字電壓端和模擬電壓端,它們在接入前要經過1個去耦電路,每個供電電壓輸入引腳都要連接1個去耦電路,該電路由1只10μF和1只100nF的電容器組成。VDD、VSS和VDRIVE同樣要連接去耦電路。VDRIVE可以采用5V或3.3V供電,因要和TMS320F2812互聯,而TMS320F2812的IO口電壓為3.3V,所以,VDRIVE采用3.3V供電。需要注意的是,AD7656上電后必須對其進行復位,復位脈沖應在100ns以上,本文采用RC電路來對AD7656進行復位。
在AD7656與TMS320F2812接口電路中,AD7656的數據輸出D0~D15直接和TMS320F2812的數據線相連,可使用TMS320F2812的外部地址片選管腳XZCS67作為AD7656的外部片選信號,并采用GPIOB8來控制AD7656的啟動轉換,另外,采用GPIOB10來查詢AD7656的啟動轉換是否結束。
數據采集程序設計
本設計的數據采集程序 編制主要包括TMS320F2812的IO口初始化、 AD7656控制時序的產生及狀態查詢 、 采 集 數 據 的 處 理 。 對 應 于AD7656并行接口模式工作時序圖, 其詳細的軟件代碼如下:
#define ADC_ADD * ( int *)
0x00100000 //片選
#define ADC_BUSY GpioDataRegs.
GPBDAT.bit.GPIOB10 //轉換是否結束
#define ADC_CONVST GpioDataRegs.
GPBDAT.bit.GPIOB8 //啟動轉換
float ADC_F1 [6] ; //ADC存儲值
void ADC (void)
{
unsigned int ADC_TMP;
ADC_CONVST=0;
ADC_CONVST=1; //啟動模數轉換
while (ADC_BUSY==1) ; //查詢轉換是否
結束
ADC_TMP=ADC_ADD&0xFFFF; //讀取
通道1結果
if ((ADC_TMP&0x8000)! =0x8000) //轉換
通道1結果
ADC_F [0] = ((float) (ADC_TMP))
/((float) (0x7FFF)) *10.0;
else
ADC_F [ 0] = ( ( float) ( 0xFFFF -
ADC_TMP)) /((float) (0x7FFF)) * (-10.0) ;
ADC_TMP=ADC_ADD&0xFFFF;
//讀取通道2結果
if ((ADC_TMP&0x8000)! =0x8000)
//轉換通道2結果
ADC_F [1] = ((float) (ADC_TMP))
/((float) (0x7FFF)) *10.0;
else
ADC_F [ 1] = ( ( float) ( 0xFFFF -
ADC_TMP)) /((float) (0x7FFF)) * (-10.0) ;
ADC_TMP=ADC_ADD&0xFFFF;
//讀取通道3結果
if ((ADC_TMP&0x8000)! =0x8000)
//轉換通道3結果
ADC_F [2] = ((float) (ADC_TMP))
/((float) (0x7FFF)) *10.0;
else
ADC_F [ 2] = ( ( float) ( 0xFFFF -
ADC_TMP)) /((float) (0x7FFF)) * (-10.0) ;
ADC_TMP=ADC_ADD&0xFFFF;
//讀取通道4結果
if ((ADC_TMP&0x8000)! =0x8000)
//轉換通道4結果
ADC_F [3] = ((float) (ADC_TMP))
/((float) (0x7FFF)) *10.0;
else
ADC_F [ 3] = ( ( float) ( 0xFFFF -
ADC_TMP)) /((float) (0x7FFF)) * (-10.0) ;
ADC_TMP=ADC_ADD&0xFFFF;
//讀取通道5結果
if ((ADC_TMP&0x8000)! =0x8000)
//轉換通道5結果
ADC_F [4] = ((float) (ADC_TMP))
/((float) (0x7FFF)) *10.0;
else
ADC_F [ 4] = ( ( float) ( 0xFFFF -
ADC_TMP)) /((float) (0x7FFF)) * (-10.0) ;
ADC_TMP=ADC_ADD&0xFFFF;
//讀取通道6結果
if ((ADC_TMP&0x8000)! =0x8000)
//轉換通道6結果
ADC_F [5] = ((float) (ADC_TMP))
/((float) (0x7FFF)) *10.0;
else
ADC_F [ 5] = ( ( float) ( 0xFFFF -
ADC_TMP)) /((float) (0x7FFF)) * (-10.0) ;
ADC1_CONVST=0;
}
評論