與PC機間串行通信的實(shí)現

目前幾乎所有的數字信號處理器都提供了一個(gè)或多個(gè)串行接口,然而,多數DSP芯片提供的是同步串口。在實(shí)際的應用中,也需要DSP能夠與外設進(jìn)行異步串行通信,如與PC機進(jìn)行串行數據傳輸就要求DSP系統具UART串行接口。針對這種情況,本文研究并實(shí)現了一種簡(jiǎn)單、可靠的異步串口擴展方法。 1 擴展方案 綜合分析DSP應用系統中擴展異步串行接口的方案,其基本方法和優(yōu)缺點(diǎn)如下: (1)在DSP的并行總線(xiàn)上擴展UART芯片(如TI公司的TL16C552),用硬件實(shí)現異步數據傳輸。優(yōu)點(diǎn)是軟件實(shí)現簡(jiǎn)單,缺點(diǎn)是在總線(xiàn)上還需擴展其它設備,這樣做使目標系統復雜化,增大系統體積。 (2)利用DSP的McBSP和DMA,在不擴展其它硬件的情況下,用軟件實(shí)現異步數據傳輸格式。這種方法的優(yōu)點(diǎn)在于硬件簡(jiǎn)單,但軟件復雜,加大了CPU 的負擔,所以不適合通信數據量大的場(chǎng)合。 (3)利用DSP的McBSP同步串行接口,在擴展適當硬件的情況下,將同步數據變換為UART異步數據格式進(jìn)行傳輸。這樣,就充分利用了DSP的片上資源,使硬件系統盡量簡(jiǎn)單化。 綜合考慮硬件連接和軟件編程的方便性,本文采用第三種方案,應用美國MAXIM公司的MAX3111串行異步收發(fā)器,與DSP的McBSP口直接連接。硬件上無(wú)需任何其它外圍器件,同時(shí)由于異步數據的發(fā)送和接收由MAX3111以硬件方案實(shí)現,所以軟件編程需要考慮的也只是DSP與MAX3111之間的同步數據通信。這樣,用最簡(jiǎn)單的硬件連接和軟件編程就能實(shí)現同步到異步的串行數據格式轉換。 2 SPI接口協(xié)議及DSP的多通道緩沖串行接口 2.1 SPI接口協(xié)議 串行外圍設備接口(SPI)是MOTOROLA公司提出的一個(gè)同步串行外設接口,允許CPU與各種外圍接口器件以串行方式進(jìn)行通信、交換信息。它使用4條線(xiàn):串行時(shí)鐘線(xiàn)(SCK)、主機輸入/從機輸出線(xiàn)(MISO)、主機輸出/從機輸入線(xiàn)(MOSI)、低電平有效的使能信號線(xiàn)(CS)。這樣,僅需3~4根數據線(xiàn)和控制線(xiàn)即可擴展具有SPI接口的各種I/O器件。其典型的接口示意圖如圖1所示。 2.2 McBSP的功能與特點(diǎn) TMS320C54XX系列DSP芯片都具有2~3個(gè)高速、全雙工、多通道緩沖串行接口(McBSP),其方便的數據流控制可使其與大多數同步串行外圍設備接口。McBSP是在標準串行接口的基礎上對功能進(jìn)行擴展的,除具有標準串口的功能特點(diǎn)外,其靈活性體現在如下幾個(gè)方面: (1)雙緩沖區發(fā)送,三緩沖區接收,

允許連續數據流傳輸; (2)可與SPI、IOM-2、AC97等兼容設備直接接口; (3)可編程幀同步、數據時(shí)鐘極性,支持外部移位時(shí)鐘或內部頻率可編程移位時(shí)鐘; (4)擁有相互獨立的數據發(fā)送和接收幀同步脈沖和時(shí)鐘信號; (5)多通道發(fā)送和接收,最多可達128個(gè)通道,速度可為100Mbit/s。 2.3 McBSP的SPI方式 TMS320C54XX系列DSP芯片的McBSP串口工作于時(shí)鐘停止模式時(shí)與SPI協(xié)議兼容。當將McBSP配置為時(shí)鐘停止模式時(shí),發(fā)送器和接收器在內部得到同步,這時(shí)McBSP可作為SPI的主設備或從設備。發(fā)送時(shí)鐘信號(BCLKX)對應于SPI協(xié)議中的串行時(shí)鐘信號(SCK),發(fā)送幀同步信號對應于從設備使能信號(CS)。在這種方式下對接收時(shí)鐘信號(BCLKR)和接收幀同步信號(BFSR)將不進(jìn)行連接,因為它們在內部與BCLKX和BFSX 相連接。McBSP工作于SPI模式的主機時(shí),與其它SPI器件接口如圖2所示。 3 MAX3111通用異步收發(fā)器 3.1 MAX3111功能特點(diǎn) MAX3111通用異步收發(fā)器是MAXIM公司專(zhuān)門(mén)為小型微處理系統進(jìn)行最優(yōu)化設計的UART,它包括一個(gè)振蕩器和一個(gè)可編程波特率發(fā)生器;具有一個(gè)可屏蔽的中斷源;另具有一個(gè)8字節的接收FIFO(先入先出)緩沖器。它應用SPI/MICROWIRE接口技術(shù)直接與主控制器進(jìn)行通信,線(xiàn)路簡(jiǎn)單、體積小,通信速率可達230kbit/s。另外其內部除具有UART之外,還包括兩個(gè)RS-232電平轉換器,這樣無(wú)需再接入普通的MAX232進(jìn)行電平轉換,即可應用一個(gè)芯片實(shí)現微控器(具有SPI/MICROWIRE接口)與PC機或其它設備之間的異步數據傳輸。 3.2 對MAX3111的操作 MAX3111通過(guò)SPI接口與主設備進(jìn)行16位數據的全雙工同步通信,即主設備傳送16位數據給MAX3111的同時(shí),也可接收到MAX3111發(fā)送的 16位數據。主設備在MOSI線(xiàn)上向MAX3111發(fā)送的16位串行數據序列中包括傳輸格式控制字,如波特率設備、中斷屏蔽、奇偶校驗位等,同時(shí)還有發(fā)送的數據字。MAX3111在MISO線(xiàn)上向主設備發(fā)送的16位數據序列中除了接收到的數據外,還包括中斷標志等狀態(tài)位。所以通過(guò)16位的實(shí)時(shí)數據傳輸,主設備可獲得MAX3111工作狀態(tài)信息,同時(shí)對其具有完全控制權利。這樣,兩個(gè)設備的控制、狀態(tài)、數據信息的實(shí)時(shí)通信就保證了數據傳輸的可靠性和穩定性。

4 DSP與MAX3111的接口設計 DSP的McBSP串行接口工作于SPI模式時(shí)可直接與MAX3111進(jìn)行連接,從而實(shí)現與RS-232設備進(jìn)行異步數據傳輸。此時(shí)DSP作為SPI協(xié)議中的主設備,其接口電路如圖3所示。 DSP的發(fā)送時(shí)鐘信號(BCLKK)作為MAX3111的串行時(shí)鐘輸入,發(fā)送幀同步脈沖信號(BGSX)作為MAX3111的片選信號(CS)。BDX與 DIN連接作為發(fā)送數據線(xiàn),BDR與DOUT連接作為接收數據線(xiàn)。MAX3111的TX與T1IN連接,RX與R1OUT連接,以便利用其片內的轉換器實(shí)現UART到RS-232電平的轉換。MAX3111的中斷信號(IRQ)與DSP的外部中斷相連。 在SPI串行協(xié)議中,主設備提供時(shí)鐘信號并控制數據傳輸過(guò)程。由MAX3111接口電路時(shí)序圖(圖4)可知,必須設置DSP的McBSP于適當的方式才能保證與MAX3111的時(shí)序相配合。 MAX3111要求在數據傳輸過(guò)程中CS信號必須為低電平,在傳輸完畢后必須為高電平。此信號由McBSP的BFSX引腳提供,因此必須正確設置DSP的幀脈沖發(fā)生器,使之在每個(gè)數據包傳輸期間產(chǎn)生幀同步脈沖,即在數據包傳輸的第一位變?yōu)橛行顟B(tài),然后保持此狀態(tài)直到數據包傳輸結束。 McBSP的采樣率發(fā)生器產(chǎn)生適當頻率的時(shí)鐘信號,由BCLKX引腳輸出,保證主從設備間的同步數據傳輸。因此必須正確設置DSP的采樣率發(fā)生器時(shí)鐘源(CLKSM)和時(shí)鐘降頻因子(CLKGDV)。根據SPI傳輸協(xié)議,必須正確設置數據發(fā)送延遲時(shí)間(XDATDLY)。由圖4可知MAX3111要求在 SCLK變高之間的半個(gè)周期開(kāi)始傳輸數據。 所以必須為McBSP選擇合適的時(shí)鐘方案,即設置McBSP的時(shí)鐘停止模式。在本應用中采用McBSP的時(shí)鐘停止模式 2(CLKSTP=11b,CLKXP=0),這樣即可保證與MAX3111的時(shí)序相配合。 5 DSP的異步通信軟件的設計 考慮到應用系統軟件的可移植性和可讀性,數據傳輸軟件采用C語(yǔ)言進(jìn)行編寫(xiě),這樣,可以利用DSP開(kāi)發(fā)軟件CCS2.0所提供的DSP/BIOS中的芯片支持庫函數(CSL)。CSL提供C語(yǔ)言可調用的DSP外圍接口庫函數,其中包括DMA模塊、McBSP模塊、TIMER模塊等。應用這些庫函數可大大提高程序可讀性,縮短軟件開(kāi)發(fā)周期。在本文所提到的應用中,主要調用MCBSP模塊。數據傳輸軟件主要包括以下幾部分。 (1) McBSP串口初始化 如上所述,在本應用中應將TMS320C54XX DSP的McBSP串行口配置為SI模式,以DSP作為主設備。表1給出了應設置的寄存器或寄存器位的值,未涉及的寄存器保持其默認值即可。 表1 McBSP設置為SPI模式時(shí)相關(guān)寄存器值 位名稱(chēng)位 值描 述所在寄存器 CLKSTP 11b 使能McBSP的時(shí)鐘貪婪模式,并使其在SCLK變高之前半周期開(kāi)始傳輸數據 SPCR1 CLKXP 0 設置BCLKX信號的極性 PCR CLKXM 1 設置BCLKX引腳信號為輸出(SPI主設備) PCR RWDLEN1 000~101b 設置接收數據包的長(cháng)度(必須與XWDLEN1的值相等) RCR1 XWDLEN1 000~101b 設計發(fā)送數據包的長(cháng)度(必須與RWDLEN1的值相等) XCR1 CLKSM 1 采樣率發(fā)生器時(shí)鐘源CPU時(shí)鐘 SRGR2 CLKGDV 1~255 設置采樣率發(fā)生器的將頻因子 SRGR1 FSXM 1 設置BFSX引腳信號為輸出 PCR FSGM 0 在每個(gè)數據包傳輸期間,BFSX信號都有效 SRGR2 FSXP 1 設置BFSX信號為低電平有效 PCR XDATDLY 01b 提供正確BFSX信號啟動(dòng)時(shí)間 XCR2 RDATDLY 01b 提供正確的BFSX信號啟動(dòng)時(shí)間 RCR2 根據表1,調用CSL的McBSP配置庫函數即可完成McBSP的初始化。 McBSP_Handle hport0; /*聲明指向McBSP的句柄*/ McBSP_Config PortConfig={ /*定義寄存器設置結構*/ 0x1800, /*設置串口控制寄存器1的值*/ 0x0000, /*設置串口控制寄存器2的值*/ 0x0040, /*設置接收控制寄存器的值*/ … }; hport0=MCBSP_open(0,MCBSP_OPEN_RESET);/*打開(kāi)第一個(gè)McBSP串口*/ MCBSP_config (hport0,%26;amp;PortConfig);/*按結構設置McBSP的各寄存器*/ (2)MAX3111工作模式及波特率設置 在進(jìn)行通信之前,DSP必須首先根據命令序列格式向MAX3111寫(xiě)入配置命令字,之后才能進(jìn)行正確的數據傳輸,如8位數據位、一位停止位、無(wú)奇偶校驗位、波特率為115200、使能接收和發(fā)送中斷的異步數據傳輸。DSP對MAX3111進(jìn)行配置的簡(jiǎn)要過(guò)程為: … McBSP_start(hport0, /*McBSP開(kāi)始數據傳輸*/ McBSP_SRGR_START|MCBSP_SRGR_FRAMESYNC |McBSP_RCV_START|MCBSP_XMIT_START,0x200 ); while(!McBSP_xrdy(hport0));/*等待發(fā)送寄存器為空*/ McBSP_write16(hport0,0x6E0B); /*向MA3111寫(xiě)入配置命令字*/ … (3)中斷服務(wù)程序

在進(jìn)行中斷方式數據傳輸時(shí),需要注意的是:雖然DSP的McBSP有自身的發(fā)送和接收中斷,但由于McBSP與MAX3111之間的同步串行數據傳輸速率高于MAX3111將數據以一定波特率(最高230kbps)異步發(fā)送的速率,因此如果應用McBSP的發(fā)送中斷,將造成發(fā)送數據的丟失。同時(shí),在SPI 協(xié)議中,數據的傳輸是由SPI主設備發(fā)起的,所以在SPI方式下的McBSP并不能產(chǎn)生接收中斷。因此,本方案應用的關(guān)鍵之一是將MAX3111的IRQ 中斷信號連接至DSP的一外部中斷,以實(shí)現中斷方式下可靠、正確的數據傳輸。 針對現有的多數據數字信號處理器(DSP)芯片上不提供異步串行收發(fā)器(UART)接口,而只有同步串行接口的情況。本文通過(guò)簡(jiǎn)單的硬件電路將同步接口轉換為異步串行接口,充分利用了DSP的在片硬件資料,很好地解決了DSP的異步串口擴展問(wèn)題。此方法在工程實(shí)踐中已經(jīng)得到應用。實(shí)踐證明,在各種波特率下(最高可為230.4kbps),其查詢(xún)和中斷方式數據傳輸正確、可靠,各元件工作正常 ,并且在此硬件連接的基礎上,利用DSP的DMA功能進(jìn)行串行數據接收及發(fā)送收到了良好效果,進(jìn)一步提升了應用系統的性能。
評論