利用TL16C750實(shí)現DSP與PC機的高速串行通信
摘要:TL16C750是TI公司生產(chǎn)的異步通信芯片,在通信系統的實(shí)時(shí)性要求較高時(shí),可通過(guò)擴展異步通信芯片TL16C750來(lái)實(shí)現系統的高速串行通信,從而增強系統的通信接口控制能力。文中介紹了TL16C750的性能及與通信有關(guān)的寄存器,給出了TL16C750在TMS320C50與PC機通信系統中的硬件應用電路及TMS320C50初始化TL16C750的軟件編程。
本文引用地址:http://dyxdggzs.com/article/242344.htm關(guān)鍵詞:數字信號處理 通信接口 擴展 異步通信 TL16C750
通用數字信號處理器(DSP)以其很強的數據處理能力使其在高速數字信號處理方面得到廣泛的應用,但是它的通信接口控制能力比較弱。如TMS320C50,它有兩個(gè)串口,其中一個(gè)是TDM(Time Division Mulitipl),另外一個(gè)串口常被語(yǔ)音接口占用。當TMS320C50獨立構成一個(gè)處理單元時(shí),往往需要與外設交換一些數據,通信能力弱就會(huì )影響DSP的應用。在研制語(yǔ)音信號頻譜分析儀時(shí),筆者以TMS320C50作為信號處理單元進(jìn)行快速傅立葉變換(FFT),然后將轉換的結果通過(guò)串口傳送到PC機顯示或作進(jìn)一步處理。由于系統的實(shí)時(shí)性要求較高,如何實(shí)現TMS320C50與PC機高速和可靠的通信問(wèn)題就顯得更加重要。
1 異步通信芯片TL16C750
對TI(德州儀器)的TMS320系列的數字信號處理器來(lái)說(shuō),設計串口的方法一般有兩種:第一種是利用通用的I/O口線(xiàn)XF和BIO來(lái)構成串口,由軟件來(lái)設定波特率,在DSP不繁忙的情況下,往往采用這種方法;但是當這兩種I/O線(xiàn)被占用或通信的實(shí)時(shí)性要求較高時(shí),DSP應該通過(guò)擴展異步通信芯片來(lái)實(shí)現高速串行通信。
TL16C750是TI公司的異步通信芯片,其主要特點(diǎn)如下:
●管腳與TL16C550B/C兼容;
●可由軟件設定16字節或64字節的FIFO以減少CPU中斷;
●最高可達1M的波特率,其波特率發(fā)生器可編程;
●具有可編程的串行數據發(fā)送格式:
數據位長(cháng)度為5、6、7、8;
具有偶校驗、奇校驗或無(wú)校驗模式;
停止位長(cháng)度為1、1.5、2;
●采用44引腳PLCC(Plastic Leaded Chip Carrier)封裝。
1.1 TL16C750的引腳功能
TL16C750的引腳圖如圖1所示,各主要引腳的功能說(shuō)明如下:
A0~A2:片內寄存器的選擇信號;
D0~D7:雙向8位數據線(xiàn);
CS0、CS1、CS2:輸入片選信號,當CS0=CS1=1且CS2=0時(shí),TL16C750被選中;
ADS:是地址選通信號,該腳有效時(shí),可將CS0、CS1、CS2及A0、A1、A2鎖存在TL16C750內部;
XIN、XOUT:外部時(shí)鐘端,該兩腳可接晶振或外部時(shí)鐘信號;
RXRDY是接收準備好信號,當TL16C750已經(jīng)從串行輸入端接收了一個(gè)字符時(shí),該信號失效,在中斷方式時(shí)可作為中斷請求信號;
TXRDY是發(fā)送準備好信號,當TL16C750允許發(fā)送且發(fā)送緩沖區為空時(shí),該信號有效,在中斷方式時(shí)可作為中斷請求信號。
1.2 TL16C750的片內寄存器
TL16C750內部共有11個(gè)寄存器,這些寄存器分別用于實(shí)現通信參數的設置、對線(xiàn)路及MODEN的狀態(tài)訪(fǎng)問(wèn)、數據的發(fā)送和接收以及中斷管理等功能。編程人員可由A0、A1、A2三條片內寄存器選擇線(xiàn)和線(xiàn)路控制寄存器的除法數鎖存器訪(fǎng)問(wèn)位DLAB一起通過(guò)多路復用進(jìn)行訪(fǎng)問(wèn)或控制TL16C750的任何一個(gè)寄存器。表1給出了訪(fǎng)問(wèn)這些寄存器時(shí)DLAB和A0、A1、A2的狀態(tài)。因為接收/發(fā)送緩沖寄存器的DLAB、A0、A1、A2各位都相同,因此還必須通過(guò)讀/寫(xiě)信號來(lái)加以區分:雞使用IN指令時(shí),接收緩沖寄存器被訪(fǎng)問(wèn),雞使用OUT指令時(shí),發(fā)送緩沖寄存器被訪(fǎng)問(wèn)。
下面對與TMS320C50和PC機通信有關(guān)的寄存器做一簡(jiǎn)單介紹。
表1 TL16C750的片內寄存器
DLAB | A2 | A1 | A0 | 寄存器 |
0 | L | L | L | 接收/發(fā)送緩沖寄存器 |
0 | L | L | H | 中斷允許寄存器 |
X | L | H | L | 中斷識別寄存器 |
X | L | H | L | FIFO控制寄存器 |
X | L | H | H | 線(xiàn)路控制寄存器 |
X | H | L | L | MODEN控制寄存器 |
X | H | L | H | 線(xiàn)路狀態(tài)寄存器 |
X | H | H | L | MODEN狀態(tài)寄存器 |
X | H | H | H | 高速暫存寄存器 |
1 | L | L | L | 波特率因子寄存器低位 |
1 | L | L | H | 波特率因子寄存器高位 |
線(xiàn)路控制寄存器(LCR)用來(lái)存放串口傳送的二進(jìn)制位串行數據格式,LCR是一個(gè)8位寄存器,各位的定義如下:d0d1是字長(cháng)選擇位,若d0d1=00,傳送的字長(cháng)為5位;d0d1=01時(shí)字長(cháng)為6;d0d1=10時(shí)字長(cháng)為7;d0d1=11時(shí)字長(cháng)為8。d2位是停止位選擇,,d2=0時(shí)停止位為1位;d2=1時(shí)停止位為1.5位。d3位是校驗有效位,d3=0時(shí)校驗有效;d3=1時(shí)校驗無(wú)效。d4是校驗類(lèi)型位,d4=0時(shí)進(jìn)行奇校驗;d4=1時(shí)進(jìn)行偶校驗。d7位(DLAB)是鎖定特率發(fā)生器位,d7=1時(shí)訪(fǎng)問(wèn)波特率因子寄存器;d7=0時(shí)訪(fǎng)問(wèn)其它寄存器。
線(xiàn)路狀態(tài)寄存器(LSR)用于記錄串行數據發(fā)送和接收過(guò)程的狀態(tài)信息,CPU可在集體時(shí)候讀取這些信息。該寄存器的狀態(tài)位如表2所列。
表2 TL16C750寄存器的狀態(tài)位
LSR的各位 | 1 | 0 |
d0接收完成標成 | 接收完畢 | 讀后復位 |
d1接收重疊標志 | 發(fā)生重疊 | 讀后復位 |
d2奇偶校驗錯標志 | 奇偶校驗錯 | 讀后復位 |
d3格式錯標志 | 接收有錯 | 接收無(wú)誤 |
d4間斷標志 | 連續收到0 | 未間斷 |
d5發(fā)緩沖器空標志 | THR已空 | 寫(xiě)THR復位 |
d6發(fā)移位寄存器空標志 | 已空 | 未空 |
d7接收器FIFO出錯 | FIFO有錯 | FIFO無(wú)錯 |
兩個(gè)8位波特率因子寄存器可構成一個(gè)16位的波特率因子寄存器。TL16C750的內部波特率發(fā)生器可產(chǎn)生發(fā)送數據的時(shí)鐘信號。波特率因子可以通過(guò)下列算式求出:
波特率因子=基準時(shí)鐘頻率/(16×波特率)
這個(gè)波特率發(fā)生器可以利用比較通用的三種不同頻率產(chǎn)生標準的波特率。這三種不同的頻率為1.8432MHz、3.072MHz和8MHz??梢匀我膺x擇寫(xiě)入波特率因子的高字節和低字節的順序,但寫(xiě)入前必須置線(xiàn)路控制寄存器(LCR)的d7(DLAB)位為1。寫(xiě)入波特率因子后應將線(xiàn)路控制寄存器的d7恢復為0,以便訪(fǎng)問(wèn)其他寄存器。在外接晶振為1.8432MHz時(shí),幾種常用的波特率所對應的波特率因子寄存器的值如表3所列。
表3 波特率因子對應的波特率因子寄存器的值
波特率 | 波特率因子寄存器的值 |
3600 | 32 |
4800 | 24 |
9600 | 12 |
19200 | 6 |
38400 | 3 |
2 TMS320C50與PC機串行通信的硬件電路
TMS320C50與PC機通信的硬件電路如圖2所示。圖中,TL16C750的CS0和CS1都接高電平,而CS2接TMS320C50的IS。IS是TMS320C50的外部I/O空間選擇線(xiàn),它和PS(程序空間選擇)、DS(數據空間選擇)一起來(lái)確定CPU所訪(fǎng)問(wèn)的空間。當TMS320C50使用IN、OUT指令對TL16C750的內部寄存器進(jìn)行訪(fǎng)問(wèn)時(shí),IS信號有效,TL16C750被選中。
當XIN、XOUT端外接1.8432MHz晶振時(shí),TMS320C50以28400的波特率與PC機通信,所以波特率因子寄存器的低位的值應為02H,高位值為00H.
TL16C750的數據線(xiàn)D0~D7直接與TMS320C50的D0~D7數據線(xiàn)相連;TL16C750的片內寄存器選擇線(xiàn)接TMS320C50的A0~A2。
由于TL16C750的讀信號和寫(xiě)信號保持時(shí)間的典型值均為40ns,因此可以將TMS320C50的WR和RD直接連到TL16C750的WR1和RD1,為了避免與其它I/O端口發(fā)生沖突,在硬件電路設計中,將TMS320C50的RD信號線(xiàn)與兩條高位地址線(xiàn)A15、A14及IS經(jīng)一個(gè)與非門(mén)后再接到TL16C750的RD1端。實(shí)踐證明:這樣的設計在解決地址沖突的基礎上對寫(xiě)信號性能也有一定的改善作用。TMS320C50的讀信號也作了類(lèi)似的處理。具體的電路如圖3所示。
由于RS-232-C電路電平與CMOS電平不同,因此RS232驅動(dòng)器與CMOS電平連接時(shí)必須經(jīng)過(guò)電平轉換。本系統采用MAX3232完成這一功能,MAX3232具有一個(gè)專(zhuān)有的低壓降發(fā)送器輸出級,在其以雙電荷泵3.0~5.5V供電時(shí),可獲得真正的RS-232性能。該器件只需4個(gè)0.1μF小型外接電容,可在維持RS-232輸出電平的情況下確保運行于120kb/s數據率,因此十分適合高速串行數據通信的場(chǎng)合。TL16C750的串行輸入線(xiàn)(SIN)和串行輸出線(xiàn)(SOUT)分別接MAX3232的R1OUT和T1IN,經(jīng)電平轉換后由MAX3232的T1OUT和R1IN連接到PC機的串口。
TL16C750與TMS320C50雖然可以通過(guò)查詢(xún)的方式工作,但這樣會(huì )降低系統的性能。筆者在本系統中利用RXRDY和TXRDY來(lái)引入外部中斷,從而使系統工作在中斷方式,這樣就保證了TMS320C50和PC機的高速通信。由圖2可知,RXRDY將產(chǎn)生外部0中斷(INT0),而TXRDY將產(chǎn)生外部1中斷(INT1)。
3 軟件設計
該系統軟件設計包括PC機、TMS320C50及TL16C750的初始化和通信協(xié)議等。下面將結合本系統的硬件給出TMS320C50初始化TL16C750的程序。初始化的主要任務(wù)是設置操作所需要的參數,這些參數包括串行通信時(shí)數據串的數據位數、停止位數、奇偶校驗等。另外,還需要設置發(fā)送和接收的波特率及中斷方式。
在本系統中,TL16C750的線(xiàn)路控制寄存器(LCR)的地址為8003H(A15=1,A14=0)。波特率設置為38400,波特率因子寄存器的高位是00H,低位為03H。通信格式為8位數據位,2位停止位,奇校驗,線(xiàn)路控制寄存器的值(LCR)為07H。系統工作在中斷方式,應允許接收就緒中斷和發(fā)送緩沖區空中斷,相應地,中斷允許寄存器的值亦設置為03H.具體程序如下:
TEM-BUF EQU 80H
AORG 40H
INIT-TL16C750 ROVM
LACK 80H;DLAB=1,設置波特率
SACL TEM-BUF
OUT TEM-BUF,8003H
LACK 00H;波特率為38400,
SACL TEM-BUF;16位波特率因子寄存器的值為0003>
OUT TEM-BUT,8001H
LACK 03H
SACL TEM-BUF
OUT TEM-BUF,8000H
LACK 07H;通信格式設定,8位數據
SACL TEM-BUF;2位停止位,奇校驗
OUT TEM-BUF,8003H
LACK 03H;設置中斷允許寄存器
SACL TEM-BUF
OUT TEM-BUF,8001H
4 結束語(yǔ)
通過(guò)擴展串口完成TMS320C50與PC機通信時(shí),其硬件接口簡(jiǎn)單,數據傳送距離遠、使用經(jīng)濟。該電路及其軟件經(jīng)與微機的通信實(shí)踐證明,在波特率為38400時(shí)可實(shí)現與PC機的可靠通信。
評論