国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于UR8 的586-Engine 異步串行通信擴展設(shè)計

2015-08-26 06:36李志宇高艷輝
電子設(shè)計工程 2015年13期
關(guān)鍵詞:波特率寄存器中斷

李 強,李志宇,高艷輝

(1.南京航空航天大學 自動化學院,江蘇 南京210016;2.南京航空航天大學 無人機研究院,江蘇 南京210016)

異步串行通信是一種串行數(shù)據(jù)傳輸協(xié)議, 用于雙向通信,可以實現(xiàn)半雙工和全雙工傳輸,因其結(jié)構(gòu)簡單、設(shè)計方便、價格低廉、占用資源少[1]、傳輸距離遠等優(yōu)勢而得到廣泛應(yīng)用。 近年來串行通信正朝著帶寬、速度、穩(wěn)定性逐漸增強的方向發(fā)展[2]。 586-Engine 是TERN 公司推出的一款為了高精度和高可靠性的植入式應(yīng)用所設(shè)計的核心板卡, 運算速率高,適用于工業(yè)程序控制和高精度的數(shù)學計算。 該板卡提供了2 路異步串行通信接口,這在很多應(yīng)用場合遠遠不夠。為了增加串口數(shù)量并保證較高的傳輸速率, 使用高性能的UR8 擴展卡是一種可行方案, 本文結(jié)合UR8 串口擴展卡在586-Engine 上的成功應(yīng)用, 對UR8 串口擴展方法進行詳細介紹。

1 器件介紹

586-Engine 是TERN 公司生產(chǎn)的基于AMD Elan SC520處理器的C/C++可編程微控制模塊,成本低,功耗低,結(jié)構(gòu)緊湊。 它提供了多種算法指令用于處理各類數(shù)字格式以及正弦、余弦、正切、對數(shù)等超越函數(shù),擅長高強度的運算應(yīng)用[3]。

586-Engine 的主要參數(shù)指標如下:

1)CPU 是 主 頻 為133 MHz 的32 位AMD ElanSC520 處 理器,兼容Intel80x86;

2)尺寸為3.6*2.3*0.3 英寸,適用溫度為-40oC—85oC;

3)支持114 字節(jié)內(nèi)置RAM,高達512KB 電池供電的SRAM,512 kB 的Flash,不支持SDRAM、PCI、DMA。

4)提供兩個工業(yè)標準通用異步串口(UART),最高達到1.152 Mbit/s。

5)提供32 路多功能I/O 總線。包括總共19 路12 位模數(shù)轉(zhuǎn)換器, 其中11 路串行模數(shù)轉(zhuǎn)換和8 路并行模數(shù)轉(zhuǎn)換;6 路12位數(shù)模轉(zhuǎn)換器,其中2 路串行數(shù)模轉(zhuǎn)換和4 路并行數(shù)模轉(zhuǎn)換。

6)可編程中斷控制器(PIC)支持22 個中斷優(yōu)先級,包括15 個外部中斷。 共有7 個定時器,其中1 個可編程內(nèi)部定時器,3 個16 位PIT 定時器和3 個16 位GP 定時器[4]。

UR8 是TERN 公司生產(chǎn)的8 路異步串口擴展卡。 它提供了多種串口工作方式,如RS232、RS485、RS422。 其核心部件是2 片TL16C754B 芯片, 每片TL16C754B 具有4 路異步串口, 每個通道具有64 字節(jié)的發(fā)送FIFO 和64 字節(jié)的接收FIFO。在FIFO 模式下,可以減小CPU 的中斷數(shù)量并降低軟件開銷。 它有3 種工作模式:查詢模式、中斷模式和DMA 模式,并可編程選擇中斷和DMA 模式的FIFO 深度[5]。 它提供了可編程的波特率發(fā)生器用于產(chǎn)生14 種不同的波特率,最高波特率可達230400bit/s,可見UR8 的串口傳輸速度非???。

2 硬件設(shè)計

2.1 UR8 擴展卡串口的可配置方案

UR8 擴展卡提供了3 種可配置的串口標準方案 (即RS232、RS485、RS422)以滿足不同的需求。其中8 個串口均可配置為RS232 串口標準;COM2-COM5 4 個串口可配置為RS485 串口標準;COM2 可配置為RS422 串口標準。若采用后兩種方案與PC 機進行通信需在中間加裝一個RS232/RS485轉(zhuǎn)換器。 以上3 種配置方案均已成功應(yīng)用, 本文僅以RS232為例對該方法進行介紹。

2.2 接口電路原理框圖

586-Engine 的數(shù)據(jù)總線D0-D7 連接到UR8 的D0-D7,用于雙向數(shù)據(jù)交換,/RD 和/CS1 分別和UR8 內(nèi)部HCT245 芯片的DIR 及G 相連來選擇傳輸方向;586-Engine 的地址總線A1、A2、A3、寫使能端/WR、讀使能端/RD 以及RST 與UR8 的A0、Al、A2、寫使能端/WR、讀使能端/RD 以及RST 相連,實現(xiàn)TL16C754B 的片內(nèi)寄存器尋址和讀寫控制;586-Engine 的地址總線A4、A5、A6、A7 與UR8 的A4、A5、A6、A7 相連, 經(jīng)過TL16C754B 內(nèi)部譯碼器芯片進行譯碼實現(xiàn)片選功能[6]。

UR8 的8 個串口(COM2-COM9)選用RS232 通訊方式。可以采用兩種方案進行試驗,第一種是UR8 的8 個串口與8臺PC 機同時通信, 第二種是UR8 的8 個串口級聯(lián)的接線方式, 為了操作簡潔采用第二種方案, 即: 外部數(shù)據(jù)發(fā)送到COM2 的 接 收 端/RXD2,/TXD2 連 到/RXD3,/TXD3 連 到/RXD4,以此類推,最終數(shù)據(jù)由COM9 的發(fā)送端/TXD9 發(fā)送到PC 機的接收端,通過串口調(diào)試助手檢測數(shù)據(jù)的正確性和完整性。 整個接線關(guān)系如圖1 所示。

圖1 接口設(shè)計電路原理圖Fig. 1 Interface circuit schematic design

3 軟件設(shè)計

3.1 UR8 的初始化配置

TL16C754B 內(nèi)部寄存器地址如下表所示,每一個串口的定義都完全相同。

表1 TL16C754B 內(nèi)部寄存器Tab.1 TL16C754B internal registers

UR8 的地址設(shè)置非常靈活,每個通道的基地址可以自由選擇,采用基地址加偏移量的方法可以確定各寄存器的地址,然后就可以對各寄存器進行讀寫操作。 值得注意的是,A0 沒有使用,各偏移量和基地址為偶地址,這樣就增加了系統(tǒng)的抗干擾能力。

UR8 是一款可靈活選擇配置的擴展卡, 其每一通道的初始化配置均可根據(jù)實際需要來進行。下面以串口2 為例,給出初始化配置。

************************************ 設(shè) 置 串 口2*********************************

baud=13; // 波特率選擇115200

qur_init(2, baud);

outportb(LCR2,0x83); // 線路控制寄存器,8 位,無奇偶校驗,使能DLL、DLH

outportb(DLL2,(unsigned char)(ctlr&0xff) ); // 波特率因子寄存器低位

outportb (DLH2,(unsigned char)((ctlr>>8)&0xff)); // 波特率因子寄存器高位

outportb(LCR2,0x03); // 線路控制寄存器,8 位,無奇偶校驗

outportb(IER2,0x00); // 中斷允許寄存器,不允許中斷outportb(FCR2,0x07); // 清空FIFO

outportb(MCR2,0x00); // Modem 控制寄存器歸零

3.2 串口函數(shù)說明

void qur_init( char ch, unsigned char baud) //ch=2-9,串口初始化

void put_ch (char ch, unsigned char dat) //串口數(shù)據(jù)發(fā)送函數(shù)

unsigned char qur_hit ( char ch) //檢查接收FIFO是否有數(shù)據(jù)

unsigned char get_ch( char ch) //串口數(shù)據(jù)接收函數(shù)

3.3 程序說明

軟件設(shè)計流程圖如圖2 所示,程序采用順序查詢模式,依次查詢COM2-COM9 的接收FIFO 中是否有數(shù)據(jù), 如果有數(shù)據(jù)則存儲數(shù)據(jù)再將存儲的數(shù)據(jù)發(fā)出; 如果接收FIFO 中沒有數(shù)據(jù),則繼續(xù)檢查下一個串口。 結(jié)合硬件的連線方式,一幀數(shù)據(jù)就會在8 個串口間循環(huán)一次。每一通道都有各自的接收/發(fā)送FIFO 和寄存器,各自數(shù)據(jù)的接收和發(fā)送不受影響。

圖2 軟件設(shè)計流程圖Fig. 2 Flow chart of the software design

3.4 調(diào)試結(jié)果

調(diào)試過程中,PC 機串口發(fā)送端與UR8 的串口2 的RXD2 相連, 發(fā)送的數(shù)據(jù)通過串口發(fā)送端依次通過COM2、COM3、COM4、COM5、COM6、COM7、COM8、COM9, 最 終 由COM9 的發(fā)送端TXD9 傳送到PC 機的串口接收端,形成一個數(shù)據(jù)循環(huán)傳輸?shù)倪^程。PC 機通過串口調(diào)試助手控制串口的發(fā)送和接收,具體調(diào)試原理如圖3 所示。

圖3 調(diào)試原理框圖Fig. 3 Debugging principle diagram

串口調(diào)試助手當波特率設(shè)定為115 200 bit/s,一幀數(shù)據(jù)為01 到40 個字符時,逐步減小每幀數(shù)據(jù)的發(fā)送間隔,最終測試得到的最短時間間隔為20 ms。 即每20 ms 發(fā)送一幀數(shù)據(jù)。PC機接收到的數(shù)據(jù)顯示在窗口中,實驗最終結(jié)果如圖4 所示。

從結(jié)果可以看出,接收窗口接收到的數(shù)據(jù)沒有誤碼,說明數(shù)據(jù)在各個串口的接收發(fā)送過程中沒有出現(xiàn)錯誤; 界面最下面顯示S:153000 R:153000,發(fā)送和接收的字節(jié)數(shù)相等,說明沒有丟失數(shù)據(jù)。

圖5 給出了時間間隔減小到19 ms 的實驗結(jié)果, 從接收窗口可以看出第4 行39、40 兩個字符被01、02 替代, 說明串口發(fā)送一幀數(shù)據(jù)所需要時間已經(jīng)大于PC 機發(fā)送一幀數(shù)據(jù)的時間間隔, 串口還沒發(fā)完一幀數(shù)據(jù)已經(jīng)被強制執(zhí)行下一次的發(fā)送命令,第8、15、17、22 行反映了同樣的問題。 說明20 ms為這種擴展方案的極限值。

圖4 測試界面圖Fig. 4 Interface chart of the test system

圖5 測試界面圖(19ms/次)Fig. 5 Interface chart of the test system(19ms/次)

調(diào)試結(jié)果說明, 使用UR8 成功地擴展了586-Engine 的異步串行通信能力。

4 結(jié)論

本文介紹的這種串行通信擴展方案具有明顯的優(yōu)越性:一是增加了8 個串行通信接口,可以與更多的設(shè)備進行連接,極大地提高了586-Engine 的異步串行通信能力; 二是由于586-Engine 內(nèi)核處理數(shù)據(jù)的速度極快并盡最大限度的壓縮程序所占用時間,使得這種UR8 串口擴展方案達到很高的傳輸速率,能夠滿足譬如飛控計算機這種高實時性、高運算量設(shè)備的設(shè)計需求;三是UR8 不僅能擴展到586-Engine,還能直接 擴 展 到A-Engine、i386-Engine、i386-Drive、586-Drive 等TERN 公司生產(chǎn)的板卡,省去了設(shè)計接口電路的麻煩。 實驗證明,在實時性高、傳輸波特率高、CPU 運算量大的情況下,使用UR8 進行串口擴展是一種很實用的方案。

[1] 蘭立榮,閆繼英,林海土,等.基于ARM處理器設(shè)備的多串口設(shè)計與實現(xiàn)[J].儀表技術(shù),2011(5):19-21.

LAN Li-rong, YAN Ji-ying,LIN Hai-tu,et al.Design and implementation of multi -channel UART based on ARM apparatus[J]. Instrumentation Technology,2011(5):19-21.

[2] Chen Z H,Shi M, Yi Q M.A method for DSP asynchronous serial port expansion based on TL16C752B [C] //Business Management and Electronic Information (BMEI),2011 International Conference on.IEEE,2011(1):844-847.

[3] TERN,Inc.586-EngineTM Technical Manual[S].2001.

[4] 陳德勝,黃一敏,史擁軍.TLl6C754在嵌入式系統(tǒng)串行通信中的應(yīng)用[J].儀器儀表用戶,2007,14(4):81-82 CHEN De-sheng,HUANG Yi-min,SHI Yong-jun.The application of TL16C754 in the serial communications of embedded system[J].Electronic Instrutmentation Costumers,2007,14(4):81-82.

[5] 梅培智, 于海勛, 何衡湘, 等. 基于TL16C754B 的TMS320F2812異步串行通信擴展 [J]. 科學技術(shù)與工程,2007,7(23):6035-6039.MEI Pei-zhi,YU Hai-xun,HE Heng-xiang,et al.UART serial port extension of TM S320F2812 based on TL16C754B[J].Science Technology and Engineering,2007,7(23):6035-6039.

[6] 皮小平,呂宗偉.TL16C754在多串口擴展中的應(yīng)用[J].電子元器件應(yīng)用,2006,3(1):64-66.PI Xiao -ping,LV Zong -wei.Application of TL16C754 in multi serial port expansion [J].Electronic Component & Device Applications,2006,3(1):64-66.

猜你喜歡
波特率寄存器中斷
UART 波特率檢測電路的FPGA 設(shè)計算法與實現(xiàn)
STM32和51單片機寄存器映射原理異同分析
CAN 總線波特率自適應(yīng)程序設(shè)計
Lite寄存器模型的設(shè)計與實現(xiàn)
基于FPGA的中斷控制器設(shè)計*
波特率自適應(yīng)的CAN驅(qū)動在嵌入式Linux下的實現(xiàn)①
跟蹤導練(二)(5)
千里移防,衛(wèi)勤保障不中斷
詳解lAP15W4K58S4單片機的串行口通信
FPGA內(nèi)嵌PowerPC的中斷響應(yīng)分析
水城县| 莱州市| 平凉市| SHOW| 凤山市| 永昌县| 孝昌县| 鞍山市| 云龙县| 武义县| 家居| 余江县| 桃园市| 忻州市| 绥阳县| 阿克陶县| 永春县| 中牟县| 黔江区| 治多县| 平泉县| 肃宁县| 固原市| 富宁县| 资阳市| 昭觉县| 洛阳市| 栾城县| 惠州市| 桦甸市| 屏山县| 东辽县| 肃南| 项城市| 康平县| 政和县| 新晃| 绍兴县| 安阳市| 仙桃市| 城口县|