《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 一種基于DSP的數據采集與顯示設計方案

一種基于DSP的數據采集與顯示設計方案

2009-06-25
作者:方三檔,高欽和,魯永秋

??? 摘 要:為了快速、準確地進行數據采集,并把采集到的數據顯示出來,設計了一種以TI公司的TMS320F2812內置ADC為數據采集核心、以MAXIM公司的MAX7219作為LED顯示驅動的方案。從硬件和軟件兩個方面的設計進行闡述,重點介紹了軟件方面的設計。調試結果證明,該設計能夠達到數據采集的要求,并能穩定地顯示采集到的數據,可以廣泛應用于儀器儀表設計中。
??? 關鍵詞:TMS320F2812;MAX7219;數據采集;LED顯示


?

??? 數據采集及處理系統在眾多領域均有廣泛的應用,其主要功能是把外界模擬信號的電壓參量經過A/D轉換器轉換成數字量,并把轉換結果存儲以便分析處理。采集到的數據可以選用LED數碼管、液晶等器件來顯示。與同類顯示器件相比,LED數碼管具有電路連接簡單、成本低、開發周期短、性能穩定等優點。
??? 本設計采用TI公司的DSP芯片TMS320F2812作為信號采集和處理的核心,通過片上自帶的12位ADC進行數據采集;采用MAXIM公司生產的串行輸入/輸出共陰極顯示驅動器芯片MAX7219驅動8位LED數碼管,以顯示采集到的數據。
1 硬件設計
1.1 TMS320F2812內置ADC介紹

??? ADC模塊的框圖如圖1所示,其前端為2個8選1多路切換器Analog MUX和2路同時采樣/保持器S/H,構成16個模擬輸入通道ADCIN00~ADCIN15,通道的自由切換由硬件自動控制。所選通道的值經12位ADC模塊轉換后存儲在各自的ADCRESULT寄存器中。

?


??? ADC模塊的主要特點是:模擬輸入電壓范圍為0.0?V~3.0?V;具有快速的轉換時間,ADC在25 MHz時鐘下轉換時間為80 ns,最高采樣寬帶為12.5 MSPS;自動排序功能提供多達16個自動轉換,每個轉換可以編程選擇16個輸入通道中的一個,排序器可以作為2個獨立8狀態排序器或者一個16狀態排序器;16個結果寄存器用于保存轉換值,轉換后的數字量表示為:

???
??? 其中,ADCLO為偏移量,一般取為0。
??? 有多個觸發源用于啟動轉換序列:軟件立即啟動(用SOC SEQn位);事件管理器EVA;事件管理器EVB;外部引腳(ADCSOC引腳)。中斷控制靈活,允許每個序列或每隔一個序列轉換結束產生中斷請求[1-3]。
1.2 MAX7219芯片介紹
??? MAX7219是一個專用的串行輸入/輸出、共陰極LED顯示驅動器。它采用3線串行接口傳送數據,接口簡便;每片可驅動8個LED數碼管,多片串接時可控制多個LED;內部共有l4個寄存器,其中6個為控制寄存器,8個為數據寄存器,數據寄存器存放預顯示的數值,控制寄存器決定MAX7219的工作模式;只需一個外部電阻即可調節LED的段電流,且允許程控方式方便地調節LED顯示的亮度;MAX7219可選擇LED顯示器的掃描個數;有不譯碼和BCD碼譯碼2種顯示模式[4]
??? MAX7219的數據接收裝載時序圖如圖2所示。由圖可知,當LOAD信號為低時,在每個CLK的上升沿,DIN端的數據移入MAX7219內部移位寄存器中。LOAD必須在16個CLK同時或之后由低變高(上升沿),被移入的數據才會被鎖存進入內部控制寄存器或數據寄存器中。接收的第一個數據放置在內部寄存器的D15位,最后一個數據放置在D0位。在16.5個CLK之后,在DOUT端可以觀測到DIN端輸入的數據。在CLK的下降沿有數據輸出[5,6]。

?


1.3 硬件電路設計
??? MAX7219是串行輸入方式,故其連接方式比較簡單。硬件電路設計如圖3所示。TMS320F2812的SPI模塊中的SPICLK、SPISIMO分別用作MAX7219的時鐘信號CLK、串行數據輸入信號DIN;TMS320F2812的GPIOD0用作MAX7219的數據鎖存信號LOAD。MAX7219的V+引腳接+?5V電源信號,2個GND引腳接模擬地。DIG 0~DIG 7用于驅動8個數碼管的顯示,SEG A~G、SEG DP用于驅動數碼管的7段顯示和小數點的顯示。

?


2 軟件設計
??? 程序主要分為初始化、數據采集和顯示數據3個部分。程序流程框圖如圖4所示。初始化系統主要完成高速時鐘和低速時鐘的設置,高速時鐘設置成2分頻,低速時鐘設置成4分頻。因為設計使用SPI模塊控制MAX7219,所以初始化SPI模塊要把工作方式設置為主方式,這樣就可以通過SPISIMO端向MAX7219移入數據,并且為 MAX7219提供串行時鐘。與之相應,初始化GPIO就要把SPICLK、SPISIMO配置成外設信號,把GPIOD0配置成通用I/O信號。初始化ADC和MAX7219見下文的部分程序和注釋。

?


??? 數據采集部分采用事件管理器EVA啟動ADC轉換。配置事件管理器EVA,設置定時器1下溢中斷標志啟動ADC,周期設置為64。由于高速時鐘設置為2分頻,即75 MHz,經計算得ADC的采樣頻率為75/64 MHz=1.172?MHz。使能事件管理器EVA中的EVASOC,啟動ADC轉換。
??? 當ADC轉換完畢后,中斷標志位置位,進入ADC中斷服務子程序。在ADC中斷服務子程序中,將轉換結果讀入數組Voltage中,再把數組中的數據轉換為模擬信號的電壓值。響應中斷后,中斷返回到主函數,調用WriteWord函數,把要寫入數據的數據寄存器的地址和模擬信號的電壓值一并移入MAX7219中,從而驅動LED數碼管把模擬信號的電壓值顯示出來。
??? 初始化ADC模塊:
void InitAdc(void)
{
??? AdcRegs.ADCTRL1.bit.RESET = 1;//復位整個ADC模塊
??? asm(' RPT #10 || NOP');// 必須等待約12個時鐘周期后,ADC模塊的復位才有效。
??? AdcRegs.ADCTRL3.all = 0x00C8; // 首先對帶隙參考源電路進行上電。
??? Delayus(5000); ????? //ADCPWDN置位前等待5ms
??? AdcRegs.ADCTRL3.bit.ADCPWDN = 1;? //對ADC模塊的其余部分進行上電。
??? Delayus(20);???? ?//ADC上電完成后的延時。
??? /***配置ADC寄存器***/
??? AdcRegs.ADCMAXCONV.all?=?0x0001;//設置1次轉換。
??? AdcRegs.ADCCHSELSEQ1.bit.CONV00 = 0x0;? // 設置ADCINA0的轉換。
??? AdcRegs.ADCCHSELSEQ1.bit.CONV01 = 0x1;? // 設置ADCINA1的轉換。
??? AdcRegs.ADCTRL1.all=0x2710;
??? AdcRegs.ADCTRL2.all=0x0900;
}
初始化MAX7219:
/* MAX7219初始化 */
void InitDisplay (void)
{
??? WriteWord (0x0b,0x07);?????? // 設置掃描界限
??? WriteWord (0x09,0xff);????? // 設置譯碼模式
??? WriteWord (0x0a,0x0a);????? // 設置亮度級別
??? WriteWord (0x0c,0x01);????? // 設置為正常工作模式
}
/* 向MAX7219寫入字(16位)*/
void WriteWord (uchar addr,uchar num)
{
??? uchar entire;
??? entire=(addr<<8)+num;
??? GpioDataRegs.GPDDAT.bit.GPIOD0=0; //將LOAD信號置為低電平,準備移入數據。
??? delay(200);
??? SpiaRegs.SPIDAT=entire;
??? delay(200);
??? GpioDataRegs.GPDDAT.bit.GPIOD0=1; // /將LOAD信號置為高電平,鎖存進相應寄存器
}
3 調試結果
??? 設計中采集2路0~3?V的正弦波信號,正弦波信號通過波形發生器產生,其頻率可以在10?Hz~100?Hz、100?Hz~1 kHz、1 kHz~10 kHz、10 kHz~100 kHz之間任意選取。
3.1 數據采集部分
??? 調整正弦波信號的頻率,使其保持在一個固定的值。經過ADC轉換后,采集到的數據一路放在Voltage1中,另一路放在Voltage2中。從Voltage1中截取45個點,CCS中觀察到的波形如圖5所示。

?


??? 示波器觀察到的要采集的正弦波信號的頻率為52.1 kHz,而采樣頻率經計算為1.172 MHz,所以采集到正弦波信號在一個周期內的點數為1.172 MHz/0.0521 MHz=22.495≈22.5個。由圖可知,波形圖中的45個點構成兩個周期的正弦波波形,與計算結果完全吻合。
3.2 數碼顯示部分
??? 采集到的2路數字信號轉換為模擬量后,第一路信號由前4個LED數碼管顯示,第二路信號由后4個LED數碼管顯示,每一路可以讀到小數點后面第3位。8位LED數碼管的一個顯示狀態如圖6所示。

?

??? 通過觀察,LED數碼管的顯示亮度能夠調整,顯示數值的刷新速度也能調節,以適應人眼的觀察范圍。顯示亮度可以在MAX7219的初始化中控制,而刷新速度則通過延時來控制。
??? 本設計采用TMS320F2812的內置ADC作為數據采集電路的核心部件,并且用TMS320F2812的SPI模塊和GPIOD0端口控制MAX7219驅動LED顯示。電路連接簡單,易于實現。調試結果證明,該設計能夠快速準確地進行數據采集,并能穩定顯示采集到的數據,可以廣泛應用在儀器儀表的設計中。
參考文獻
[1]?徐科軍,張瀚,陳智淵. TMS320X281x DSP原理與應用[M].第1版.北京:北京航空航天大學出版社,2006.
[2]?曹夢婷,潘宏俠. 基于TMS320F2812的ADC數據采集的軟件實現[J].機械工程與自動化, 2008,148(3):82-83.
[3]?TI Incorporation. TMS320F2810,TMS320F2811, TMS320F2812,TMS320C2810,TMS320C2811, TMS320C2812 Digital signal processors data manual. 2007.
[4]?邵笑冰,徐龍祥. MAX7219在DSP控制系統中的應用[J]. 中國儀器儀表,2003(8):36-37.
[5]?蘇奎峰,呂強,常天慶,等. TMS320X281x DSP原理及C程序開發[M].第1版.北京:北京航空航天大學出版社,2008.
[6]?MAXIM. Serially interfaced,8-digit LED display drivers MAX7219/7221. 2003.

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]。
主站蜘蛛池模板: 亚洲免费观看 | 成人国产在线24小时播放视频 | 欧美国产精品亚洲精品第一区 | 日本成人免费观看 | 欧美成人怡红院在线观看 | 国产一区二区三区在线视频 | 美女白浆视频 | 九九热精 | 91久国产在线观看 | 欧美久草| xxx本日| 免费看欧美一级片 | 欧美另类激情 | 欧美一级专区免费大片俄罗斯 | 久久久久久综合一区中文字幕 | 性久久久久 | 免费视频精品一区二区三区 | 日本成人免费在线观看 | 国产精品黄在线观看观看 | 国产一区自拍视频 | 亚洲精品国产成人一区二区 | 日韩在线欧美 | 欧美久久一区二区 | 久草青青 | 国产精品久久久久久久 | 国产日本亚洲欧美 | 欧美成人看片一区二区三区尤物 | 国产成人精品日本亚洲网址 | 成人18免费入口 | 国产第一区二区三区在线观看 | 久久99精品视频在线在线观看 | 久久这里一区二区精品 | 日本高清专区一区二无线 | 六月丁香婷婷色狠狠久久 | 偷拍视频一区在线观看 | 99九九99九九九视频精品 | 久久精品国产免费看久久精品 | 免费观看一级特黄欧美大片 | 国产综合亚洲专区在线 | 韩国自拍偷自拍亚洲精品 | 欧美成人做性视频在线播放 |