<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 基于A(yíng)DSP-BF561的控制信號處理系統

基于A(yíng)DSP-BF561的控制信號處理系統

作者: 時(shí)間:2007-06-06 來(lái)源:網(wǎng)絡(luò ) 收藏
在某系統中,選用作為主控機,外接鍵盤(pán),LCD顯示屏,標準RS232接口,實(shí)時(shí)時(shí)鐘等,通過(guò)DSP編程來(lái)實(shí)現對各個(gè)功能模塊的,同時(shí)產(chǎn)生多路的數字IO。該系統還包括電源、時(shí)鐘、CPLD、FLASH,JTAG調試器、復位電路等基本組成部分,系統框圖如圖1所示。

圖1的控制系統框圖

系統電源模塊選用TPS54350來(lái)實(shí)現,外圍電路不同的RC值,可以構成不同的輸出電壓,這里需要產(chǎn)生的是5V、3.3V、1.25V三種電壓。時(shí)鐘電路由48MHz的晶振電路來(lái)實(shí)現,其輸出作為DSP的外圍時(shí)鐘和CPLD的時(shí)鐘。FLASH用于存儲用戶(hù)的應用程序,JTAG調試口在DSP電路設計中也是必不可少的。后面對各個(gè)部分一一介紹,特別是對復位電路,數字IO信號的產(chǎn)生,以及RS232接口進(jìn)行詳細的介紹。

1. 鍵盤(pán)

鍵盤(pán)選用的是44的掃描鍵盤(pán),如圖1所示,由Blackfin的GPIO接口PF5~PF12來(lái)實(shí)現。其中,KEY_GP3~KEY_GP0為行線(xiàn)輸入端,初始化為帶上拉電阻的輸入口,中斷使能(下降沿觸發(fā));KEY_GP7~KEY_GP4為列線(xiàn)輸出端,初始化為輸出低電平。鍵盤(pán)掃描方法同常規的掃描鍵盤(pán)方法相同。


圖1掃描鍵盤(pán)結構圖

2.LCD顯示屏

LCD顯示屏采用320x240的LCD液晶模塊。320x240液晶模塊配用sed1335驅動(dòng)接口板,sed1335驅動(dòng)接口板上配用32K的RAM。LCD除了讀寫(xiě)信號線(xiàn)由Blackfin的讀寫(xiě)信號來(lái)控制以外,8位數據線(xiàn)由Blackfin的低8位數據線(xiàn)鎖存輸出,以及其使能信號由Blackfin的AMS3控制,LCD地址分配為0x2C000000。電路連接如圖2所示。在對LCD進(jìn)行控制時(shí),除了要建立在LCD上顯示的漢字和英文的字庫以外,還要編寫(xiě)對sed1335的底層驅動(dòng)程序。這可以在LCD自帶的驅動(dòng)程序的基礎上,進(jìn)行代碼移植,把它改寫(xiě)成適合BF561的DSP程序。


圖2LCD連接示意圖

3.實(shí)時(shí)時(shí)鐘

控制系統的實(shí)時(shí)時(shí)鐘選用了芯片DS1337來(lái)實(shí)現。DS1337是一個(gè)低功耗的串行實(shí)時(shí)時(shí)鐘芯片,它有24h/12h制兩種模式,它可以輸出年、月、日、分、時(shí)、秒的形式。它采用I2C協(xié)議,Blackfin的PF0和PF1作為I2C的CLK和DATA,而PF3作為實(shí)時(shí)時(shí)鐘的中斷FLAG,其電路連接示意圖如圖3所示。


圖3實(shí)時(shí)時(shí)鐘電路連接示意圖

4.復位電路

為了保證DSP在上電或按下復位鍵時(shí)能可靠的復位,一般加一個(gè)復位延時(shí)電路,選用MAX708S來(lái)完成,如圖4所示。




圖4復位電路

在上電過(guò)程中,RESET信號會(huì )在VCC達到穩定電壓后的一段時(shí)間內(約200ms)保持為高,然后再變低。信號為RESET的“NOT”,即會(huì )相對VCC延時(shí)一段時(shí)間后再變高,如圖5所示。這樣,在DSP的各電源電壓已穩定的情況下,DSP的復位信號仍為低有效,就可以保證DSP的正常復位。

圖5上電過(guò)程中的信號

在上電以后,如果手動(dòng)按下開(kāi)關(guān),使得MR上的信號由高→低→高,產(chǎn)生一個(gè)低脈沖,這時(shí),管腳上也會(huì )輸出一個(gè)低脈沖,只是其低電平持續的時(shí)間比MR上低電平的持續時(shí)間長(cháng)200ms左右,以保證DSP的復位可靠完成,如圖6所示。


圖6手動(dòng)復位時(shí)的信號

5.數字IO信號的產(chǎn)生

在該控制系統中,要求產(chǎn)生8路數字IO信號。如果把這8路數字IO信號看成一個(gè)8bit的數,則需產(chǎn)生一個(gè)有限長(cháng)度的非方波的編碼信號,如下圖所示。在T0時(shí)刻需要產(chǎn)生的數字IO信號為STAT0,比如說(shuō)10010101;在在T1時(shí)刻需要產(chǎn)生STAT1,…,在Tn時(shí)刻需要產(chǎn)生STATn,而且T0可能不等于T1或Tn,STAT的狀態(tài)也各不相同。


圖7 數字IO信號的狀態(tài)

這里選用BF561的看門(mén)狗定時(shí)器(WatchdogTimer)來(lái)實(shí)現。在看門(mén)狗定時(shí)器的操作中,先將計數值寫(xiě)入寄存器WDOG_CNT中,然后看門(mén)狗定時(shí)器自動(dòng)將WDOG_CNT的值寫(xiě)入寄存器WDOG_STAT。接著(zhù)通過(guò)寄存器WDOG_CTL使能WatchdogTimer,看門(mén)狗定時(shí)器開(kāi)始計數,逐次減小WDOG_STAT的值,直至為0,這時(shí)預先編寫(xiě)的程序事件就會(huì )發(fā)生。要想輸出一個(gè)8bit的數據,只需往某地址單元寫(xiě)數,對應的數據線(xiàn)就會(huì )寫(xiě)出該數據。為了把該數據保持一段時(shí)間(Tx的長(cháng)度),還需使用鎖存器將該數據鎖住。所以在BF561的DSP程序中先定義了數字IO信號對應的中斷事件,且中斷優(yōu)先級較高,這是為了保證定時(shí)的精確度,防止別的事件干擾。

register_handler(ik_ivg9,DIO_WDOGA_ISR);

然后在中斷事件里,把當前要寫(xiě)入的數據寫(xiě)到某地址單元上,然后使能WatchdogTimer,再將定時(shí)器的值寫(xiě)入WDOG_CNT中。定時(shí)器的計數是以sclk為基準的,程序代碼如下:

*pDIO_Data_Port=codes;

*pWDOGA_CTL=DISABLE_WDOG;

*pWDOGA_CTL|=WDOG_EXPIRED_BIT;

*pWDOGA_CNT=times;

*pWDOGA_CTL=ENABLE_GPI;

codes和times就是當前要產(chǎn)生的數字IO的編碼和長(cháng)度。由于是一系列編碼,可以用數組索引的形式,將當前的值寫(xiě)入。而我們事先定義DIO_Data_Port的地址為0x24000000,這對應BF561的AMS1的地址空間,所以用AMS1作為鎖存器的使能信號,將數據線(xiàn)上的數據通過(guò)鎖存器以后再輸出,如下圖所示


圖8數字IO的鎖存器

6.標準RS232接口

為了讓控制系統與計算機之間可以進(jìn)行數據的相互傳遞,系統采用MAX3232芯片來(lái)實(shí)現,如圖9所示:

圖9BF561與計算機之間的串口通信框圖

BF561的UART遵循異步串行通信協(xié)議,包括:5-8個(gè)數據位;1、11/2、2個(gè)停止位;有/無(wú)奇偶檢驗。而波特率滿(mǎn)足


其中,SCLK是DSP系統的時(shí)鐘頻率,Divisor的值介于1~65536,可以由timer寄存器相應的值得到,滿(mǎn)足關(guān)系式


在BF561的初始化設置中,將UART設為8bit數據模式,同時(shí)將Timer2設置為WDTH_CAP模式,用Timer2去捕獲串口的數據變化率,而Timer2位于TMRS8寄存器里,程序初始化代碼如下:

*pUART_LCR=WLS(8);

*pUART_MCR=LOOP_ENA;

*pTMRS8_DISABLE=TIMDIS2;

*pTMRS8_STATUS=TRUN2|TOVL_ERR2|TIMIL2;

*pTIMER2_CONFIG=TIN_SEL|IRQ_ENA|PERIOD_CNT|WDTH_CAP;

*pTMRS8_ENABLE=TIMEN2;

*pUART_GCTL=UCEN;

在程序一開(kāi)始,就會(huì )按照初始化設置進(jìn)行自動(dòng)波特率檢測。當有字符輸入時(shí),timer會(huì )測量連續2次下降沿的寬度,并返回到timer所對應的period寄存器里。比如說(shuō),如果發(fā)送”@”(0x40h)作為自動(dòng)波特率檢測,發(fā)送時(shí)包括起始位,總共為8bit,如圖10所示。


圖10自動(dòng)波特率檢測字符”@”(0x40h)

此處period的大小如上圖所示,捕獲的UARTbits為8位,所以得到


再根據波特率的公式,就可以求得波特率的大小。此段程序代碼如下:

Period=*pTIMER2_PERIOD;//返回period的值

Divisor=Period>>7;//右移7bit就相當于除以168

BaudRate=SYSCLK/16/divisor;//得到波特率


結論

整個(gè)控制系統是以L(fǎng)CD顯示的界面為基礎,按提示進(jìn)行相應的鍵盤(pán)操作。經(jīng)過(guò)測試,該系統各部分工作正常,無(wú)相互干擾現象。實(shí)時(shí)時(shí)鐘定時(shí)精確,可以達到秒級。數字IO輸出的波形編碼無(wú)亂碼,定時(shí)精度可達毫秒級。RS232接口傳輸數據時(shí),以高達115200bit/s的波特率傳輸,誤碼率小于5%。該控制系統已成功應用于某雷達系統的控制子系統。



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>