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

        ?

        C8051F系列微控制器UART電路設(shè)計

        2017-09-11 13:51:57
        微處理機 2017年4期
        關(guān)鍵詞:波特率狀態(tài)機寄存器

        孫 靜

        (中國電子科技集團公司第四十七研究所,沈陽110032)

        C8051F系列微控制器UART電路設(shè)計

        孫 靜

        (中國電子科技集團公司第四十七研究所,沈陽110032)

        介紹C8051F系列UART的功能結(jié)構(gòu)和傳輸數(shù)據(jù)幀的格式,通過其操作模式和兩種典型的通信方式,詳細分析UART內(nèi)部特殊功能寄存器的功能和使用方法,闡述發(fā)送部分和接收部分電路設(shè)計過程,通過特定程序?qū)?nèi)部特殊功能寄存器的標志位,發(fā)送、接收端口時序以及多機通信過程進行仿真,并給出仿真波形圖。

        C8051F系列;異步串行接口;特殊功能寄存器;多機通信;仿真波形;仿真程序

        1 引言

        UART由于操作簡單,信號線少,抗干擾強,傳輸距離較遠等優(yōu)點被廣泛地應(yīng)用在工業(yè)、通信和家電控制等嵌入式領(lǐng)域。目前人們對UART的認識僅僅是各種手冊的文字描述,通過在線調(diào)試和示波器監(jiān)測等手段亦不能顯示傳輸過程中每個時刻內(nèi)部寄存器的變化情況。如果在數(shù)據(jù)傳輸?shù)耐瑫r能觀察到內(nèi)部寄存器的變化就能解決上述問題,這樣有利于編程人員更深入的了解UART的工作原理,因此從集成電路設(shè)計出發(fā),重點從UART的內(nèi)部介紹其電路工作原理及時序的產(chǎn)生。

        2 寄存器功能描述

        UART包括六個特殊功能寄存器。串行口波特率控制寄存器SBCON0、波特率分頻系數(shù)寄存器SBRLH0、SBRLL0,三個寄存器用于設(shè)定系統(tǒng)通訊波特率。串行口控制寄存器SCON0和串行口模式選擇寄存器SMOD0用于設(shè)置通訊數(shù)據(jù)位數(shù),如校驗位、停止位等。SBUF0是用一個地址訪問兩個不同的寄存器,一個用于只讀,另外一個用于只寫。如C程序中,x=SBUF0,則讀取接收緩沖寄存器;SBUF0=0x55,則是寫發(fā)送寄存器[1-3]。

        串行口控制寄存器(SCON0)的每一位定義如下:

        SCON0.7接收FIFO溢出標志,符號為OVR0。0:沒有溢出,1:有溢出。

        SCON0.6奇偶錯誤標志,符號為PERR0。0:沒有錯誤,1:有錯誤。

        SCON0.5發(fā)送保持寄存器空標志,符號為THRE0。0:標志非空,1:標志空。

        SCON0.4接收使能,符號為REN0。0:禁止接收,1:允許接收。

        SCON0.3發(fā)送附加位,符號為TBX0。

        SCON0.2接收附加位,符號為RBX0。

        SCON0.1發(fā)送中斷標志,符號為TI0。0:沒有發(fā)送中斷,1:有發(fā)送中斷。

        SCON0.0接收中斷標志,符號為RI0。0:沒有接收中斷,1:有接收中斷。

        串行口模式寄存器(SMOD0)的每一位定義如下:

        SMOD0.7多機通信使能,符號為MEC0。0:stop位為1時接收,1:stop和extra位都為1時接收。

        SMOD0.6,SMOD0.5校驗類型選擇,符號為S0PT[1:0]。00:奇校驗,01:偶校驗,10:標記校驗,11:空格校驗。

        SMOD0.4校驗使能,符號為PE0。0:不使能,1:使能。

        SMOD0.3,SMOD0.2數(shù)據(jù)長度選擇,符號為S0DL[1:0]。00:5 位,01:6 位,10:7 位,11:8 位。

        SMOD0.1附加位使能,符號為XBE0。0:不使能,1:使能。

        SMOD0.0停止位長度選擇,符號為SBL0。0:1位停止位,1:2位停止位(數(shù)據(jù)長度 6,7,8),1.5 位停止位(數(shù)據(jù)長度5)。

        接收、發(fā)送緩沖寄存器(SBUF0)

        SBUF0寄存器是一個地址訪問兩個寄存器,一個為只寫寄存器(發(fā)送移位寄存器)和一個只讀寄存器(接收鎖存寄存器),其結(jié)構(gòu)圖如圖1所示。

        波特率控制寄存器(SBCON0)的每一位定義如下:

        圖1 SBUF0結(jié)構(gòu)圖

        SBCON0.6波特率發(fā)生使能,符號為SB0RUN。0:不使能,1:使能。

        SBCON0.1,SBCON0.0波特率預分頻選擇,符號為 SB0PS[1:0]。00:12 分頻,01:4 分頻,10:48 分頻,11:1 分頻。

        其它位是預留位,必須寫0。

        波特率高字節(jié)重裝載寄存器(SBRLH0)

        當波特率計數(shù)器溢出時,重新裝載計數(shù)器的高字節(jié)。

        波特率低字節(jié)重裝載寄存器(SBRLL0)

        當波特率計數(shù)器溢出時,重新裝載計數(shù)器的低字節(jié)。

        3 基本結(jié)構(gòu)和功能描述

        UART是異步全雙工串行接口,結(jié)構(gòu)框圖如圖2所示:

        圖2 UART結(jié)構(gòu)框圖

        設(shè)備通訊過程中,設(shè)定同一波特率才可以進行正確的數(shù)據(jù)傳輸,C8051F系列單片機UART工作的波特率按照以下公式計算:

        SYSCLK為系統(tǒng)時鐘工作頻率;(SBRLH0:SBRLL0)為分頻系數(shù)寄存器0000-FFFF的設(shè)定范圍;prescaler為預分頻系數(shù),有以下四個固定分頻系數(shù):1,4,12 和 48。

        每一幀數(shù)據(jù)包括起始位、數(shù)據(jù)位 (低位D0在前)、校驗或附加位(可選)、1或2位停止位,數(shù)據(jù)長度可以在5位到8位之間調(diào)節(jié)。校驗位在數(shù)據(jù)位之后,按照S0PT[1:0]位選擇由硬件自動生成,停止位長度由SBL0位選擇。要注意的是當校驗位使能時附加位失效[4]。其時序圖如圖3所示。

        圖3 串行口時序圖

        CPU內(nèi)核寫SBUF0寄存器立即啟動數(shù)據(jù)發(fā)送操作,數(shù)據(jù)通過發(fā)送移位寄存器從TX0端口串行輸出,發(fā)送完畢后TI0置1。REN0置1后,UART模塊允許接收,數(shù)據(jù)從RX0端口串行輸入,如果接收到停止位是1的數(shù)據(jù)存入接收FIFO中,F(xiàn)IFO的深度是3,F(xiàn)IFO滿后下一個接收數(shù)據(jù)丟失。接收完成后RI0置1,如果MCE0為1,RI0只有在附加位等于1時置1。SBUF0寄存器中存儲的是最先接收的數(shù)據(jù),讀SBUF0存儲在FIFO中的下一個字節(jié)被裝載到SBUF0中,F(xiàn)IFO中釋放的空間用于接收新的字節(jié)。只有在FIFO空時,RI0才可被軟件清零。

        UART通信模式可分為點對點和多機通信兩種模式。點對點通信只需要串行總線上有兩個設(shè)備,MCE0位需要清0。設(shè)備A的TX0與設(shè)備B的RX0連接,設(shè)備A的RX0與設(shè)備B的TX0連接。UART支持一個主機和多個從機之間的通信。多機通信時主機的TX0與從機的RX0連接,從機的TX0與主機的RX0連接。

        4 電路設(shè)計

        4.1 接收部分電路設(shè)計

        當REN0使能后,接收電路開始采樣,電路主時鐘采樣到RXD管腳出現(xiàn)下降沿后,即按照所設(shè)定的波特率在數(shù)據(jù)位的中間位置進行采樣,并保存到移位寄存器。數(shù)據(jù)移位過程中,根據(jù)寄存器設(shè)置判斷數(shù)據(jù)是否接受完畢,正確接收到停止位后,數(shù)據(jù)被轉(zhuǎn)移到接收FIFO,如RI0寄存器位被置成1,表示數(shù)據(jù)接收完畢,如果FIFO滿則OVR0被置位。如果軟件設(shè)定接收校驗位,則硬件電路自動檢查校驗位是否正確,校驗有誤后PERR0會被置位[5-6]。接收電路示意圖如圖4所示。

        圖4 接收電路示意圖

        4.2 發(fā)送部分電路設(shè)計

        發(fā)送數(shù)據(jù)有一級緩存,如果當前的數(shù)據(jù)沒有發(fā)送完成又寫入下一個數(shù)據(jù),這個數(shù)據(jù)先存放在緩存中,等當前數(shù)據(jù)發(fā)送完畢再進入SBUF0,然后串行輸出。發(fā)送部分電路通過四個狀態(tài)的相互轉(zhuǎn)換實現(xiàn)發(fā)送功能,這四個狀態(tài)分別是:空閑狀態(tài)、緩存裝載狀態(tài)、總線裝載狀態(tài)和移位狀態(tài)。發(fā)送狀態(tài)機如圖5所示:

        圖5 發(fā)送狀態(tài)機

        狀態(tài)機在空閑狀態(tài)時給出緩存空標志,THRE0位置1,TI0清0。當數(shù)據(jù)寫入SBUF后,狀態(tài)機進入總線裝載狀態(tài),THRE0位清0??偩€裝載狀態(tài)如果有數(shù)據(jù)寫SBUF信號并且緩存為空,數(shù)據(jù)寫入緩存中,同時給出緩存滿標志,數(shù)據(jù)裝載完畢后自動進入移位狀態(tài)。在移位狀態(tài),移位完成后如果緩存空,狀態(tài)機進入空閑狀態(tài),THRE0位置1;如果緩存滿,狀態(tài)機進入緩存裝載狀態(tài)。移位完成標志由邏輯根據(jù)SMOD0寄存器設(shè)置計算生成,移位完成后TI0置1。移位過程中如果有寫SBUF信號并且緩存為空,數(shù)據(jù)寫入緩存中,同時給出緩存滿標志。在緩存裝載狀態(tài),緩存中的數(shù)據(jù)裝載進移位寄存器后自動進入移位狀態(tài),同時給出緩存空標志。移位完成后TI0置1,標志發(fā)送完成。

        5 仿真

        5.1 發(fā)送和接收時序仿真

        根據(jù)UART的功能特點,選取5位帶奇校驗、6位帶偶校驗、7位帶附加位、8位不帶校驗和8位帶有錯誤校驗的發(fā)送和接收模式進行仿真。將UART的TX0端口通過一個2選1的選擇器與自身的RX0端口連接。用testbench制造一個錯誤的校驗碼,通過2選1的選擇器的另一端與RX0端口連接。從TX0發(fā)送出的錯誤數(shù)據(jù)再被RX0接收,錯誤的校驗碼通過選擇器接到RX0端口[7-8]。仿真程序如下:

        UART發(fā)送和接收的時序以及內(nèi)部寄存器狀態(tài)的仿真波形圖如圖6所示。

        圖6 UART發(fā)送和接收仿真波形圖

        發(fā)送數(shù)據(jù)寫入SBUF0后THER0清0(發(fā)送保持寄存器非空),發(fā)送完成后THER0置1(發(fā)送保持寄存器空),TI0置1,TI0是用軟件清0的。第一、第二和第三個數(shù)據(jù)都是前一個數(shù)據(jù)發(fā)送完成后一個數(shù)據(jù)再寫入。由于這三個數(shù)據(jù)分別是5位、6位和7位數(shù)據(jù),因此TX0端口依次發(fā)送其低5位(0x16)、6位(0x26)和7位(0x66)數(shù)據(jù)。第四個數(shù)據(jù)沒有發(fā)送完成第五個數(shù)據(jù)即寫入,這時第五個數(shù)據(jù)(0x69)存入發(fā)送緩存TBUF中,待第四個數(shù)據(jù)發(fā)送完成后,第五個數(shù)據(jù)再被發(fā)送。接收端接收到的數(shù)據(jù)即發(fā)送端發(fā)送出的數(shù)據(jù),第一、二、三個數(shù)據(jù)存入FIFO中。接收第四個數(shù)據(jù)引起接收FIFO溢出,OVER置1,第四個數(shù)據(jù)(0x68)丟失。每接收一個數(shù)據(jù)RI0置1,接收第二個數(shù)據(jù)后RI0不可軟件清0。OVER置1后,連續(xù)讀SBUF0三次,接收FIFO清空。因此第五個數(shù)據(jù)接收到FIFO中,將這個數(shù)據(jù)讀出清空FIFO,這時再接收到的數(shù)據(jù)如果有校驗錯誤PERRR0置1。第六個數(shù)據(jù)(0x99)的正確校驗碼是1,用testbench將接收端的這一位置成0,接收端即接收了一個帶有錯誤校驗碼的數(shù)據(jù),PERRR0置1。

        圖7 多機通信連接示意圖

        5.2多機通信仿真

        多機通信連接示意圖如圖7所示,主機發(fā)送,從機接收。每次傳輸由兩個字節(jié)組成,主機先發(fā)送地址字節(jié)0x67且TBX=1,從機1和從機2的MCE0位都置1,因此從機1和從機2都接收,RI0_1與RI0_2都置1。從機1被分配的地址0x67與接收到的地址一致,從機2被分配的地址0x68與接收到的地址不匹配,因此從機1的MCE0位被軟件清0,準備接收第二個字節(jié)。從機2的MCE0位不變。主機再發(fā)送數(shù)據(jù)字節(jié) 0x76且 TBX=0,從機1(MCE0=0)接收,從機 2(MCE0=1)不接收,RI0_1 置 1,RI0_2 不置1,仿真波形圖如圖8所示。仿真程序如下:

        圖8 主機與2個從機通信仿真波形圖

        主機程序:

        從機程序包括主程序和中斷服務(wù)程序兩部分,從機判斷地址是否一致和MCE0位清零是通過中斷服務(wù)程序完成的。從機1和從機2的主程序是一致的。

        從機程序:

        從機2的中斷服務(wù)程序與從機1的中斷服務(wù)程序與只有判斷地址處不同即SBUF0==0x68。

        6 結(jié)束語

        展示了UART的內(nèi)部結(jié)構(gòu),總結(jié)歸納了其使用方法,給出了接收和發(fā)送電路的設(shè)計過程,并提供了發(fā)送、接收端口以及內(nèi)部寄存器標志狀態(tài)位的仿真波形圖,直觀地展現(xiàn)了UART工作時內(nèi)部寄存器的狀態(tài)變化,為接口編程提供幫助。

        [1]張培仁,孫力.C8051F系列單片機原理與應(yīng)用[M].北京:清華大學出版社,2013.Zhang Peiren,Sun Li.Beijing:Principle and Application of C8051F MCU Family[M].Tsinghua University Press,2013.

        [2]趙亮,侯國銳.單片機C語言編程與實例[M].北京:人民郵電出版社,2003.Zhao Liang,Hou Guorui.MCU Programming and Instantiation of C Language[M].Beijing:Post&Telecom Press,2003.

        [3]周立功,夏宇聞.單片機與CPLD綜合應(yīng)用技術(shù)[M].北京:北京航空航天大學出版社,2003.Zhou Ligong,Xia Yuwen.Integrated Application Technology of MCU and CPLD[M].Beijing:Beihang University Press,2003.

        [4]張迎新,雷文,姚靜波.C8051F系列SOC單片機原理及應(yīng)用[M].北京:國防工業(yè)出版社,2005.Zhang Yingxin,Lei Wen,Yao Jingbo.Principle and Application of C8051F SOC MCU Family[M].Beijing:National Defence Industry Press,2005.

        [5]閻石.數(shù)字電子技術(shù)基礎(chǔ) [M]北京:高等教育出版社,1997.Yan Shi.Fundamentals of Digital Electronics[M].Beijing:Higher Education Press,1997.

        [6]袁俊泉,孫敏琪,曹瑞.Verilog HDL數(shù)字系統(tǒng)設(shè)計及其應(yīng)用[M]西安:西安電子科技大學出版社,2002.Yuan Junquan,Sun Minqi,Cao Rui.Verilog HDL Design and Applications of Digital System[M].Xi’an:Xidian University Press,2002.

        [7][美]Janick Bergeron.編寫測試平臺--HDL模型的功能驗證(第二版)[M].北京:電子工業(yè)出版社,2006.Janick Bergeron.Writing Testbenches Functional Verification of HDL Models Second Edition[M].Beijing:Publishing House of Electronics Industry,2006.

        [8]William K.Lam.Hardware Design Verification[M]USA:Pearson Education,2006.

        Design of an UART in C8051F MCU Family

        Sun Jing

        The function of UART and the Data Format in C8051F MCU family are presented.The operation and the two typical communications are analyzed.The function and use of SFRs are analyzed detailedly.The design process of Transmit and Receive circuit are provided.The state of SFRs is simulated.The timing of TX0 and RX0 are simulated.Multiprocessor communications process is simulated.Simulation waveforms are provided.

        C8051FMCU family;UART;SFR;Multiprocessor communications;Simulation waveforms;Simulation program

        10.3969/j.issn.1002-2279.2017.04.004

        TN4

        A

        1002-2279-(2017)04-0011-05

        孫靜(1982—),女,遼寧省開原市人,碩士研究生,工程師,主研方向:集成電路設(shè)計。

        2016-08-02

        猜你喜歡
        波特率狀態(tài)機寄存器
        CAN 總線波特率自適應(yīng)程序設(shè)計
        智能制造(2020年5期)2020-07-03 06:24:00
        Lite寄存器模型的設(shè)計與實現(xiàn)
        基于有限狀態(tài)機的交會對接飛行任務(wù)規(guī)劃方法
        基于FPGA的異步串行通信波特率容錯設(shè)計
        電子測試(2018年7期)2018-05-16 06:27:18
        分簇結(jié)構(gòu)向量寄存器分配策略研究*
        C*Core芯片SCI串口波特率容限優(yōu)化
        高速數(shù)模轉(zhuǎn)換器AD9779/AD9788的應(yīng)用
        FPGA設(shè)計中狀態(tài)機安全性研究
        黑龍江科學(2011年2期)2011-03-14 00:39:36
        基于反熔絲FPGA的有限狀態(tài)機加固設(shè)計
        一種可重構(gòu)線性反饋移位寄存器設(shè)計
        免费高清av一区二区三区| 韩国美女主播国产三级| 亚洲中文字幕乱码在线视频| 亚洲av色福利天堂久久入口| 日韩乱码人妻无码系列中文字幕| 人妻 色综合网站| 久久婷婷国产剧情内射白浆| 91在线区啪国自产网页| 亚洲小少妇一区二区三区| 97精品人妻一区二区三区在线| 天天爽夜夜爽人人爽| 亚洲成av人片在线观看无码| AV人人操| 亚洲精品在线观看自拍| 中文字幕免费人成在线网站| 7777色鬼xxxx欧美色妇| 国产成人精品av| 亚洲va欧美va人人爽夜夜嗨| 女同另类专区精品女同| 亚洲女人毛茸茸粉红大阴户传播| 狼人青草久久网伊人| 久久精品成人欧美大片| 国产激情一区二区三区在线蜜臀| 熟女免费观看一区二区| 五月色丁香婷婷网蜜臀av | 亚洲人成网7777777国产| 国产精品美女一级在线观看| 精品国产日韩亚洲一区在线| 亚洲熟妇av一区二区三区| 中文成人无字幕乱码精品区| 久久精品国产亚洲av大全相关| 久久99久久久精品人妻一区二区| 久久九九精品国产av| 少妇下面好紧好多水真爽播放| 久久亚洲国产精品成人av秋霞 | 真人直播 免费视频| 无码国产日韩精品一区二区| 日本女u久久精品视频| 国产大屁股喷水视频在线观看| 久久久精品456亚洲影院| 色播中文字幕在线视频|