<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 異種單片機(jī)共享片外存儲(chǔ)器及其與微機(jī)通信的方法

          異種單片機(jī)共享片外存儲(chǔ)器及其與微機(jī)通信的方法

          作者: 時(shí)間:2012-03-07 來(lái)源:網(wǎng)絡(luò) 收藏

          1.3 軟件控制流程

          信號(hào)處理板上的DSP需要采集信號(hào)數(shù)據(jù)時(shí)就向數(shù)據(jù)采集板上的MCU發(fā)出請(qǐng)求信號(hào),接收到請(qǐng)求信號(hào)后,如果同意讓出,則向DSP發(fā)出應(yīng)答信號(hào),同時(shí)隔離MCU端的總線,暫停數(shù)據(jù)采集。DSP接收到應(yīng)答信號(hào)后就可以訪問(wèn),DSP快速讀、寫完數(shù)據(jù)后,向發(fā)結(jié)束信號(hào),接收到結(jié)束信號(hào)后,收回,同時(shí)隔離DSP端總線,繼續(xù)采集。這樣數(shù)據(jù)采集與信號(hào)處理就可以同時(shí)進(jìn)行,不同于一般的采集一段處理一段的串行工作模式,實(shí)現(xiàn)了數(shù)據(jù)采集零等待,增加了系統(tǒng)的吞吐能力。參見圖3的接線圖,一次完整的通信過(guò)程詳述如下,注意在DSP程序初始化時(shí)應(yīng)把XF0、XF1、 FSR0設(shè)置為相應(yīng)的無(wú)效狀態(tài)。

          (1)DSP需要采集信號(hào)數(shù)據(jù)時(shí)向MCU發(fā)請(qǐng)求信號(hào)(置XF0為低電平),觸發(fā)MCU的INT0中斷,等待MCU應(yīng)答(DSP循環(huán)檢測(cè)XF1的狀態(tài))。

          (2)如果MCU同意讓出共享存儲(chǔ)器,則響應(yīng)中斷,否則等待。在中斷服務(wù)程序中,置P1.3(即DSPACK)為高電平,表示應(yīng)答。同時(shí)置P1.2為高電平,選通DSP總線。MCU接著循環(huán)檢測(cè)P1.4(即DSPEOR)的狀態(tài)。

          (3)DSP收到應(yīng)答信號(hào)(即檢測(cè)到XF1為高電平),立即快速讀寫共享存儲(chǔ)器,在讀操作前,置FSX0為高電平,在寫操作前,置FSX0為低電平。讀寫完后,向MCU發(fā)結(jié)構(gòu)信號(hào)(置FSR0為高電平),DSP緊接著進(jìn)行其它處理操作。

          (4)MCU收到結(jié)束信號(hào)后(即檢測(cè)到P1.4為高電平),置P1.2為高電平,隔離DSP總線,收回共享存儲(chǔ)器,繼續(xù)采集。

          2 信號(hào)處理板與控制系統(tǒng)的通信

          信號(hào)處理板從數(shù)據(jù)采集板獲取采集數(shù)據(jù)后,經(jīng)過(guò)對(duì)其進(jìn)行一系列信號(hào)處理算法的運(yùn)算處理,得到的處理結(jié)果需要傳送給基于單片機(jī)或微機(jī)的控制系統(tǒng)。由于這里的處理結(jié)果數(shù)據(jù)量很小,所以利用的方法進(jìn)行數(shù)據(jù)傳輸最為簡(jiǎn)單。我們可以直接對(duì)信號(hào)處理板上DSP的串口編程來(lái)與控制系統(tǒng)進(jìn)行通信。但由于DSP 的串口為同步串口,而單片機(jī)或微機(jī)的串口通常都為異步串口,這樣就需要用軟件來(lái)模擬DSP串口的異步通信時(shí)序,軟件工作量大而且通信不可靠。這里通過(guò)擴(kuò)展單片機(jī)與共享存儲(chǔ)器的方法很好地解決了這個(gè)問(wèn)題。DSP把處理結(jié)果寫到共享存儲(chǔ)器中,立即進(jìn)行下一輪處理,由單片機(jī)從共享存儲(chǔ)器中取出處理結(jié)果并傳送給控制系統(tǒng)。這就省去了DSP進(jìn)行所需的時(shí)間,最大限度地利用了DSP的高速數(shù)據(jù)處理的能力。在實(shí)時(shí)性要求很高的場(chǎng)合,這顯得尤為重要。通過(guò)擴(kuò)展少量的硬件,不但提高了系統(tǒng)的速度,優(yōu)化了整體性能,而且軟件實(shí)現(xiàn)也簡(jiǎn)單了許多。

          2.1 信號(hào)處理板與控制系統(tǒng)的硬件電路

          信號(hào)處理板利用擴(kuò)展的單片機(jī)AT89C51與基于微機(jī)或MCU的控制系統(tǒng)進(jìn)行全雙工通信。圖4為AT89C51的串口通信電路,通過(guò)“串口選擇”撥碼開關(guān)選擇是與基于微機(jī)的控制系統(tǒng)通信,還是與基于MCU的控制系統(tǒng)通信。

          在IBM PC/XT微機(jī)系統(tǒng)中,其串口符合RS-232C接口標(biāo)準(zhǔn)。為提高抗干擾能力,RS-232C標(biāo)準(zhǔn)采用負(fù)邏輯,低電平在-5V~-15V之間(通常用- 12V表示)為邏輯“1”,高電平在+5V~+15V之間(通常用+12V表示)為邏輯“0”,上述電平稱為EIA電平,它與TTL電平和CMOS電平不同。為了使AT89C51能與微機(jī)進(jìn)行串行通信,可以利用常見的MC1488和MC1489進(jìn)行電平轉(zhuǎn)換。MC1488把TTL電平轉(zhuǎn)換為RS-232C 電平,MC1489把RS-232C電平轉(zhuǎn)換為TTL電平。但由于MC1488和MC1489需要±12V的供電電壓,增加了電源電路的復(fù)雜性,如圖4所示,這里選用只需單一+5V電壓的MAX232來(lái)完成電平轉(zhuǎn)換,簡(jiǎn)化了硬件電路。

          當(dāng)信號(hào)處理板與基于MCU的控制系統(tǒng)通信時(shí),只需三根線,一根發(fā)送線(TXD),一根接收線(RXD),一根共地線(GND),將雙方的地址連在一起,將雙方的發(fā)送線與接收線交叉連接即可。當(dāng)信號(hào)處理板與基于微機(jī)的控制系統(tǒng)通信時(shí),利用微機(jī)的九針串口進(jìn)行通信,它們的串口電纜連線如圖5所示。這里的發(fā)送線與接收線沒(méi)有交叉,是因?yàn)樵谶M(jìn)行電平轉(zhuǎn)換時(shí)已經(jīng)交叉過(guò)了(參見圖4)。

          2.2 信號(hào)處理板與控制系統(tǒng)的串口通信軟件編程

          單片機(jī)與單片機(jī)或微機(jī)進(jìn)行串口通信的軟件編程有兩種:查詢方式和中斷方式。這里發(fā)送方(信號(hào)處理板)采用查詢方式,接收方(控制系統(tǒng))采用中斷方式。通信程序主要完成對(duì)串口初始化(包括選擇串口模式、設(shè)置數(shù)據(jù)傳輸格式、設(shè)置波特率等)、建立連接、傳輸數(shù)據(jù)和斷開連接等功能。為確保通信可靠,雙方約定如下通信協(xié)議。

          (1)信號(hào)處理板上電后,一直發(fā)送請(qǐng)求聯(lián)機(jī)信號(hào)‘R’,等待控制系統(tǒng)發(fā)應(yīng)答信號(hào)‘A’,如果信號(hào)處理板收到應(yīng)答,表示雙方硬件連接正確,聯(lián)機(jī)成功。

          (2) 運(yùn)行控制系統(tǒng)的串口通信程序。如果是與微機(jī)通信,則先自動(dòng)檢測(cè)連接的是哪個(gè)串口(COM1或COM2),檢測(cè)到后向信號(hào)處理板發(fā)應(yīng)答信號(hào)‘A’;若沒(méi)檢測(cè)到則顯示錯(cuò)誤信息,提示檢查接線是否有誤。若是與單片機(jī)通信,如果在規(guī)定的時(shí)間內(nèi)(如10s內(nèi))還沒(méi)有收到應(yīng)答,則讓指示燈閃爍,認(rèn)為出錯(cuò),需重新復(fù)位。

          (3)信號(hào)處理板收到應(yīng)答后,先向控制系統(tǒng)發(fā)送總共要傳輸?shù)臄?shù)據(jù)個(gè)數(shù),然后依次發(fā)送每個(gè)數(shù)據(jù),直到發(fā)完為止。

          (4)控制系統(tǒng)發(fā)完聯(lián)機(jī)應(yīng)答信號(hào)后,就處于接收狀態(tài)。先接收總共的數(shù)據(jù)個(gè)數(shù),然后依次接收每個(gè)數(shù)據(jù)。控制系統(tǒng)每接收到一個(gè)數(shù)據(jù)都向信號(hào)處理板發(fā)確認(rèn)信號(hào),信號(hào)處理板只有收到確認(rèn)信號(hào)后才發(fā)下一個(gè)數(shù)據(jù)。

          另外,在單片機(jī)與微機(jī)之間進(jìn)行通信時(shí),雙方要正確選擇一致的波特率,而且SMOD位的選擇影響單片機(jī)波特率的準(zhǔn)確度,即影響波特率的誤差范圍。因而在單片機(jī)波特率設(shè)置時(shí),對(duì)SMOD的選取也要適當(dāng)考慮。為了保證通信的可靠性,通常波特率相對(duì)誤差不要大于2.5%,當(dāng)單片機(jī)與微機(jī)之間進(jìn)行通信時(shí),尤其要注意這一點(diǎn)。例如,單片機(jī)的時(shí)鐘fosc= 12MHz,串口模式為方式1,假設(shè)單片機(jī)與微機(jī)的波特率都選為9600bps。當(dāng)SMOD=0時(shí),波特率相對(duì)誤差為8.5%,當(dāng)SMOD=1時(shí),波特率相對(duì)誤差為6.99%。實(shí)驗(yàn)表明,不論SMOD=0或1,單片機(jī)與微機(jī)在這種條件下均不能實(shí)現(xiàn)正常的發(fā)送與接收。若雙方的波特率都取4800bps,且 SMOD=1時(shí),波特率相對(duì)誤差為0.16%,實(shí)驗(yàn)證明通信完全可靠


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();