《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 業界動態 > 異種單片機共享片外存儲器及其與微機通信的方法

異種單片機共享片外存儲器及其與微機通信的方法

2009-05-18
作者:裴洪安1, 賈云得2, 甘景全2

  摘? 要: 介紹了通用單片機(MCU)AT89C51與信號處理單片機(DSP)TMS320C32通過共享片外隨機存儲器實現板間通信的方法,并給出了總線隔離硬件電路與軟件控制流程。文中還簡要分析了AT89C51與微機進行串行通信的軟硬件設計,通過擴展AT89C51間接實現了TMS320C32與通用單片機或微機之間的通信。

  關鍵詞: 單片機 DSP? 數字信號處理器? 共享存儲器? 串口通信

?

  TMS320系列數字信號處理單片機(DSP)在測控、儀器儀表、圖象處理、計算機視覺與聲信號處理等領域得到了越來越廣泛的應用。DSP獲取原始采集數據和輸出處理結果一般有兩種途徑:一是通過串行口,另一是通過數據總線讀寫片外存儲器。本文介紹了基于DSP的信號處理目標板與基于單片機AT89C51的多路同步數據采集板通過共享片外隨機存儲器實現板間通信,來獲取原始采集數據的方法,并給出了總線隔離硬件電路與軟件控制流程。并介紹了把DSP的處理結果傳送給基于MCS-51單片機或基于微機的控制系統的方法。文中還簡要分析了AT89C51與微機進行串口通信的軟硬件設計,通過擴展AT89C51間接實現了TMS320C32與單片機或微機之間的通信,比直接通過TMS320C32的串口與單片機或微機進行通信要簡單可靠得多。下面如無特別說明,MCU指AT89C51,DSP指TMS320C32。

1 板間共享存儲器的硬件接口電路和軟件控制流程

1.1 信號處理板硬件接口電路

  基于DSP的信號處理板可以根據應用要求運行許多信號處理算法,如信號預處理、目標識別與跟蹤定位、Kalman濾波等。待處理的原始信號數據通過板間通信從數據采集板獲得。這里采用板間共享存儲器的方法來完成數據交換,DSP既可以從共享存儲器讀取采集數據,也可以把處理結果(如新的程控放大倍數值,跟蹤定位結果等)寫到共享存儲器中供MCU讀取。

  TMS320C32有一個雙向串行口,可以設置每幀同時收發8/16/24/32位數據,同步時鐘可以由內部串口定時器產生或由外部輸入。通過設置串口全局控制寄存器來控制串口的總體功能和工作模式;通過設置FSX/DX/CLKX端口控制寄存器和FSR/DR/CLKR端口控制寄存器來控制串口6個引腳的功能,可以軟件設置每個引腳為通用的I/O引腳或串口通信引腳。TMS320C32有兩根通用的I/O引腳為XF0和XF1,由于共享存儲器接口電路需要4根控制線來進行DSP與MCU間的握手通信,這里把串口的2個引腳FSR0和FSX0設置為通用的I/O引腳用作控制線。接口電路原理圖如圖1所示。

????圖中RAM0~RAM3是四片容量為512K的8位高速RAM(芯片型號為CY7C1049-17VC),組成32位數據寬度的存儲器,DSP運行時的程序和數據都在這四片RAM中。FLASH(芯片型號為Am29F016)用于存儲程序和初始化數據,即使掉電內容也不丟失,DSP上電時由自帶的BOOT LOADER程序從FLASH中取出程序到四片RAM中運行。從共享存儲器讀取的采集數據也暫存到這四片RAM中。

1.2? 數據采集板硬件接口電路

  基于單片機AT89C51的數據采集板在單片機的全局控制下,通過對多路聲傳感器輸出的微弱信號進行程控放大、低通濾波、同步采樣保持、A/D變換,實時同步采集多路信號,并把采集到的信號數據存放在數據采集板上的128K共享存儲器(芯片型號為CY7C109-12VC)中。

  共享存儲器及其總線隔離電路設計在數據采集板上。在某一時刻,共享存儲器只能被某一方訪問,否則會產生總線沖突。這里由MCU切換選通DSP總線或單片機總線,分時訪問共享存儲器。總線隔離芯片選用常見的雙向總線隔離/驅動芯片74HC245,它有一個輸出使能引腳(E)和一個數據傳輸方向(DIR)引腳,MCU通過控制這兩個引腳來完成總線隔離與數據傳輸方向控制功能。接口電路原理圖如圖2所示。圖中,MCU端的總線隔離由一片74HC373和兩片74HC245完成,DSP端由三片74HC245完成數據總線和地址總線的隔離。由P1.2控制選通哪組總線,當P1.2為低電平時,共享存儲器只能被MCU訪問;當P1.2為高電平時,只有當P1.3也為高電平時(表示MCU同意讓出共享存儲器),共享存儲器才能被DSP訪問。由于DSP需要讀或寫共享存儲器,所以需要軟件設置數據總線隔離芯片74HC245的數據傳輸方向,這里通過設置DSPDIR信號線的電平狀態來完成(高電平時為讀,低電平時為寫)。由于地址總線的數據傳輸方向始終是單向的,所以其隔離芯片的DIR端可以固定接低電平或高電平,視74HC245的實際接線而定。

?

1.3? 軟件控制流程

  信號處理板上的DSP需要采集信號數據時就向數據采集板上的MCU發出請求信號,單片機接收到請求信號后,如果同意讓出共享存儲器,則向DSP發出應答信號,同時隔離MCU端的總線,暫停數據采集。DSP接收到應答信號后就可以訪問共享存儲器,DSP快速讀、寫完數據后,向單片機發結束信號,單片機接收到結束信號后,收回共享存儲器,同時隔離DSP端總線,繼續采集。這樣數據采集與信號處理就可以同時進行,不同于一般的采集一段處理一段的串行工作模式,實現了數據采集零等待,增加了系統的吞吐能力。參見圖3的接線圖,一次完整的通信過程詳述如下,注意在DSP程序初始化時應把XF0、XF1、FSR0設置為相應的無效狀態。

?

  (1)DSP需要采集信號數據時向MCU發請求信號(置XF0為低電平),觸發MCU的INT0中斷,等待MCU應答(DSP循環檢測XF1的狀態)。

????(2)如果MCU同意讓出共享存儲器,則響應中斷,否則等待。在中斷服務程序中,置P1.3(即DSPACK)為高電平,表示應答。同時置P1.2為高電平,選通DSP總線。MCU接著循環檢測P1.4(即DSPEOR)的狀態。

??? (3)DSP收到應答信號(即檢測到XF1為高電平),立即快速讀寫共享存儲器,在讀操作前,置FSX0為高電平,在寫操作前,置FSX0為低電平。讀寫完后,向MCU發結束信號(置FSR0為高電平),DSP緊接著進行其它處理操作。

??? (4)MCU收到結束信號后(即檢測到P1.4為高電平),置P1.2為高電平,隔離DSP總線,收回共享存儲器,繼續采集。

2 信號處理板與控制系統的通信

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

2.1?信號處理板與控制系統的串口通信硬件電路

  信號處理板利用擴展的單片機AT89C51與基于微機或MCU的控制系統進行全雙工通信。圖4為AT89C51的串口通信電路,通過“串口選擇”撥碼開關選擇是與基于微機的控制系統通信,還是與基于MCU的控制系統通信。

?

?

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

????當信號處理板與基于MCU的控制系統通信時,只需三根線,一根發送線(TXD),一根接收線(RXD),一根共地線(GND),將雙方的地線連在一起,將雙方的發送線與接收線交叉連接即可。當信號處理板與基于微機的控制系統通信時,利用微機的九針串口進行通信,它們的串口電纜連線如圖5所示。這里的發送線與接收線沒有交叉,是因為在進行電平轉換時已經交叉過了(參見圖4)。

?

?

2.2 信號處理板與控制系統的串口通信軟件編程

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

  (1) 信號處理板上電后,一直發送請求聯機信號‘R’,等待控制系統發應答信號‘A’,如果信號處理板收到應答,表示雙方硬件連接正確,聯機成功。

  (2) 運行控制系統的串口通信程序。如果是與微機通信,則先自動檢測連接的是哪個串口(COM1或COM2),檢測到后向信號處理板發應答信號‘A’;若沒檢測到則顯示錯誤信息,提示檢查接線是否有誤。若是與單片機通信,如果在規定的時間內(如10s內)還沒有收到應答,則讓指示燈閃爍,認為出錯,需重新復位。

??? (3)信號處理板收到應答后,先向控制系統發送總共要傳輸的數據個數,然后依次發送每個數據,直到發完為止。

??? (4)控制系統發完聯機應答信號后,就處于接收狀態。先接收總共的數據個數,然后依次接收每個數據。控制系統每接收到一個數據都向信號處理板發確認信號,信號處理板只有收到確認信號后才發下一個數據。

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

?

參考文獻

1 Texas Instrument.TMS320C3x User's Guide.USA:Texas Instruments Incorporated,1998

2 Maxim Corporation.±15kV ESD-Protected,+5V RS-232?Transceivers. USA:Maxim Integrated Products,1996

3 王福瑞.單片微機測控系統設計大全.北京:北京航空航天大學出版社,1998

4 李華.MCS-51系列單片機實用接口技術.北京:北京航空航天大學出版社,1993

本站內容除特別聲明的原創文章之外,轉載內容只為傳遞更多信息,并不代表本網站贊同其觀點。轉載的所有的文章、圖片、音/視頻文件等資料的版權歸版權所有權人所有。本站采用的非本站原創文章及圖片等內容無法一一聯系確認版權者。如涉及作品內容、版權和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經濟損失。聯系電話:010-82306118;郵箱:[email protected]
主站蜘蛛池模板: 亚洲精品区一区二区三区四 | 亚洲精品国产精品精 | 日韩特级 | 成a人片亚洲日本久久 | 91亚洲精品久久91综合 | 韩国精品一区二区三区四区五区 | 最近日本免费观看视频 | 国产成人精品免费视频大全可播放的 | 日本www色视频成人免费网站 | 亚洲经典乱码在线播 | 美女做爰视频在线观看免费 | 亚洲精品国产精品一区二区 | 4455永久在线毛片观看 | 国产欧美久久久另类精品 | 久久精品视频免费 | 操12p | 欧美成人三级伦在线观看 | 欧美成人网7777视频 | 成年女人在线观看片免费视频 | 国产成人免费全部网站 | 91国内精品久久久久免费影院 | 国产精品9| 成人亚洲国产 | 欧美在线一级va免费观看 | 久久频这里精品香蕉久久 | 国产男女爽爽爽免费视频 | 国产精品二区在线 | 国产专区一va亚洲v天堂 | 蘑菇午夜三级 | 久久www免费人成_看片高清 | 成年人免费在线视频 | 中文字幕福利片 | 高清毛片一区二区三区 | 国产欧美日韩综合二区三区 | 人久热欧美在线观看量量 | 国产成人v视频在线观看 | 91精品91久久久久久 | 男女午夜免费视频 | 午夜一区二区福利视频在线 | 在线观看一区二区三区四区 | 亚洲一区二区免费看 |