新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > TMS320F2812型數(shù)字信號(hào)處理器與PC的串行通信

TMS320F2812型數(shù)字信號(hào)處理器與PC的串行通信

作者: 時(shí)間:2006-01-22 來源:網(wǎng)絡(luò) 收藏

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

關(guān)鍵詞:;數(shù)據(jù)信號(hào)處理;收發(fā)器;

引言

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

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

圖1

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

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

本設(shè)計(jì)選用Maxim公司生產(chǎn)的MAX3160型收發(fā)器,它是一種可編程的多協(xié)議收發(fā)器,能支持RS-232/RS-485/RS-422等傳送方式。

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

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

2 串行通信軟件包實(shí)現(xiàn)

設(shè)計(jì)TMS320F2812串行通信軟件可采用查詢和中斷兩種方式。本設(shè)計(jì)中,發(fā)送數(shù)據(jù)采用的是查詢方式,接收數(shù)據(jù)采用的是中斷方式。

2.1 SCI的初臺(tái)化

TMS320F2812的2個(gè)SCI總共包括26個(gè)寄存器,其中控制寄存器有SCICCR、SCIPRI、SCICTL1和SCICTL2;設(shè)備波特率的寄存器有SCIHBAUD和SCILBAUD;狀態(tài)寄存器有SCIRXST;緩沖寄存器有SCIRXEMU、SCIRXBUF和SCITXBUF;另外還有TMS320F2812的SCI獨(dú)有的FIFO寄存器SCIFFTX、SCIFFRX和SCIFFCT。在程序的開始應(yīng)先對(duì)其中一些寄存器進(jìn)行初始化。

SCI的初始化程序如下:

#include "DSP28_Device.h"

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

void InitSci(void)

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

EALLOW;

GpioMuxRegs.GPFMUX.all=0x0030;

EDIS;

SciaRegs.SCICCR.all=0x07;//將傳輸數(shù)據(jù)長(zhǎng)度設(shè)為8位

SciaRegs.SCICTL1.all=0x03;//啟動(dòng)發(fā)送和接收

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

SicaRegs.SCIHBAUD=0x00;

SicaRegs.SCILBAUD=0xF3;//設(shè)置傳輸?shù)牟ㄌ芈蕿?/P>

SicaRegs.SCICTL1.all=0x23;//寄存器已設(shè)置好,將SW RESET置1,啟動(dòng)發(fā)送和接收

PieCtrl.PIEIER9.bit.INTx1=1;/啟動(dòng)中斷

PieCtr1.PIEIER9.bit.INTX2=1;

}

2.2 數(shù)據(jù)的發(fā)送與接收

數(shù)據(jù)發(fā)送采用查詢方式,其流程圖如圖3所示。數(shù)據(jù)的接收采用中斷方式,其流程如圖4所示。SCIATX_Ready是寄存器SCICTL2的發(fā)送就緒位,Send_Flag是TMS320F2812設(shè)置的一個(gè)發(fā)送標(biāo)志。SCIARX_Ready是寄存器SCIRXST的準(zhǔn)備就緒位。SCIA的接收中斷為INT9.1,發(fā)送中斷為INT9.2;而SCIB的接收中斷為INT9.3,發(fā)送中斷為INT9.4。本設(shè)計(jì)方案只使用SCIA的接收中斷INT9.1。在中斷服務(wù)子程序中,通過檢查外設(shè)中斷向量寄存器的值可轉(zhuǎn)入相應(yīng)的接收中斷處理程序。

3 結(jié)論

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




評(píng)論


相關(guān)推薦

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

關(guān)閉