《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計(jì)應(yīng)用 > DSP芯片基于SCl6C750B的RS232接口設(shè)計(jì)
DSP芯片基于SCl6C750B的RS232接口設(shè)計(jì)
單片機(jī)及嵌入式系統(tǒng)應(yīng)用
薛志方 史琳
摘要: DSP芯片基于SCl6C750B的RS232接口設(shè)計(jì),TMS320C32是32位浮點(diǎn)DSP芯片,,在數(shù)字信號處理和自動(dòng)化領(lǐng)域得到了廣泛應(yīng)用,;而RS232(EIA232)是自動(dòng)化控制領(lǐng)域中一種基本的串行異步通信規(guī)約,。在開發(fā)基于TMS320C32的熱力系統(tǒng)測控裝置時(shí),,采用SCl6C750BUART芯片擴(kuò)展出實(shí)
關(guān)鍵詞: TMS320C32 SC16C750B RS232 UART DSP
Abstract:
Key words :

TMS320C32是32位浮點(diǎn)DSP芯片,,在數(shù)字信號處理和自動(dòng)化領(lǐng)域得到了廣泛應(yīng)用,;而RS232(EIA232)是自動(dòng)化控制領(lǐng)域中一種基本的串行異步通信規(guī)約,。在開發(fā)基于TMS320C32的熱力系統(tǒng)測控裝置時(shí),,采用SCl6C750BUART芯片擴(kuò)展出實(shí)現(xiàn)RS232規(guī)約的通信串口。文章介紹此串口收發(fā)中斷程序的設(shè)計(jì)和基于C語言的串口通信中斷例程的有關(guān)問題,。

關(guān)鍵詞:TMS320C32  SC16C750B RS232 UART DSP


引 言
    美國TI(Texas Instruments)公司的系列DSP芯片采用哈佛結(jié)構(gòu),、流水線操作、專用硬件乘法器,、快速DSP指令,,使其在數(shù)字信號處理、通信和工業(yè)自動(dòng)化等領(lǐng)域得到廣泛應(yīng)用[1],。TMS320C32是32位浮點(diǎn)處理器,。它除了上述特點(diǎn)外,還具有增強(qiáng)型存儲器接口,、靈活的啟動(dòng)裝載(boot loader),、可重定位的中斷矢量表、靈活的中斷方式和其他外設(shè)[2],;其通信功能只包括片上集成的一個(gè)串口,,但在設(shè)計(jì)中此串口一般被串行A/D或D/A芯片占用,或者被用于與另一片DSP芯片在“握手模式”(handshakemode)下直接連接[3],。

    雖然TMS320C32串口有多種工作方式[3,,4],但通過串口相應(yīng)的寄存器并不能直接配置出符合RS232標(biāo)準(zhǔn)的通信串口,。而RS通信串口是自動(dòng)化控制設(shè)備的一種基本通信方式,,如PC機(jī)或其他各種基于微處理器的控制裝置。RS232標(biāo)準(zhǔn)在1991年被標(biāo)準(zhǔn)化組織EIA(ElectronicIndustries Association)重命名為EIA232標(biāo)準(zhǔn)[5],,是一種異步串行通信標(biāo)準(zhǔn),,包括機(jī)械連接、信號功能,、電壓特性和通信協(xié)議等幾個(gè)方面的規(guī)定,。

    采用1片SC16C750B UART芯片[6]來完成TMS320C32的RS232串口的設(shè)計(jì)。此UART最高的串行數(shù)據(jù)速率可達(dá)3 Mbps,,引腳與TLl6C750兼容,,并且具有64字節(jié)接收和發(fā)送FIFOs以及自動(dòng)硬件流量功能,。這些特征使串口通信更加高效,、可靠。


1 TMS320C32的RS232串口硬件設(shè)計(jì)
    在基于微處理器開發(fā)的自動(dòng)控制裝置設(shè)計(jì)中,,一般并不需要串行通信的長距離傳輸,,故普遍采用“零-Modem”方式(Null-Modem or Zero-Modem)實(shí)現(xiàn)一對異步串口連接。圖1為一種“零-Modem”連接方式(具體信號的意義可見RS232標(biāo)準(zhǔn)),。


    由于RS232標(biāo)準(zhǔn)的異步通信規(guī)約數(shù)據(jù)幀都帶起始位和停止位,,并且SC16C750B UART芯片具有自動(dòng)硬件流量控制功能,,因此可以進(jìn)一步忽略與Modem相關(guān)的控制信號(DTR、DSR,、CD,、RTS、CTS),,簡化連接,。

1.1 SCl6C750B UART芯片

    SCl6C750B為異步串行通信芯片[6],帶標(biāo)準(zhǔn)Modem接口,。它具有以下主要特點(diǎn):

    ①標(biāo)準(zhǔn)異步錯(cuò)誤位和幀格式位(起始位,、停止位、奇偶校驗(yàn)位),,并且?guī)袷娇删幊蹋?br />     ②軟件可選擇波特率,;
    ③發(fā)送和接收各64字節(jié)FIFOs;
    ④發(fā)送,、接收,、線路狀態(tài)等中斷可獨(dú)立控制,并且中斷優(yōu)先級可編程,;
    ⑤獨(dú)立的接收時(shí)鐘,;
    ⑥在5V工作電壓下,發(fā)送或接收速率可達(dá)5Mbps,;

    ⑦自動(dòng)硬件流量控制,;
    ⑧4種可選擇接收中斷級別;
    ⑨標(biāo)準(zhǔn)Modem接口,;
    ⑩引腳與STl6C>t50/550,、TLl6C450/550、PC16C450/550,,軟件與SCl6C750及TL16C750兼容,。其他一些特點(diǎn)不再贅述。
 
   SCl6C750B主要引腳的功能如表1所列,,更具體的資料可見文獻(xiàn)[6],。


1.2硬件原理
    硬件設(shè)計(jì)的總體思路:

    ①UART的地址被分配到TMS320CC32的IOSTRB外部存儲器空間,片選信號對應(yīng)的地址即為UART的基地址,。
    ②RXRDY,、TXRDY分別作為接收、發(fā)送中斷信號,,分別接C32的中斷外部引腳INT0,、INT1,并且C32的中斷觸發(fā)方式設(shè)為低電平觸發(fā)。
    ③UART的Tx,、RX引腳均為CMOS電平,,而RS232采用的是“負(fù)邏輯電平”。本設(shè)計(jì)采用1片MAX3232[7]完成它們之間的電平轉(zhuǎn)換和驅(qū)動(dòng),,其數(shù)據(jù)傳輸速率最高達(dá)1 Mbps,,。
    ④使接收部分和發(fā)送部分的波特率相同,,此時(shí)RCLK接BAUDOUT引腳,。
    ⑤外部參考時(shí)鐘頻率為1.8432 MHz。

1.3 UART擴(kuò)展RS232串口原理

    依據(jù)上面的整體思路設(shè)計(jì)出硬件電路,,如圖2所示,。


    圖2中的端口信號,如數(shù)據(jù)和地址總線,、復(fù)位信號,、中斷信號,完成與TMS320C32之間的連接,。本設(shè)計(jì)中片選信號對應(yīng)TMS320C32的IOSTRB空間中的0x810100h,,即SCl6C750B的內(nèi)部寄存器的基地址。


2 TMS320C32的RS232串口軟件功能設(shè)計(jì)
    串口工作模式控制和數(shù)據(jù)收發(fā)都是通過TMS320C32對UART內(nèi)部相關(guān)寄存器的讀寫操作來完成的,。因此,,首先分析一下SCl6C750B片內(nèi)寄存器的功能,然后確定在本設(shè)計(jì)中SCl6C750B的工作模式,,并且給出該串口的初始化程序,、中斷發(fā)送程序和中斷接收程序。程序以C語言寫成,。

2.1 SCl6C750B片內(nèi)寄存器

    表2給出SCl6C7 150B內(nèi)部寄存器的功能描述,。寄存器各位意義可參見該芯片的數(shù)據(jù)手冊。


2.2程序設(shè)計(jì)
    首先初始化編程,,以確定TMS320C32與SCl6c750B之間的操作方式,、數(shù)據(jù)傳輸幀格式、SCl6C750B自身的工作模式,、數(shù)據(jù)傳輸波特率的設(shè)置等工作,。設(shè)定:

    ①SCl6C7 150B工作在DMA模式0(DMA mode O)。在此模式下,,每當(dāng)發(fā)送寄存器THR為空,,TXRDY信號會降為邏輯低電平。只要接收寄存器RHR被裝載了一個(gè)字符,,RXRDY會立刻降為邏輯低電平,。

    ②TMS320C32與SCl6C750B UART之間的操作方式采用中斷操作方式,中斷方式相對于查詢方式可以提高TMS3320C32的工作效率,。TMS320C32的INT0中斷引腳接UART的RXRDY信號,,INT1接TXRDY信號。這樣,,由INT0,、INT1對應(yīng)的中斷服務(wù)例程完成數(shù)據(jù)的接收和發(fā)送。

    ③數(shù)據(jù)傳輸幀格式:數(shù)據(jù)字長8位,、2位停止位,、偶校驗(yàn)。

    ④設(shè)置波特率,。

   


    在RS232電平邏輯中,,串行數(shù)據(jù)速率(serial data rate)就等于波特率(baud rate)。如果外部時(shí)鐘頻率(XTAL1clock frequency)為1.8432 MHz,、波特率19 200 bps時(shí),,對應(yīng)的波特率除數(shù)(divisor)為6。

    用C語言開發(fā)[8]TMS320C32的串口通信程序,。初始化程序如下:
#include
#include
//聲明SCl6C750B寄存器的結(jié)構(gòu)
typedef struet{
unsigned RHR,//接收保持寄存器
unsigned THR#//發(fā)送保持寄存器
unsigned IER,;//中斷使能寄存器
unsigned FCR;//FIFO控制寄存器
unsigned ISR,; //中斷服務(wù)狀態(tài)寄存器
unsigned LCR;//線路控制寄存器
unsigned MCR;//Modem控制寄存器
unsigned LSR,; //線路狀態(tài)寄存器
unsigned MSR;//Modem狀態(tài)寄存器
unsigned SPR,; //便箋寄存器
unsigned DLL,; //波特率除數(shù)低字節(jié)鎖存器
unsigned DLM;//波特率除數(shù)高字節(jié)鎖存器
}SerialPort,;
//SCl6C750B的寄存器基地址為0x810100h
SerialPort SD={
0x810100h,,0x810100h,0x810101h,
0x810102h,,0x810102h,,0x810103h,
0x810104h.0x810105h,, Ox810106h
0x810107h 0x810100h,,0x810101h
);
void main(void){
,;
//波特率設(shè)置
outport(sp.LCR,,0x80); //LCR[7]=0
outport(sp.DLL,,0x06),; //波特率19 200 bps
outport(sp.DLM,,0x00);
outport(sp.LCR,,0xlF),; //數(shù)據(jù)幀格式
outport(sD.FCR,0xAl)} //DMA mode 0
outport(sp.IER,,0x07),; //中斷使能

}

//INTO中斷服務(wù)例程——數(shù)據(jù)接收

unsigned char recvdata;

void c_int-1(void){

  recvdata=inport(sp.RHR),;

  ,;

}

//INT中斷服務(wù)例程——數(shù)據(jù)發(fā)送

void c_int02(void){

  outport(sp.THR,transdata);

  ;

}


3 結(jié)  論

    TMS320C32是一種高性價(jià)比的32位浮點(diǎn)DSP新片,但其通信功能相對較弱,。采用SC16C750B UART芯片擴(kuò)展TMS320C32的RS232串行口,,用于實(shí)際溫度和壓力測控裝置中,經(jīng)驗(yàn)證,,數(shù)據(jù)通信可靠,。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。