新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP芯片基于SC16C750B的RS232接口設(shè)計(jì)

        DSP芯片基于SC16C750B的RS232接口設(shè)計(jì)

        ——
        作者:清華大學(xué) 薛志方 史琳 時(shí)間:2007-01-26 來源:《單片機(jī)與嵌入式系統(tǒng)應(yīng)用》 收藏


        引言

        本文引用地址:http://www.104case.com/article/20672.htm

        美國(guó)ti(texas instruments)公司的系列dsp芯片采用哈佛結(jié)構(gòu)、流水線操作、專用硬件乘法器、快速dsp指令,使其在數(shù)字信號(hào)處理,通信和工業(yè)自動(dòng)化等領(lǐng)域得到廣泛應(yīng)用[1]。tms320c32是32位浮點(diǎn)處理器。它除了上述特點(diǎn)外,還具有增強(qiáng)型存儲(chǔ)器接口、靈活的啟動(dòng)裝載(boot loader)、可重定位的中斷矢量表、靈活的中斷方式和其他外設(shè)[2];其通信功能只包括片上集成的一個(gè)串口,但在設(shè)計(jì)中此串口一般被串行a/d或d/a芯片占用,或者被用于與另一片dsp芯片在“握手模式”(handshake mode)下直接連接。[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(electronic industries association)重命名為eia232標(biāo)準(zhǔn)[5],是一種異步串行通信標(biāo)準(zhǔn),包括機(jī)械連接、信號(hào)功能、電壓特性和通信協(xié)議等幾個(gè)方面的規(guī)定。

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

        1 tms320c32的rs232串口硬件設(shè)計(jì)

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

        由于rs232標(biāo)準(zhǔn)的異步通信規(guī)約數(shù)據(jù)幀都帶起始位和停止位,并且sc16c750b uart芯片具有自動(dòng)硬件流量控制功能,因此可以進(jìn)一步忽略與modem相關(guān)的控制信號(hào)(dtr、dsr、cd、rts、cts),簡(jiǎn)化連接。

        1.1 sc16c7550b uart芯片

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

        (1)標(biāo)準(zhǔn)異步錯(cuò)誤位和幀格式位(起始位、停止位、奇偶校驗(yàn)位),并且?guī)袷娇删幊蹋?

        (2)軟件可選擇波特率;

        (3)發(fā)送和接收各64字節(jié)fifos;

        (4)發(fā)送、接收、線路狀態(tài)等中斷可獨(dú)立控制,并且中斷優(yōu)先級(jí)可額編程;

        (5)獨(dú)立的接收時(shí)鐘。

        (6)在5v工作電壓下,發(fā)送或接收速率可達(dá)5mbps;

        (7)自動(dòng)硬件流量控制

        (8)4種可選擇接收中斷級(jí)別;

        (9)標(biāo)準(zhǔn)modem接口;

        (10)引腳與st16c450/550、tl16c450/550、pc16c450/550,軟件與sc16c750及tl16c750兼容。其他一些特點(diǎn)不再贅述。

        sc16c750b主要引腳的功能如表1所列,更具體的資料可見文獻(xiàn) [6] 。

        1.2 硬件原理

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

        (1)uart的地址被分配到tms320c32的iostrb外部存儲(chǔ)器空間,片選信號(hào)對(duì)應(yīng)的地址即為uart的基地址。

        (2)rxrdy、txrdy分別作為接收、發(fā)送中斷信號(hào),分別接c32的中斷外部引腳int0、int1、并且c32的中斷觸發(fā)方式設(shè)為低電平觸發(fā)。

        (3)uart的tx、rx引腳均為cmos電平,而rs232采用的是“負(fù)邏輯電平”。本設(shè)計(jì)采用1片max3232[7]完成它們之間的電平轉(zhuǎn)換和驅(qū)動(dòng),其數(shù)據(jù)傳輸速率最高達(dá)1mbps。

        (4)使接收部分和發(fā)送部分的波特率相同,此時(shí)rclk接baudout引腳。

        (5)外部參考時(shí)鐘頻率為1.8432mhz。

        1.3 uart擴(kuò)展rs232串口原理

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

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

        2 tms320c32的rs232串口軟件功能設(shè)計(jì)

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

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

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

        2.2 程序設(shè)計(jì)

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

        (1)sc16c750b工作dma模式0(dma mode 0)。在此模式下,每當(dāng)發(fā)送寄存器thr為空,txrdy信號(hào)會(huì)降為邏輯低電平。只要接收寄存器rhr被裝載了一個(gè)字符,rxrdy會(huì)立刻降為邏輯低電平。

        (2)tms320c32與sc16c750b uart之間的操作方式采用中斷操作方式,中斷方式相對(duì)于查詢方式可以提高tms3320c32的工作效率。tms320c32的int0中斷引腳接uart的rxrdy信號(hào),int1接txrdy信號(hào)。這樣,由int0、int1對(duì)應(yīng)的中斷服務(wù)例程完成數(shù)據(jù)的接收和發(fā)送。

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

        (4)設(shè)置波特率。

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

        用c語言開發(fā)[8]tms320c32的串口通信程序。初始化程序如下:

        #include<stdlib.h>

        #include<ioports.h>

        //聲明sc16c750b寄存器的結(jié)構(gòu)

        typedef struct{

        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;

        //sc16c750b的寄存器基地址為0x810100h

        serialport sp={

        0x810100h,0x810100h,0x810101h,

        0x810102h,0x810102h,0x810103h,

        0x810104h,0x810105h,0x810106h,

        0x810107h,0x810100h,0x810101h,

        };

        void main(void){ …

        //波特率設(shè)置

        outport(sp.lcr,0x80); //lcr[7]=0

        outport(sp.dll,0x06); //波特率19 200bps

        outport(sp.dlm,0x00);

        outport(sp.lcr,0x1f); //數(shù)據(jù)幀格式

        outport(sp.fcr,0xa1); //dma mode 0 outport(sp.ier,0x07); //中斷使能


        }

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

        unsigned char recvdata;

        void c_int01(void){

        recvdata=inport(sp,rhr);


        }

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

        void c_int02(void){

        outport(sp.thr,transdata);


        }

        3 結(jié)論

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



        關(guān)鍵詞:

        評(píng)論


        相關(guān)推薦

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

        關(guān)閉
        主站蜘蛛池模板: 宝山区| 谢通门县| 会理县| 梅河口市| 怀集县| 普兰店市| 崇明县| 原阳县| 托克逊县| 修水县| 清涧县| 清苑县| 临湘市| 云梦县| 开远市| 望谟县| 沅江市| 栖霞市| 龙游县| 江源县| 盘山县| 库车县| 哈巴河县| 普兰店市| 延庆县| 资源县| 抚远县| 苏州市| 民乐县| 石棉县| 呼伦贝尔市| 绥棱县| 牟定县| 安达市| 商南县| 航空| 土默特左旗| 隆尧县| 成安县| 泰顺县| 余姚市|