亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        嵌入式控制系統(tǒng)的串口擴展設計方法

        2016-04-20 02:50:46西南技術物理研究所楊光海彭曉樂王之昊
        電子世界 2016年6期
        關鍵詞:波特率寄存器串口

        西南技術物理研究所 楊光海 彭曉樂 張 川 王 海 孫 海 徐 丹 王之昊

        ?

        嵌入式控制系統(tǒng)的串口擴展設計方法

        西南技術物理研究所 楊光海 彭曉樂 張 川 王 海 孫 海 徐 丹 王之昊

        【摘要】本文以工程應用為出發(fā)點,闡述了在嵌入式控制系統(tǒng)中,兩種不同的實現(xiàn)UART擴展的方法,從而實現(xiàn)不同方式的多串口擴展,以供工程開發(fā)者進行選用。 嵌入式;UART;多串口

        0 引言

        嵌入式系統(tǒng)(Embedded system),是一種“完全嵌入受控器件內部,為特定應用而設計的專用計算機系統(tǒng)”,根據(jù)英國電氣工程師協(xié)會( U.K. Institution of Electrical Engineer)的定義,嵌入式系統(tǒng)為控制、監(jiān)視或輔助設備、機器或用于工廠運作的設備。與個人計算機這樣的通用計算機系統(tǒng)不同,嵌入式系統(tǒng)通常執(zhí)行的是帶有特定要求的預先定義的任務。由于嵌入式系統(tǒng)只針對一項特殊的任務,設計人員能夠對它進行優(yōu)化,減小尺寸降低成本。

        嵌入式控制系統(tǒng)是一個控制程序存儲在ROM中的嵌入式處理器控制板。嵌入式控制系統(tǒng)的核心是由一個或幾個預先編程好以用來執(zhí)行少數(shù)幾項任務的微處理器(DSP或單片機)組成。事實上,所有帶有數(shù)字接口的設備,如微波爐、錄像機、汽車等,都使用嵌入式控制系統(tǒng),大多數(shù)嵌入式控制系統(tǒng)都是由單個程序實現(xiàn)整個控制邏輯。

        在嵌入式控制系統(tǒng)中,各部件間的計算機微控制芯片(DSP或單片機)都需要進行數(shù)據(jù)交換建立通訊聯(lián)系,使用串行通訊手段是其中一種重要、常用的通訊方式。串行通訊工作方式分為同步方式和異步方式兩種,在實際工作中,異步方式用得最多,本文主要討論異步方式,其包括三個常用的總線標準:RS-232、RS-422、RS-485。

        串行通信接口(串口)在嵌入式控制系統(tǒng)數(shù)據(jù)通信中一直扮演極重要的角色, 具有線路簡單、應用靈活、可靠性高等優(yōu)點,它不僅沒有因為技術的進步而被淘汰,反而呈現(xiàn)向速度等極限挑戰(zhàn)的趨勢。 串口已成為許多高端C PU和低端單片機的標準配置。但是目前的嵌入式芯片,包括單片機或DSP芯片中,目前最多二個串口,幾乎沒有超過這個數(shù)目的,因此,軟件模擬串口的收發(fā)工作往往是此類系統(tǒng)的擴展多串口的首選方案,但該方案不僅占用資源,且應用效果并不理想,如何在此類系統(tǒng)中擴展串口,以滿足其具體應用,無疑具有現(xiàn)實意義。

        1 串口實現(xiàn)方法

        從硬件的角度來說,串口的實現(xiàn)方法是串口驅動芯片配上異步串口收發(fā)器UART(Universal Asynchronous Receiver/Transmitter)即可實現(xiàn)。如圖1所示,以MAXIM公司的RS422驅動器MAX3491為例,說明一路異步串口實現(xiàn)的方式。實現(xiàn)多路串口,即實現(xiàn)圖1所示串口的疊加。

        圖1 異步串口實現(xiàn)示意圖

        一般來說,嵌入式系統(tǒng)中實現(xiàn)多路串口的瓶頸在于微控制芯片(DSP或單片機)的UART端口較少,所以,實現(xiàn)串口擴展的關鍵在于UART的擴展,串口驅動器。實現(xiàn)UART擴展的方法有兩種,一種是利用串口擴展芯片實現(xiàn),這類芯片較多,例如TI公司的UART擴展器16C550、16C552、16C554、16C754等芯片,一片最多能擴展4路串口,本文以TI公司的TL16C554為例,講述利用UART擴展器擴展串口的方法,另一種是利用FPGA芯片進行串口擴展,在FPGA芯片內以Verilong為硬件描述語言,實現(xiàn)串行通訊的接收模塊和發(fā)送模塊,一顆FPGA芯片可實現(xiàn)多路串口的接收模塊和發(fā)送模塊。上述兩種方法的基礎上搭配串口驅動芯片,從而實現(xiàn)多路串口的擴展。

        2 利用UART擴展器擴展UART的方法

        2.1 TL16C654功能特點

        TL16C654是TI公司的異步通訊芯片,其主要特點如下:

        ●具有4通道異步通訊收發(fā)器(UART);

        ●最高可達1Mbits/s的波特率,波特率發(fā)生器可軟件編程設置;

        ●16字節(jié)的先進先出存儲器(FIFO),F(xiàn)IFO均可設置觸發(fā)中斷字節(jié)數(shù);

        ●標準的異步通訊狀態(tài)位,包括起始位,停止位,校驗位;

        ●每個通道獨立控制發(fā)送、接收、線態(tài)和數(shù)據(jù)裝置中斷

        ●具有可編程的數(shù)據(jù)格式

        數(shù)據(jù)位長度為5、6、7、8;

        可設置為奇校驗、偶校驗、無校驗模式;

        停止位長度可設置為1、1.5、2;

        ●缺省的數(shù)據(jù)起始位檢測;

        ●每個通道的數(shù)據(jù)和控制總線采用三態(tài)TTL驅動;

        ●中斷優(yōu)先控制系統(tǒng);

        ●Modem 控制功能;

        TL16C554的主要引腳的功能說明如下:

        A0~A2:片內寄存器的選擇信號;

        D0~D7:雙向8位數(shù)據(jù)線信號;

        CSA、CSB、CSC、CSD:輸入片選信號,分別能使4個串行通道讀寫操作;

        XTAL1、XTAL2:晶振或外部時鐘輸入輸出端,該腳可接外部晶振或時鐘信號;

        INTA、INTB、INTC、INTD:4個串行口中斷輸出;

        RXA、RXB、RXC、RXD:串行數(shù)據(jù)輸入引腳;

        TXA、TXB、TXC、TXD:串行數(shù)據(jù)輸出引腳;

        RESET:復位信號輸入引腳;

        IOR、IOW:輸入/輸出讀/寫選通脈沖。

        TL16C554的每路串行UART通道均有10個寄存器可被CPU訪問,這些寄存器分別用于通訊參數(shù)的設置、FIFO的控制、對線路及Modem的狀態(tài)訪問、數(shù)據(jù)的發(fā)送和接收、中斷管理等功能。編程人員可由A0、A1、A2三條片內寄存器選擇線和線路控制寄存器的除法數(shù)鎖存器訪問位LCR及IOR、IOW一起通過多路復用進行訪問或控制TL16C554的任何一個寄存器。表1給出了訪問這些寄存器的LCR、A0、A1、A2以及讀寫的狀態(tài)。

        2.2 串口擴展的實現(xiàn)

        以TL16C654與其他設備進行串行通訊相關的寄存器作簡單介紹。

        兩個8位波特率因子寄存器以一個16位的二進制格式存貯波特率因子。波特率因子可通過下列算式求出:

        波特率因子=基準時鐘頻率/(16×波特率)

        表1 TL16C554的片內寄存器

        根據(jù)串口波特率,選擇合適的晶振頻率給16C654芯片提供基準時鐘頻率,根據(jù)上式計算出波特率因子,以便在軟件編程時設置。寫入波特率因子前必須置線路控制寄存器(LCR)的bit7位為1,寫入波特率因子后應將線路控制寄存器(LCR)的bit7位恢復為0。

        將TL16C554芯片的串行串行數(shù)據(jù)輸入、輸出引腳接在串口驅動芯片的串行數(shù)據(jù)的輸出、輸入引腳上,如MAXIM公司的MAX3491芯片的DI、RO引腳上,即可以實現(xiàn)串口的擴展。

        3 利用FPGA擴展UART的方法

        3.1 概述

        FPGA(Field-Programmable Gate Array),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點。

        完整的UART接口包括發(fā)送鎖存器、發(fā)送移位寄存器和邏輯控制組成的發(fā)送模塊,以及由接收鎖存器、接收移位寄存器和邏輯控制組成的接收模塊,其UART接口結構圖如圖2所示。

        UART的幀格式,一般包括空閑狀態(tài)(高電平)、起始位(低電平)、5~8位數(shù)據(jù)位、校驗位(可選,高電平或低電平)和停止位(高電平,位數(shù)可為1、1.5、2位)。

        UART包含一個可編程的波特率發(fā)生器,可按照需求配置波特率。波特率發(fā)生器給串口數(shù)據(jù)發(fā)送模塊和接收模塊提供發(fā)送數(shù)據(jù)和接收數(shù)據(jù)的基準時鐘信號,其產(chǎn)生的時鐘mclk x 16 是串行數(shù)據(jù)波特率的16倍,它對系統(tǒng)時鐘的n分頻,n=系統(tǒng)時鐘/波特率 x 16,可根據(jù)需要的波特率設置相應的數(shù)值。

        圖2 UART接口結構

        3.2 發(fā)送模塊設計

        當數(shù)據(jù)總線上并行的8位數(shù)據(jù)從總線寫入發(fā)送模塊后,發(fā)送模塊將并行數(shù)據(jù)裝入鎖存器中,然后在位移寄存器中將數(shù)據(jù)移位,產(chǎn)生完成的發(fā)送序列(包括起始位,數(shù)據(jù)位,校驗位和停止位),以相應的波特率從tx發(fā)送。

        發(fā)送模塊部分Verilong程序如下:

        .cpu_clk(cpu_clk),

        .send_clk(clk_out),

        .rst_n(rst_n),

        .cpu_write(cpu_write),

        .cpu_ce(cpu_ce),

        .cpu_data(cpu_data),

        .cpu_add(cpu_add),

        .send_flag(send_flag),

        .uart_txdata(uart_txdata),

        .s_full_bit(s_full_bit),

        .s_empt_bit(s_empt_bit)

        3.3 接收模塊設計

        接收模塊首先捕捉起始位,在mclk x 16時鐘下不斷檢測從rx端輸入數(shù)據(jù)的起始位,當檢測到起始位后,接收模塊由空閑模式轉換為移位模式,并且16分頻mclk x 16產(chǎn)生rxlk時鐘的上升沿位于串行數(shù)據(jù)每一位的中間,這樣接下來的數(shù)據(jù)在每一位的中點采樣。然后由rxclk控制在上升沿將數(shù)據(jù)位寫入移位寄存器rsr的rsr[7]位,并且rsr右移1位,依次將8位數(shù)據(jù)全部寫入rsr,并且停止產(chǎn)生rxckl波特率時鐘。判斷檢驗位、幀結構正確后,rsr寄存器中的數(shù)據(jù)寫入數(shù)據(jù)鎖存寄存器中,最后由8位數(shù)據(jù)總線輸出轉換完成的數(shù)據(jù)。

        接收模塊部分Verilong程序如下:

        .rst_n(rst_n),

        .rx_clk(clk_16_out),

        .rx_data_ready(rx_data_ready),

        .rx_data (rx_data),

        .num_to_int(num_to_int),

        .aclr(aclr),

        .int_choose(int_choose),

        .cpu_clk(cpu_clk),

        .cpu_read(cpu_read),

        .cpu_add(cpu_add),

        .cpu_ce(cpu_ce),

        .cpu_int(cpu_int),

        .r_fifo_bit(r_fifo_bit),

        .r_over_bit(r_over_bit)

        4 結束語

        通過UART的擴展實現(xiàn)了串口的擴展,采用UART擴展器的方法具有工作穩(wěn)定,具有一定FIFO深度,不需額外增加軟件開發(fā)、管理的成本,但是使用的靈活不夠。采用FPGA擴展UART的方法使用靈活性強,但需額外增加軟件開發(fā)、管理的成本。用戶可以根據(jù)實際使用情況選用UART的擴展方法,以提高工作效率。

        參考文獻

        [1]朱學明,丁萬山.一種基于TL16C554A的DSP多串口擴展方法[J].微處理機,2006,6:24-27

        [2]田紅霞,戴彥,鹿玉紅.基于FPGA的RS232串行接口設計[J].煤炭技術,2010,9(29):194-196.

        [3]李金力,劉文怡,彭旭峰.基于FPGA的RS232異步串行口IP核設計[J].電子設計工程,2009,8(17):31-31,35.

        [4]Texas Instruments.TL16C554,TL16C554I ASYNCHRONOUS COMMUNICATIONS ELEMENT.

        [5]MAXIM,3.3V-Powered,10Mbps and Slew-Rate-LimitedTrue RS-485/RS-422 Transceivers.

        楊光海(1978—),大學本科,工程師,研究方向:嵌入式控制。

        作者簡介:

        猜你喜歡
        波特率寄存器串口
        淺談AB PLC串口跟RFID傳感器的通訊應用
        CAN 總線波特率自適應程序設計
        智能制造(2020年5期)2020-07-03 06:24:00
        Lite寄存器模型的設計與實現(xiàn)
        計算機應用(2020年5期)2020-06-07 07:06:44
        基于FPGA的異步串行通信波特率容錯設計
        電子測試(2018年7期)2018-05-16 06:27:18
        分簇結構向量寄存器分配策略研究*
        USB接口的多串口數(shù)據(jù)并行接收方法探索
        基于藍牙串口適配器的GPS接收機與AutoCAD的實時無線通信
        地礦測繪(2015年3期)2015-12-22 06:27:26
        基于并行控制的FPGA多串口拓展實現(xiàn)
        C*Core芯片SCI串口波特率容限優(yōu)化
        高速數(shù)模轉換器AD9779/AD9788的應用
        国产精品久久久久久久久鸭| 麻豆精品一区二区av白丝在线| 久久精品中文字幕亚洲| 国产成人精品一区二三区在线观看| 性人久久久久| 黑人巨茎大战欧美白妇| 狠狠躁夜夜躁人人爽天天| 亚洲视频精品一区二区三区| 国产精品日韩经典中文字幕| 亚洲va久久久噜噜噜久久男同| 国产天堂在线观看| 免费福利视频二区三区| 国产性感丝袜在线观看| 帮老师解开蕾丝奶罩吸乳网站| 男女男在线精品网站免费观看| 日本亚洲一级中文字幕| 女同三级伦理在线观看| 亚洲成a人无码| 波多野结衣国产一区二区三区| 亚洲素人日韩av中文字幕| 日本精品视频二区三区| 激情综合色综合啪啪五月丁香| 欧美深夜福利网站在线观看| 亚洲av乱码国产精品观看麻豆| 韩国av一区二区三区不卡| 久久久天堂国产精品女人| 日本精品一区二区三本中文| 青青草在线免费观看在线| 中文字字幕人妻中文| 亚洲av乱码中文一区二区三区| 日韩精品极品视频在线观看蜜桃| 免费在线观看播放黄片视频| 在线不卡av片免费观看| 欧美色资源| 亚洲女同系列在线观看| 中文字幕av一区二区三区人妻少妇| 久久av无码精品一区二区三区| 漂亮人妻被强中文字幕乱码| 99riav国产精品视频| 国产免费又色又爽又黄软件| 久久视频在线视频精品|