999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于DMA的高速UART串口通信設計與實現

2018-09-15 04:31:08牛洪海周緒貴
自動化儀表 2018年9期
關鍵詞:設置

牛洪海,臧 峰,周緒貴

(南京南瑞繼保電氣有限公司,江蘇 南京 211102)

0 引言

通用異步收發器(universal asynchronous receiver transmitter,UART)是一種通用串行數據收發器。該收發器可以用來實現主機與輔助設備之間的通信,因其實現簡單而被廣泛應用于工業控制和通信領域[1-2]。UART數據傳輸主要通過中斷或直接內存存取(direct memory access,DMA)的方式實現[3-4]?;谥袛喾绞降闹醒胩幚砥?central processing unit,CPU)使用率較高。當有大批量的數據傳輸時,將占用大量時間片,導致其他低優先級程序無法得到有效執行。DMA可以不經由CPU控制而直接從內存中存取數據[5-8],用于實現外設與存儲器之間,以及存儲器與存儲器之間的高速數據傳輸。該操作是根據地址空間的標志[9],實現單通道源地址和目的地址之間的單向數據傳輸[10],為不同模塊之間的高速數據傳輸提供了一種可靠的方式。但由于DMA數據傳輸操作是定長傳輸,即發送方將所需發送的報文按照發送方和接收方約定好的固定長度進行發送。采用DMA方式接收數據時,如不足固定長度就需要填充無效數據至固定長度。當使用DMA方式進行數據接收時,先向DMA控制器指定需要接收的字節個數。DMA控制器接收到指定字節后,產生DMA傳輸中斷。而在實際應用時,串口接收數據的字節個數往往是不固定的,因此無法直接使用DMA進行數據接收。如何利用DMA方式接收不定長數據,已成為亟待解決的問題。

1 方案設計與實現

1.1 總體設計

基于上述存在的問題,本文提出了一種通過DMA接收高速通信串口不定長數據的方法。該方法步驟具體如下。①設置串口為DMA接收模式;②設置一個通用輸入/輸出引腳(general purpose input output,GPIO)引腳(本文為PC14引腳)為外部中斷控制(external interrupt controller,EIC),并且該引腳與串口的接收引腳(receive data,RXD)相連,產生外部中斷(interrupt)INT14;③配置外部引腳為下降沿模式,即下降沿產生外部引腳中斷,當產生第一個下降沿時,啟用0號定時器(timer counter 0,TC0);④設置外部中斷產生EVENT事件,并將此事件與定時器TC0相關聯;⑤設置TC0的輸入事件,與外部引腳產生的事件相關聯,并把TC0設置為Retrigger模式;⑥設置定時器超時時間,本文設為20 s,定時器超時后關閉,然后進行報文處理,并重新使能DMA接收,以等待下一幀報文。方案設計原理如圖1所示。

圖1 方案設計原理圖

1.2 串口DMA接收設計

使用DMA進行數據傳輸時,需要對DMA控制器進行配置。首先,選擇串口DMA接收通道。本文所述的接收通道為6。其次,配置DMA對應通道的源地址。本文所述的是串口接收數據的寄存器地址。最后,配置DMA通道的目的地址,即存儲串口數據的緩沖區數組首地址,并設置目的地址為自增模式。

1.3 外部中斷設計

設置一個GPIO引腳(PC14引腳)為外部中斷模式,并把此引腳與串口的接收引腳RXD相連。配置外部引腳為下降沿模式,即下降沿產生外部中斷。當產生第一個下降沿時,使能定時器TC0。當產生外部中斷時,同時配置產生EVENT事件。此事件與定時器TC0的輸入事件相關聯。

1.4 定時器設計

定時器TC0設置為Retrigger模式,即接收到EVENT事件后,把定時器的累計時間清零。因為串口報文是以低電平作為起始位,所以在串口發送數據時,一定會產生下降沿,使定時器TC0不會因溢出而產生定時中斷。當串口沒有數據報文發送時,保持高電平,使定時器溢出,產生定時中斷。在定時中斷服務程序中,關閉定時器,重啟DMA接收通道以等待下一幀報文,并進行串口報文處理。

2 硬件電路設計

本文采用的硬件是由Microchip公司提供的Atmel系列ATSAME54N20A芯片。該芯片具有豐富的外圍接口,包括32路可配置的DMA通道、16路可配置的外部中斷引腳、8路可配置的UART串口。相關串口硬件電路圖如圖2所示。ATSAME54N20A芯片可配置的UART引腳與RS-485芯片的A/B引腳相連接,RS-485芯片的接收引腳RXD與外部中斷引腳PC14相連。

圖2 串口硬件電路圖

3 軟件設計

為了使軟件能正常運行,需要對芯片的一些模塊進行初始化,主要包括晶振初始化、時鐘初始化等。本文主要設置如下。

①串口初始化,包括波特率設置(本文設置為5 Mbit/s)、奇偶校驗位、停止位設置。

②DMA通道初始化,包括設置串口接收的DMA通道、DMA的源地址、目的地址。

③外部中斷初始化,包括設置PC14引腳為外部中斷模式,并產生事件,置下降沿首次檢測標志start_timer_flag = 0[11]。

④定時器初始化,包括設置定時器超時時間,并設置定時器接收事件。

UART接收數據流程如圖3所示。

圖3 UART接收數據流程圖

當完成初始化后,檢測PC14引腳是否有下降沿產生。如果檢測到下降沿并且start_timer_flag=0,那么啟動定時器并置start_timer_flag=1;否則下降沿產生EVENT事件驅動定時器累計時間清零。當沒有下降沿產生時,定時器超時進入超時中斷服務程序。首先,關閉定時器;然后,進行串口報文的處理,重新初始化DMA并置start_timer_flag = 0。

4 性能分析

為了更好地理解上述設計方案,本節結合波形關系圖進行詳細的性能分析。波形關系圖如圖4所示。

當串口接收數據時,串口數據波形如圖4(a)所示。首先,總線會檢測到一個低電平,代表有數據需要發送。該低電平就是RXD引腳的起始位。由于PC14外部引腳與RXD相連,所以PC14的波形與RXD引腳的波形一致。外部引腳波形如圖4(b)所示。將PC14設為外部中斷模式,而且是下降沿產生外部中斷,則當RXD的起始位或串口數據位由“1”變“0”時,會產生下降沿,PC14會產生外部中斷。外部中斷波形如圖4(c)所示。該外部中斷會產生一個EVENT事件。由于此事件與TC0的輸入事件相關聯,TC0檢測到此事件后清除定時器的累計時間,然后重新從零開始計時。當串口沒有數據要接收時,總線保持高電平,即串口的RXD引腳一直保持在“1”狀態。此時,沒有EVENT事件去清除定時器TC0的累計時間,導致定時器溢出產生定時中斷。該過程的定時器波形如圖4(d)所示。本文中設置的定時器超時時間是20 μs。在定時中斷服務程序中,重新使能DMA接收通道,以等待下一幀報文的到來,并進行串口報文的處理。

圖4 波形關系圖

5 測試驗證

為了驗證上述分析的正確性,搭建5 bit/s串口通信測試環境,如圖5所示。

圖5 測試環境示意圖

①主備串口RS-485芯片進行物理連接,即把主Atmel芯片的RS-485引腳與備Atmel的RS-485引腳相連。

②配置外部中斷引腳,即把RXD引腳與PC14引腳相連。

③為了監視TC0何時進入中斷服務程序,設置PC13為GPIO。當TC0進入超時中斷服務程序時置高電平,退出中斷服務程序時置低電平。

④驗證程序是通過TC0超時中斷處理報文,而非DMA中斷處理報文。配置DMA接收緩沖區數值為300 B,但是主Atmel只發送200 B,通過示波器查看PC13是否能輸出脈沖信號。

⑤當備Atmel接收到處理數據后,返回200 B至主Atmel。

測試結果分析如圖6所示。

圖6 測試結果分析圖

6 結束語

本文在分析串口通過DMA進行數據接收的優缺點基礎上,提出了一種通過外部中斷與定時器配合的通信方案。該方案既兼顧了DMA傳輸不需要CPU干預的優點,又解決了DMA只能接收固定長度數據的缺點;在節省了CPU處理時間的同時,提高了串口接收數據的效率,有效擴展了DMA在串口通信中接收不定長報文的應用。但此方案需要額外占用一個GPIO引腳和定時器,在芯片資源有限的情況下需要謹慎考慮。

猜你喜歡
設置
中隊崗位該如何設置
少先隊活動(2021年4期)2021-07-23 01:46:22
船舶防火結構及設置的缺陷與整改
水上消防(2020年5期)2020-12-14 07:16:18
中外醫學專業與專科設置對比分析及啟示
特殊場景下列控等級轉換的設置方案
7招教你手動設置參數
動車段(所)股道有效長設置研究
我國中小學將設置人工智能相關課程
玩具世界(2017年9期)2017-11-24 05:17:29
吃紙的妖怪
本刊欄目設置說明
中俄臨床醫學專業課程設置的比較與思考
主站蜘蛛池模板: 国产青青草视频| 黄色一级视频欧美| 国产成人精品2021欧美日韩| 欧美精品aⅴ在线视频| 永久在线精品免费视频观看| 国产无码精品在线播放 | 亚洲欧美色中文字幕| 久操中文在线| 日韩精品亚洲人旧成在线| 成人一级免费视频| 国产精品免费入口视频| 婷婷六月综合网| 亚洲成网站| 在线观看国产精品第一区免费| 欧洲免费精品视频在线| 国产成人你懂的在线观看| 成人午夜精品一级毛片| 日韩黄色在线| 香蕉精品在线| 97免费在线观看视频| 亚洲人在线| 亚洲国产综合自在线另类| 97在线碰| 丁香婷婷综合激情| 精品国产一二三区| 欧美视频在线不卡| 99久久精品无码专区免费| 成年人福利视频| 亚洲毛片网站| 免费观看国产小粉嫩喷水| 国产在线自在拍91精品黑人| 久久一本日韩精品中文字幕屁孩| 一区二区无码在线视频| 国产成人免费视频精品一区二区| 亚洲精品制服丝袜二区| 尤物特级无码毛片免费| 免费无码一区二区| 国产女人在线视频| 中文纯内无码H| 久久综合丝袜日本网| 国产成人精品一区二区三在线观看| 中文字幕有乳无码| 国产成人AV大片大片在线播放 | 伊人查蕉在线观看国产精品| 国产欧美日韩精品综合在线| 亚洲欧美激情另类| 国产人成在线视频| 在线观看欧美精品二区| 国产99视频精品免费观看9e| 园内精品自拍视频在线播放| 国产精品一线天| 国产成在线观看免费视频| 日本三级欧美三级| a级毛片在线免费| 国内精自视频品线一二区| 在线观看免费国产| 国产91线观看| 国产va在线观看免费| 国产三级视频网站| 人妻无码中文字幕一区二区三区| 欧美精品H在线播放| 凹凸精品免费精品视频| 99精品一区二区免费视频| 无码一区二区波多野结衣播放搜索| 欧美一区二区福利视频| 不卡国产视频第一页| 欧美国产综合色视频| 国产经典在线观看一区| 色香蕉影院| 国产真实自在自线免费精品| 伊人AV天堂| 国产女人爽到高潮的免费视频| 无码'专区第一页| 青青国产在线| 91亚洲免费视频| 91国内外精品自在线播放| 亚洲黄色片免费看| 欧美精品亚洲精品日韩专| 国产99在线观看| 国产凹凸一区在线观看视频| 男人的天堂久久精品激情| 久久精品中文无码资源站|