TMS320C3x DSP和PC機(jī)的異步串行通信設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
【摘 要】在簡(jiǎn)要介紹TMS320C3x系列芯片的基礎(chǔ)上,主要介紹了在數(shù)字信號(hào)處理系統(tǒng)中,DSP與上位PC機(jī)異步串行通信的軟硬件解決方案。<--摘要CH(結(jié)束)←-->
<--→關(guān)鍵CH(開(kāi)始)-->關(guān)鍵詞:TMS320C3x 異步串行通信 MSComm控件
<--關(guān)鍵CH(結(jié)束)←--><--→摘要EN(開(kāi)始)-->
<--關(guān)鍵EN(結(jié)束)←-->1 引 言
TMS320C3x DSP是目前國(guó)內(nèi)應(yīng)用比較廣泛的DSP芯片之一,它提供了可與外部串行設(shè)備通信的串行接口,支持8/16/24/32位數(shù)據(jù)交換,為設(shè)計(jì)A/D、D/A接口電路提供了很大的靈活性。然而,當(dāng)DSP系統(tǒng)和PC機(jī)進(jìn)行通信時(shí),如何設(shè)計(jì)合理的接口電路和通信軟件,將DSP處理后的數(shù)據(jù)實(shí)時(shí)準(zhǔn)確地傳輸給PC機(jī),同時(shí)使PC機(jī)實(shí)時(shí)有效地控制DSP,成為DSP系統(tǒng)設(shè)計(jì)中的重要一環(huán)。本文采用異步串行通信(Universal Asychronous Receiverand Transmitter,UART),較好地解決了DSP和PC機(jī)通信這一問(wèn)題。
2 TMS320C3x簡(jiǎn)介
TMS320C3x(以下簡(jiǎn)稱C3x)是TI(TexasInstruments)公司生產(chǎn)的第三代產(chǎn)品,也是第一代浮點(diǎn)DSP芯片,包括C30、C31、C32和C33四種,是TMS320系列中性能價(jià)格比較高的一種浮點(diǎn)DSP芯片,具有32位的浮點(diǎn)精度,總共有三套總線,即程序總線、數(shù)據(jù)總線和DMA總線,取指、讀寫數(shù)據(jù)以及DMA操作可并行進(jìn)行,可以尋址16M字的空間。其中C31是C30的簡(jiǎn)化和改進(jìn)型,它去掉了擴(kuò)展總線和一個(gè)串口,降低了芯片的成本,并且在硬件上增加了一個(gè)非常有用的功能,即程序引導(dǎo)功能(Bootloader),使其程序可以從低速EPROM、PROM或串行口裝入到系統(tǒng)的高速RAM中全速運(yùn)行 。C32和C33是C31的進(jìn)一步簡(jiǎn)化和改進(jìn),其中C32片內(nèi)RAM減為512字,以降低成本。C33片內(nèi)RAM為34K ,需3.3V電源。
3 DSP系統(tǒng)結(jié)構(gòu)框圖
圖1為整個(gè)DSP系統(tǒng)的硬件框圖。
其中,TLC32044是TI公司生產(chǎn)的話帶模數(shù)接口芯片(簡(jiǎn)稱AIC)TLC32040系列中的一種,它集A/D、D/A于一體,具有兩個(gè)模擬輸入口和一個(gè)模擬輸出口,最高采樣頻率為19.2kHz。MC6850為Motorola公司生產(chǎn)的異步串行接口芯片(UART),它可以進(jìn)行8位或9位數(shù)據(jù)的發(fā)送和接收,并可選擇÷1、÷16、÷64三種不同的時(shí)鐘模式。DSP通過(guò)對(duì)MC6850的控制寄存器初始化來(lái)設(shè)置異步通信協(xié)議,然后MC6850對(duì)DSP的并行數(shù)據(jù)和PC機(jī)的串行數(shù)據(jù)按照協(xié)議進(jìn)行并串轉(zhuǎn)換。MAX232芯片進(jìn)行TTL電平和RS-232電平之間的轉(zhuǎn)換。外部信號(hào)經(jīng)A/D轉(zhuǎn)換進(jìn)入DSP,DSP對(duì)其進(jìn)行處理后,經(jīng)UART送入PC機(jī),由PC機(jī)對(duì)數(shù)據(jù)進(jìn)行處理和存儲(chǔ)。同時(shí),PC機(jī)將控制信號(hào)或待發(fā)數(shù)據(jù)經(jīng)UART送入DSP,對(duì)DSP實(shí)施控制或經(jīng)DSP處理后送入D/A,經(jīng)低通濾波后還原為模擬信號(hào)。
4 DSP系統(tǒng)通信軟件
傳輸時(shí),發(fā)送雙方應(yīng)按照共同遵循的協(xié)議進(jìn)行初始化。通信協(xié)議采用起止式異步通信協(xié)議,下面分別是DSP對(duì)MC6850和上層PC機(jī)軟件對(duì)串行口初始化操作的源程序代碼。
4.1 MC6850異步串口通信程序設(shè)計(jì)
加電之后,6850處于閉鎖狀態(tài),以避免輸出錯(cuò)誤的發(fā)送。使用前,必須通過(guò)程序?qū)⒖刂萍拇嫫鞯腃R0和CR1置“1”,以進(jìn)行主復(fù)位,使其從閉鎖狀態(tài)釋放。然后就可以對(duì)控制寄存器編程,以確定6850的時(shí)鐘分頻、數(shù)據(jù)格式和發(fā)送與接收控制功能等。以下是在Code Composer集成開(kāi)發(fā)環(huán)境下,用C語(yǔ)言實(shí)現(xiàn)對(duì)6850的初始化設(shè)置和發(fā)送數(shù)據(jù)程序。
4.2 PC機(jī)通信程序設(shè)計(jì)
在VC++6.0環(huán)境下,利用PC機(jī)進(jìn)行串口通信的常用方法有兩種:(1)調(diào)用Windows API(Application Program Interface)函數(shù);(2)使用ActiveX的MSComm控件。第一種方法需聲明及調(diào)用許多API函數(shù),十分煩瑣。故本文采用第二種方法。
PC機(jī)通信的具體實(shí)現(xiàn)過(guò)程如下:
第一步,啟動(dòng)VC++6.0,新建一個(gè)基于對(duì)話框的應(yīng)用程序TxRx。
第二步,在對(duì)話框中插入串口控件,增加新的靜態(tài)文本、編輯框和按鈕控件,并為它們添加相應(yīng)的變量。其屬性如下:
第三步,在TxRxDlg.cpp文件中添加有關(guān)程序代碼。
首先,在文件頭第一條注釋行中加入全局變量說(shuō)明。
[!--empirenews.page--]
其次,需要初始化串口參數(shù),在OnInitiDialog()函數(shù)中TODO語(yǔ)句后加入以下代碼:
//先預(yù)讀緩沖區(qū)以清除殘留數(shù)據(jù)
接著,為發(fā)送按鈕IDC-TRSMITT添加消息處理函數(shù)OnTransmitt(),內(nèi)容如下:
下面舉例說(shuō)明如何在Transmitt()函數(shù)中實(shí)現(xiàn)發(fā)送一幀數(shù)據(jù)。
UpdateData(FALSE);//更新對(duì)話框
5 結(jié)束語(yǔ)
以上是DSP與PC機(jī)之間異步串行通信的軟硬件解決方案,目前此方案已應(yīng)用于短波通信智能終端數(shù)據(jù)傳輸系統(tǒng)中,運(yùn)行穩(wěn)定,通信性能良好,較好地解決了DSP和PC機(jī)的通信問(wèn)題。