隨著現代工業技術的發展和對信號處理要求的不斷提高,對于一個可靠穩定的系統來說,數據采集起著舉足輕重的作用。數據采集及處理系統應用非常廣泛,其基本原理是將外部模擬信號的電壓量通過A/D轉換器,轉換成為數字量并存儲在內部的RAM中,通過一系列的算法完成數據的處理。
本系統采用TI公司的TMS320F2812作為信號采集和處理的核心,通過TMS320F2812的McBSP模塊外擴A/D轉換器LTC1865進行采集。
系統硬件設計
TMS320F2812及其McBSP模塊
TMS320F2812是TI公司的一款高性能、多功能、高性價比的32位定點DSP芯片。該芯片兼容TMS320LF2407指令系統,最高可在150MHz主頻下工作,并帶有18K×16位零等待周期片上SRAM和128K×16位片上Flash(存取時間為36ns)。TMS320F2812采用哈佛總線結構,具有密碼保護機制,可進行雙16×16乘加和32×32乘加操作,提供了足夠的處理能力,使一些復雜實時控制算法的應用成為可能,因而具有控制和快速運算的雙重功能。
TMS320F2812芯片的McBSP是一種同步串行接口,可以根據設計者的不同需求進行配置,使用非常靈活。McBSP的時鐘停止模式可以提供與SPI兼容的協議。當McBSP配置為時鐘停止模式時,發送器和接收器內不同步,這樣McBSP可以作為一個SPI主設備或從設備。在這種模式下,McBSP的發送時鐘信號CLKX相當于SPI總線的SCK信號,發送幀同步信號FSX可以作為SPI的片選使能信號SS使用。在時鐘停止模式中,由于采用內部同步模式,不使用接收時鐘信號CLKR和接收幀同步信號FSR。
串行A/D轉換器LTC1865
本系統使用的數模轉換器LTC1865是凌力爾特推出的16位SARADC,采用單5V電源工作,并能保證在-40℃~+125℃的溫度范圍內工作。每個器件最大電表1通道配置字選擇單端輸入差分輸入地址選擇10110001通道01+-+--+地--流為850μA,最大采樣率達250kS/s,供電電流隨著采樣速率的降低而變小。MSOP-10封裝的LTC1865提供2路軟件可編程的通道,并且可以根據需求來調整參考電壓的大小。3線SPI兼容串行接口通信,適用于高分辨率應用場合,如汽車溫度檢測、發動機油壓測量或多普勒信號的采集等。
LIC1865的工作時序如圖1所示。LTC1865轉換周期開始于CONV信號的上升沿(即CONV為高電平時),經過一段tCONV后轉換才結束。如果此時CONV還是高電平,LTC1865就拉低供電電流進入省電模式。當CONV變為低電平后,在SCK的上升沿依次從SDI引腳輸入2個通道配置位(其他輸入位被忽略),直到下一個CONV周期出現。SCK同步與數據的傳輸都為全雙工工作模式。數據傳送完后,如果CONV還是低電平,則SDO在SCK上升沿輸出為0。
LTC1865的工作時序圖
2個通道輸入配置字決定了下一次轉換的通道及其采樣模式。如表1所示,如果配置字為10時,LTC1865將測CH0引腳對地的信號;如果配置字為11時,LTC1865將測量CH1引腳對地的信號;如果配置字為00時,LTC1865將測量CH0引腳對CH1引腳的信號;如果配置字為01時,LTC1865將測量CH1引腳對CH0引腳的信號。LTC1865采樣的范圍為VREF到VCC,其中VREF的電壓由引腳VREF決定,可以通過硬件配置為1V~VCC。
硬件電路設計
運放調理電路的設計
信號調理電路就是放大、緩沖或標定傳感器的模擬信號,使其適合于模/數轉換器(ADC)的輸入。本系統選用的運算放大器是TI公司的高CMR(共模抑制)、RRIO(軌到軌輸入輸出)OPA2364芯片,它具有單電源、低偏置和高性能等特性,完全符合本采集系統的設計要求。圖2所示為通道0的電路原理圖,為了最大限度地減小采集電路對傳感器的影響,運放使用了具有高輸入阻抗的同相放大接法。將信號從運放的輸入范圍±10V調理到適于ADC的輸入范圍。通道1的原理與通道0相同。
TMS320F2812與LTC1865接口電路設計
TMS320F2812與LTC1865的硬件電路連接如圖3所示。由于LTC1865是5V電源的A/D轉換器,而TMS320F2812是3V芯片,因此,TMS320F2812的McBSP模塊中的串行數據接收引腳MDR必須要通過光耦TLP512與LTC1865的串行數據輸出引腳ADSDO進行隔離,防止燒壞DSP。但McBSP的發送幀同步引腳MFSX、發送時鐘引腳MCLKXA和串行數據發送引腳MDXA的數據傳輸方向是由DSP到ADC,所以無需光耦進行隔離。
系統軟件的設計
LTC1865與TMS320F2812的McBSP進行高速串行通信的軟件設計流程圖如圖4所示。首先對TMS320F2812系統初始化,包括初始化PLL模塊倍頻寄存器PLLCR和低速外設分頻寄存器LOSPCP的配置;然后對McBSP進行初始化,配置相應的寄存器,使其工作在時鐘停止模式;進入死循環后,首先發送CH1通道或者CH0的配置字(通道CH0的配置字為0xc003,通道CH1的配置字為0x8002),等待SPCR1寄存器的位RRDY為1時(即接收器已經準備好),就可以接收寄存器DDR內容讀取數據。
在軟件設計中,最重要部分之一就是McBSP模塊的初始化。表2給出了McBSP配置為SPI主設備相關寄存器的位的設置。用于時鐘停止模式的幀同步信號作為從設備的使能信號時,在整個發送過程中都是有效的。每個信息包的長度可設置為8位、12位、16位、20位、24位或32位。接收信息包長度由RCR1的RWDLEN1位選擇;發送信息包長度由XCR1的XWDLEN1位選擇。在時鐘停止模式中,XWDLEN1的值必須等于RWDLEN1的值,因為McBSP的發送和接收電路同步于一個時鐘。
結合本系統的硬件設計,對McBSP配置如下
(1)工作時鐘為DSP內部的LOPCLK時鐘,并設定SRGR2和SRGR1寄存器來對時鐘進行分頻。
(2)接收和發送的數據延時為1個工作時鐘。
(3)McBSP工作模式為時鐘停止模式。
(4)數據的對齊模式為右對齊。
(5)McBSP的字長為16位。
(6)啟動發送寄存器。
注意:即使是多個碼字連續地傳輸,在1個信息包傳輸完以后,CLKX信號總是停止的,且FSX信號返回無效狀態。當進行連續的信息包傳輸時,每個信息包傳輸之間會出現2位周期的最小間隔時間。
初始化部分程序如下:
//
voidInitMcbsp(void)
{
int i;
EALLOW;
GpioMuxRegs.GPFMUX.bit.MDRA_GPI0F13=1;
GpioMuxRegs.GPFMUX.bit.MDXA_GPI0F12=1;GpioMuxRegs.GPFMUX.bit.MCLKXA_GPI0F8=1;
GpioMuxRegs.GPFMUX.bit.MFSXA_GPI0F10=1;//定義McBSP功能模塊EDIS;
McbspRegs.SPCR2.all=0x0000;
McbspRegs.RCR2.all=0x0001;//設置接收數據延遲為1位McbspRegs.RCR1.all=0x0000;
McbspRegs.XCR2.all=0x0001;//設置發送數據延時為1位;McbspRegs.XCR1.all=0x0000;
McbspRegs.SRGR2.all=0x2008;//使用內部的時鐘,L0PCLK//時鐘,設置幀周期為8個,CLKG周期
McbspRegs.SRGR1.all=0xffff;//設置采樣速率生成器分//頻系數為256McbspRegs.MCR2.all=0x0000;
McbspRegs.MCR1.all=0x0000;
McbspRegs.SPCR1.all=0x1800;//設置工作在時鐘停止模//式,上升沿啟運時鐘帶有延時McbspRegs.PCR1.all=0x0F0A;//設置發送幀同步模式,//發送時鐘模塊McbspRegs.PCR1.bit.CLKXP=1;
McbspRegs.PCR1.bit.CLKRP=0;
McbspRegs.SPCR1.bit.DXENA=1;//DX使能器開啟McbspRegs.SPCR1.bit.RJUST=0;//Right justify word
McbspRegs.SPCR2.bit.GRST=1;McbspRegs.RCR1.bit.RWDLEN1=2;//16bitword
McbspRegs.XCR1.bit.XWDLEN1=2;//16bitword
McbspRegs.SPCR2.bit.XRST=1;//enableXRST/RRST
McbspRegs.SPCR1.bit.RRST=1;for(i=0;i《1000;i++);
McbspRegs.SPCR2.all1=0x00c0;
//OnlyenableFRST,GRST
評論
查看更多