新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > TMS320F2812型數字信號處理器與PC的串行通信

        TMS320F2812型數字信號處理器與PC的串行通信

        作者: 時間:2006-01-22 來源:網絡 收藏

        摘要:討論之間的方案,給出TI公司的型DSP和Maxim公司的MAX3160型收發器的硬件接口電路,以及在此基礎上使用中斷和查詢方法實現的軟件流程,同時給出DSP SCI的初始化、發送和接收數據程序代碼。

        關鍵詞:;數據信號處理;收發器;

        引言

        目前,微控制器系統在國民經濟和人民生活中得到了廣泛的運用,而數據傳輸業仍是一個很重要的領域。對于這些與計算機相距不遠的人-機交換設備和串行存儲的外部設備(如終端、打印機、邏輯分析儀、磁盤等)來說,采用串行通訊方式交換數據已非常普通[1]。

        在以往DSP與之間的串行通信中,由于運行速度的差異和上下位機之間編程軟件的限制,系統的實時性一般較差。本文針對這些問題,從硬件和軟件兩個方面探討了與PC的通信方案,介紹該方案的串行通信接口電路和采用中斷與查詢方法實現數據通信的軟件流程。

        圖1

        1 串行通信的硬件接口電路

        TMS320F2812的SCI和以往的DSP的SCI相比具有兩個特點:一是傳送、接收都具有獨立的FIFO;二是波特率可以自動檢測。自動波特率檢測邏輯主要解決通信過程中終端波特率的確定問題。而其16字的FIFO可大大減少通信中斷次數,提高通信速率。TMS320F2812的SCI有4個外部引腳:SCIRX、DA、SCITXDA、SCIRXDB、SCITXDB,不作通訊時,這些引腳可以用作通用I/O。SCI有一個16位的波特率選擇寄存器,通過改變寄存器的值可以得到多于65000種的波特率。

        本設計選用Maxim公司生產的MAX3160型收發器,它是一種可編程的多協議收發器,能支持RS-232/RS-485/RS-422等傳送方式。

        MAX3160的引腳RS-485/RS-232用于選擇工作在RS-422/RS-485還是RS-232接口標準;引腳HDPLX用于選擇是RS-422還是RS-485;引腳FAST用于控制信號轉換率;引腳DE485用于控制RS-422/RS-485方式時發送器是否使能,以及RS-485和RS-232方式時的RTS信號復用。圖1中的電路使用的MAX3160的RS-232方式,所以要將11腳RS-485/RS-232與此12腳HDPLC置為低電平。

        本設計將這些控制引腳集成在一個寄存器UART_SCI中,并將這個寄存器映射在TMS320F 2812電路Zone1上的0X4010存儲單元中,該寄存器各位的定義如圖2所示。TMS320F2812可通過該寄存器對MAX3160進行操作。

        2 串行通信軟件包實現

        設計TMS320F2812串行通信軟件可采用查詢和中斷兩種方式。本設計中,發送數據采用的是查詢方式,接收數據采用的是中斷方式。

        2.1 SCI的初臺化

        TMS320F2812的2個SCI總共包括26個寄存器,其中控制寄存器有SCICCR、SCIPRI、SCICTL1和SCICTL2;設備波特率的寄存器有SCIHBAUD和SCILBAUD;狀態寄存器有SCIRXST;緩沖寄存器有SCIRXEMU、SCIRXBUF和SCITXBUF;另外還有TMS320F2812的SCI獨有的FIFO寄存器SCIFFTX、SCIFFRX和SCIFFCT。在程序的開始應先對其中一些寄存器進行初始化。

        SCI的初始化程序如下:

        #include "DSP28_Device.h"

        unsigned int * UART_SCI=(unsigned int *)0x4010;

        void InitSci(void)

        { *UART_SCI=0x44; //設定MAX3160為RS-232的工作方式

        EALLOW;

        GpioMuxRegs.GPFMUX.all=0x0030;

        EDIS;

        SciaRegs.SCICCR.all=0x07;//將傳輸數據長度設為8位

        SciaRegs.SCICTL1.all=0x03;//啟動發送和接收

        SciaRegs.SCICTL2.all=0x03;//允許RXRDY/BRKDT和TXRDY中斷

        SicaRegs.SCIHBAUD=0x00;

        SicaRegs.SCILBAUD=0xF3;//設置傳輸的波特率為

        SicaRegs.SCICTL1.all=0x23;//寄存器已設置好,將SW RESET置1,啟動發送和接收

        PieCtrl.PIEIER9.bit.INTx1=1;/啟動中斷

        PieCtr1.PIEIER9.bit.INTX2=1;

        }

        2.2 數據的發送與接收

        數據發送采用查詢方式,其流程圖如圖3所示。數據的接收采用中斷方式,其流程如圖4所示。SCIATX_Ready是寄存器SCICTL2的發送就緒位,Send_Flag是TMS320F2812設置的一個發送標志。SCIARX_Ready是寄存器SCIRXST的準備就緒位。SCIA的接收中斷為INT9.1,發送中斷為INT9.2;而SCIB的接收中斷為INT9.3,發送中斷為INT9.4。本設計方案只使用SCIA的接收中斷INT9.1。在中斷服務子程序中,通過檢查外設中斷向量寄存器的值可轉入相應的接收中斷處理程序。

        3 結論

        本通信方案已應用于某上位機控制數據采集卡的運行中,結果表明是可行的。該方案雖然具有硬件電路簡單、實施容易等特點,但由于受RS-232/485/422串行通訊的限制,因而只能用于短距離的數據發送與接收。此外,TI公司的TMS320F/C2XX系列DSP具有相同的串行通信模塊,因此本設計方案也適用于其他的TMS320F/C2xx系列DSP器件。




        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 盘山县| 盐池县| 满城县| 阿拉善左旗| 徐州市| 宜宾县| 武功县| 根河市| 阳泉市| 友谊县| 赣榆县| 修水县| 大安市| 通化县| 常山县| 淄博市| 都昌县| 丹阳市| 台北县| 瑞丽市| 东莞市| 东安县| 榆树市| 和顺县| 防城港市| 武宁县| 隆子县| 南昌市| 宁陕县| 肇源县| 武鸣县| 通州区| 临泉县| 三穗县| 黎城县| 句容市| 河南省| 邛崃市| 墨竹工卡县| 吴忠市| 泊头市|