<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 集UART與RS232于一體的MAX3110E原理及應用

          集UART與RS232于一體的MAX3110E原理及應用

          作者: 時間:2016-12-20 來源:網絡 收藏

          1 概述

          MAX3110E內部集成了全功能UART和內置電泵電容以及土15kV ESD保護的RS-232收發(fā)器。其中,UART部分采用兼容SPITM/QSPITM/MICROWIRETM的串行接口,因而可節(jié)省線路板空間和微控制器的μC)I/0引腳。由于RS-232部分使用了特有的低壓差輸出級,從而使雙接收/發(fā)送接口能夠在高速通信、正常電源下提供真正的RS-232特性,而功耗僅600μA。由于UART和RS-232兩部分電路共用電源和地,所以,它們既可聯(lián)合使用也可獨立使用。

          通過MAX3110E可實現(xiàn)/μC的同步串行數據接口到異步串行通信口(RS-232)的轉換,它可直接與PC機的串行口(COM)相連。MAX3110E具有尺寸小,價格低,功耗少,通信速率高等特點,因此有著較好的應用前景。

          2 管腳排列及內部結構

          2.1管腳說明

          MAX3110E有28腳窄DIP和28腳寬SO兩種封裝形式,其管腳排列如圖1所示。各管腳的功能說明如下:

          RlIN,RlOUT,R2IN,R20UT:RS-232接收器輸入端或輸出端。

          TlIN,T10UT,T2IN,T20UT:RS-232發(fā)送器輸入端或輸出端;

          Vcc,GND:電源和地;

          X1,X2:晶振連接端,使用外部時鐘時,Xl為外部時鐘的輸入端,而此時X2不連;

          CTS:UART清除發(fā)送輸入端,低電平有效;

          RTS :UART發(fā)送請求輸出端,低電平有效,由RTS位控制。也可用來控制RS485網絡中的驅動器使能;

          RX,TX:UART異步串行數據(接收器)輸入端和(發(fā)送器)輸出端;

          DIN:SPI/MICROWIRE串行數據輸入端,為施密特觸發(fā)模式;

          DOUT:SPI/MICROWIRE串行數據輸出端,CS=1時為高阻態(tài);

          SCLK:SPl/MICROWIRE串行時鐘輸入端;

          CS:UART片選輸入端,低電平有效;

          IRQ:UART中斷輸出端,低電平有效,開漏輸出至微處理器;

          SHDN:硬件關閉輸入端,當SHDN=0時,關閉RS232發(fā)送器和電泵;

          V+,V-:內部電泵產生的+5.5V和-5.5V電壓;

          C1+,C2+:內部電泵電容的正極,一般不連接;

          C1-,C2-:內部電泵電容的負極,一般不連接。

          2.2內部結構及功能

          MAX3110E的內部結構功能如圖2所示,它包括UART與RS-232兩個獨立的部分。其中,UART部分包括兼容于SPI的串行接口、可編程波特率發(fā)生器、發(fā)送緩沖器及發(fā)送移位寄存器、接收緩沖器及接收移位寄存器、8字節(jié)接收FIFO以及有四種可屏蔽中斷源的中斷產生器。而RS-232部分包括自帶電容的電泵,以及可由SHDN對其進行硬件關斷的。

          與MAXIM的其它產品一樣,MAX3110E同樣具有ESD保護結構,可對意想不到的靜電起強大的保護作用,其抗靜電能力達±15kV,并可適應各種ESD情況,如正常操作、關斷模式和斷電等。

          3 讀寫時序及軟件編程

          3.1 讀寫時序

          MAX3110E具有兼容SPI/QSPI(CPOL=0,CPHA=0)以及MICROWIRE的串行接口,可方便地與μC的SPI進行接口連接,其同步串行SPI接口的時序如圖3所示。它支持μC的I/0線訪問,并可用51系列單片機的P1口模擬SPI串行接口。

          SPI串行接口是一個獨立的全雙工結構,它只接收16位數據字。因此,不論寄存器是否使用,只要從DIN接收一個16位字節(jié),就會同時從DOUT產生一個16位的字節(jié)。其中,DIN數據字的前兩位決定了傳輸數據的類型。當CS變低時,系統(tǒng)等待一個新的16位數據字,DIN(MOSI)通常在時鐘信號的上升沿鎖存,而DOUT(MISO)則在時鐘信號的上升沿被讀入微處理器,DOUT的第一位(15位)由CS信號的下降沿傳送,而14-0位則在SCLK的下降沿被傳送。

          3.2軟件編程

          通過串行接口來讀/寫MAX3110E的內部寄存器,可完成UART的波特率設定、數據字長設置、奇偶校驗使能、中斷使能、8字節(jié)FIFO使能以及收/發(fā)數據的讀/寫等。其配置由DIN、DOUT端各自的16位寄存器中的各位來控制,各位的具體涵義及狀態(tài)如表1所列。

          MAX3110E內有寫設置寄存器,讀設置寄存器,寫數據寄存器和讀數據寄存器等四種操作命令,表2是四種寄存器的操作格式。

          寫設置寄存器模式的作用是清除FIFO、R、T、RA/FE、DOr-D7r、DOt-D7t、Pr和Pt等寄存器,但RTS與CTS不受影響。DIN中FEN,SHDNi,IR,ST,PE,L,B3-BO等位的設置將在本次發(fā)送結束后有效,而屏蔽位(TM,RM,PM,RAM)則在第16個時鐘信號的上升沿開始有效。輸出的DOUT帶有14個尾零,前兩位R和T是可選的。UART必須在晶振振蕩穩(wěn)定之后,才能正確地配置寄存器。

          讀設置寄存器模式可用來讀取UART的最新配置,以控制芯片進入測試模式(位TEST=1時)。所謂測試模式是指芯片在內部將TX和RX連接,以實現(xiàn)自發(fā)自收的操作。

          寫數據寄存器模式可用來向TX緩沖器發(fā)送數據或從RX緩沖器中接收數據。如果沒有新的數據,R位將會在第16個時鐘信號的下降沿被清除。如果不傳送數據而只想改變RTS的狀態(tài),則可將TE位置為1,以禁止數據的發(fā)送。

          使用讀數據寄存器模式可接收來自8字節(jié)FI-FO的數據。但應注意:讀數據時將會清除R位及IRQ中斷位。

          3.3中斷源與屏蔽

          MAX3110E有4個可屏蔽中斷源,分別為R、T、RA/FE與Pr。當其中任一中斷源發(fā)出請求且未被屏蔽時,MAX3110E將提出中斷請求。如果中斷的初始化條件不存在,那么,系統(tǒng)將通過讀或寫數據寄存器來清除IRQ中斷。圖4所示是中斷源與屏蔽的功能框圖。

          3.4關斷模式

          MAX3110E的關斷包括硬件關斷與軟件關斷兩沖模式,其中,硬件關斷僅影響RS232收發(fā)器,而軟件關斷則控制UART工作,兩者相互間沒有影響。

          通過軟件命令SHDNi=1可使UART進入軟件關斷模式,當系統(tǒng)進入關斷模式后,系統(tǒng)振蕩器停止,功耗降低,同時清除FIFO,R,RA/FE,DOr-D7r,Pr,Pt等寄存器以及置T=1。UART在關閉時,仍能監(jiān)視接收器的活動。當SHDNoi=0退出軟件關斷模式時,振蕩器在CS的上升沿開始起振。

          通過將管腳SHDN接地可對RS-232收發(fā)器進行硬件關斷,硬件斷關時,電源電流為Iccshdn,電泵關閉,V+降為Vcc,V-升為0,發(fā)送器輸出端變?yōu)楦咦钁B(tài)。將管腳SHDN接Vcc則可退出硬件關斷模式。


          上一頁 1 2 下一頁

          關鍵詞: UARTRS232MAX3110

          評論


          技術專區(qū)

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();