利用異步通信芯片16C552實(shí)現(xiàn)PC機(jī)與DSP的串行通訊
當(dāng)實(shí)現(xiàn)PC機(jī)與DSP的串行通訊時(shí),通常可直接利用DSP的串行通訊接口(SCI)模塊和SCI多處理器通訊協(xié)議(即空閑線路模式和地址位模式)來(lái)在同一串行線路中實(shí)現(xiàn)多個(gè)處理器之間的通訊,也可以采用SCI異步通訊模式實(shí)現(xiàn)串行通訊。這兩種方式雖然都能方便地實(shí)現(xiàn)串行通訊,但它們都需占用系統(tǒng)較多的硬件和軟件資源,因而不適用于對(duì)實(shí)時(shí)性要求比較高且系統(tǒng)資源緊張的應(yīng)用場(chǎng)合。筆者在研制電力有源濾波實(shí)驗(yàn)系統(tǒng)中,由于采用了異步通訊芯片16C552,從而成功解決了這個(gè)問(wèn)題。本文將從電路結(jié)構(gòu)和軟件編程兩個(gè)方面介紹該方案的實(shí)現(xiàn)方法。
1 16C552簡(jiǎn)介
1.1 功能特點(diǎn)及結(jié)構(gòu)框圖
16C552是TI(TL16C552)和VLSI(VL16C552)等公司生產(chǎn)的異步通信芯片,具有兩個(gè)增強(qiáng)的通用異步通訊單元通道和一個(gè)增強(qiáng)的雙向打印機(jī)端口;支持TL16C450和FIFO兩種模式,其16字節(jié)的FIFO可減少CPU中斷;每個(gè)通道都具有獨(dú)立的發(fā)送、接收、線路狀態(tài)和設(shè)置中斷功能,同時(shí)具有獨(dú)立的MO-DEM控制信號(hào)、可編程的串行數(shù)據(jù)發(fā)送格式(包括數(shù)據(jù)位長(zhǎng)度、校驗(yàn)方式、停止位長(zhǎng)度)和可編程波特率發(fā)生器;另外,每個(gè)通道的數(shù)據(jù)和控制總線還具有三態(tài)TTL驅(qū)動(dòng)功能。
TL16C552AM是TI公司的68腳PLCC(Plastic Leaded Chip Carrier)封裝芯片,其管腳及功能框圖如圖1所示。從圖中可以看出,它的串行口主要完成兩個(gè)功能,一是把外設(shè)或調(diào)制解調(diào)器接收來(lái)的串行數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù);二是把CPU的并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù)以便發(fā)送。在正常操作過(guò)程中,CPU可以隨時(shí)讀取16C552的狀態(tài)信息,以報(bào)告16C552傳輸操作的類型和狀態(tài),包括各種錯(cuò)誤狀態(tài),如奇偶校驗(yàn)、溢出、幀錯(cuò)誤和FIFO錯(cuò)誤等。此外,16C552還具有完整的MODEM控制功能,并有CTS、RTS、DSR、DTR、RI、DCD等信號(hào)端。
16C552具有一套完善的中斷系統(tǒng),可以自動(dòng)設(shè)定優(yōu)先級(jí)。它的串行口和并行口都可以獨(dú)立地工作于中斷和查詢兩種工作方式。
1.2 16C552的內(nèi)部寄存器
16C552內(nèi)部有12個(gè)單字節(jié)寄存器,這些寄存器占用了8?jìng)€(gè)I/O口地址,其地址由A0~A2決定。其中有些寄存器共用一個(gè)I/O口地址,共用的I/O口可以通過(guò)讀/寫(xiě)信號(hào)和線路控制寄存器(LCR)的D7位(DLAB)來(lái)進(jìn)行區(qū)分,具體描述見(jiàn)表1所列,需要說(shuō)明的是:只有當(dāng)16C552的CS0或CS1為低電平時(shí),串行通道才能被訪問(wèn)。
表1 I6C552的內(nèi)部寄存器
DLAB | A2 | A1 | A0 | 符 號(hào) | 寄 存 器 |
L | L | L | L | RBR | 接收緩沖寄存器 |
L | L | L | H | THR | 發(fā)送保持寄存器 |
L | L | L | L | IER | 中斷允許寄存器 |
X | L | H | H | IIR | 中斷識(shí)別寄存器 |
X | L | H | L | FCR | FIFO控制寄存器 |
X | L | H | H | LCR | 線路控制寄存器 |
X | H | L | L | MCR | MODE控制寄存器 |
X | H | L | H | LSR | 線路狀態(tài)寄存器 |
X | H | H | L | MSR | MODEM狀態(tài)寄存器 |
X | H | H | H | SCR | 高速緩存器寄存器 |
H | L | L | L | DLL | 除數(shù)鎖存器低位 |
H | L | L | H | DLM | 除數(shù)鎖存器高位 |
關(guān)于各寄存器內(nèi)容的具體規(guī)定,限于篇幅,這里不作詳述,有興趣者可參看TI公司的相關(guān)產(chǎn)品資料介紹,但在串行通訊應(yīng)用中,要重點(diǎn)搞清楚FCR、LCR、IER等幾個(gè)寄存器的內(nèi)容。此外,在實(shí)際應(yīng)用中,有時(shí)可能會(huì)忽視MODEM控制寄存器中的D4位,該位為自測(cè)試循環(huán)回送狀態(tài)控制位,利用它可以對(duì)串口的自測(cè)試進(jìn)行控制,因此,在自測(cè)試進(jìn)行完畢后,還應(yīng)對(duì)該位進(jìn)行復(fù)位,以保證系統(tǒng)的正常運(yùn)行。
2 通訊系統(tǒng)硬件接口電路
本系統(tǒng)的硬件接口電路如圖2所示。其中,地址譯碼電路可以根據(jù)實(shí)際需要采用不同的電路實(shí)現(xiàn)。為了使系統(tǒng)使用靈活方便,本方案中采用一片CPLD來(lái)進(jìn)行系統(tǒng)的地址分配。復(fù)位電路可以利用專用復(fù)位芯片,也可用上拉電阻方式實(shí)現(xiàn)。外接晶振可以自行選擇,然后根據(jù)晶振頻率設(shè)置除數(shù)鎖存器的高位和低位,從而獲得通訊系統(tǒng)正確的波特率,本系統(tǒng)中使用的晶振是8MHz。此外,由于16C552A有兩個(gè)串行通道和一個(gè)標(biāo)準(zhǔn)并行口,它們相互之間的配合使用在硬件和軟件上都要加以注意。建議將不用端口的片選接到高電平(16C552A的片選為低電平有效),以免出現(xiàn)錯(cuò)誤。
3 串行通訊軟件設(shè)計(jì)
3.1 通訊協(xié)議
本設(shè)計(jì)的通訊協(xié)議包括以下幾點(diǎn):
(1)波特率為9600。
(2)通訊命令由2個(gè)字節(jié)構(gòu)成:第一個(gè)字節(jié)是同步字節(jié)0XFF;第二個(gè)字節(jié)是命令碼,主要用來(lái)指示各種控制命令。
(3)每個(gè)字節(jié)包括8位數(shù)據(jù)位和1位停止位,無(wú)校驗(yàn)。
(4)在通訊過(guò)程中,上位機(jī)向TMS320F243發(fā)送同步命令,TMS320F243接收到后立即應(yīng)答,若應(yīng)答錯(cuò)誤則重發(fā)。
(5)通訊程序向TMS320F243發(fā)送控制命令時(shí),TMS320F243返回接收正確應(yīng)答信號(hào);通訊程序向TMS320F243查詢系統(tǒng)參數(shù)命令時(shí),TMS320F243按照規(guī)定格式返回所需數(shù)據(jù)。
PC機(jī)和TMS320F243均采用異步通訊方式,PC機(jī)采用事件驅(qū)動(dòng)方式來(lái)接收數(shù)據(jù),TMS320F243采用中斷方式接收數(shù)據(jù),而用查詢方式發(fā)送數(shù)據(jù)。
3.2 上下位機(jī)通訊軟件設(shè)計(jì)
在PC機(jī)上編寫(xiě)串行通訊程序至少有三種方法,分別為匯編語(yǔ)言、C語(yǔ)言和Visual系列通訊控件(MSComm)。相比較而言,Visual系列通訊控件能夠用少量的代碼輕松高效地完成編程任務(wù)。實(shí)際應(yīng)用中,可用以Visual Basic(簡(jiǎn)稱VB)6.0中的通訊控件MSComm為基礎(chǔ)編寫(xiě)PC機(jī)的串行通訊程序,而用匯編語(yǔ)言編寫(xiě)下位機(jī)(F243)軟件。上、下位機(jī)的串口程序流程分別如圖3和圖4所示。 16C552的初始化程序如下:
;THE 16C552 INITIALIZATION PROGRAM
C552_INIT:
LDP #00h
SPLK #83h,GSR0
OUT GSR0,0E003h ;設(shè)置LCR
SPLK #34h,GSR0
OUT GSR0,0E000h ;設(shè)置DLL
SPLK #00h,GSR0
OUT GSR0,0E001h ?; 設(shè)置DLM
SPLK #03h,GSR0
OUT GSR0,0E003h ?; 設(shè)置LCR
SPLK #08h,GSR0
OUT GSR0,0E004h ?; 設(shè)置MCR
SPLK #01h,GSR0
OUT GSR0,0E002h ?; 設(shè)置FCR
SPLK #01h,GSR0
OUT GSR0,0E001h ? ;設(shè)置IER
RET
圖4
4 結(jié)束語(yǔ)
本文對(duì)使用異步通信芯片16C552實(shí)現(xiàn)PC機(jī)與DSP之間的串行通訊方法進(jìn)行了研究,筆者已開(kāi)發(fā)了其串行通訊軟件,并在實(shí)驗(yàn)中調(diào)試通過(guò)。該軟件不僅使用靈活方便,而且可以利用16C552的FIFO模式實(shí)現(xiàn)大數(shù)據(jù)量的收發(fā),從而減少了對(duì)DSP的中斷,緩解了系統(tǒng)資源緊張的情況。
評(píng)論