❶ 設計一個用8250實現串口通信
數據接收存儲技術革新是信號採集處理領域內的一個重要課題。利用這種技術,可以把信號的實時採集和精確處理在時間上分為兩個階段,有利於獲得令人更滿意的處理結果。在無線數傳接收設備中應用數據接收存儲方法時,除了要滿足數據傳輸速率和差錯控制方面的要求外,還需要考慮如何使設備易於攜帶、介面簡單、使用方便。
傳統外設介面技術不但數據傳輸速率較低,獨佔中斷、I/O地址、DMA通道等計算機系統關鍵資源,容易造成資源沖突問題,而且使用時繁雜的安裝配置手續也給終端用戶帶來了諸多不便。近年來,USB介面技術迅速發展,新型計算機紛紛對其提供支持。USB2.0是USB技術發展的最新成果,利用USB2.0介面技術開發計算機外設,不但可以借用其差錯控制機制[1][6]減輕開發人員的負擔、獲得高速數據傳輸能力(480Mb/s),而且可以實現便捷的機箱外即插即用特性,方便終端用戶的使用。
1 無線數傳接設備總體構成
無線數傳接收設備是某靶場測量系統的一個重要組成部分。如圖1所示,該設備由遙測接收機利用天線接收經過調制的無線電波信號,解調後形成傳輸速率為4Mb/s的RS-422電平差分串列數據流。以幀同步字打頭的有效數據幀周期性地出現在這些串列數據中。數據轉存系統從中提取出有效的數據幀,並在幀同步字後插入利用GPS接收機生成的本地時間信息,用於記錄該幀數據被接收到的時間,然後送給主機硬體保存。
在無線數傳接收設備中,數據轉存系統是實現數據接收存儲的關鍵子系統。下面將詳細介紹該系統的硬體實現及工作過程。
2 數據轉存系統基本構成及硬體實現
數據轉存系統主要由FPGA模塊、DSP模塊、USB2.0介面晶元構成,各個模塊之間的相互關系如圖2所示示。圖中,4Mb/s的串列數據輸入信號SDI已由RS-422差分電平轉換為CMOS電平。為突出重點,不太重要的信號連線未在圖中繪出。下面分別介紹這幾個模塊的主要功能。
2.1 FPGA模塊實現及春功能
FPGA模塊在Altera公司ACEX系列的EP1K30TI144-2晶元中實現。其中主要的功能子模塊有:位同步邏輯、幀同步邏輯、授時時鍾和解碼邏輯。位同步邏輯主要由數字鎖相環構成,用於從串列數據輸入信號SDI中恢復出位時鍾信號。幀同步邏輯從位同步邏輯的輸出信號提取幀同步脈沖。兩者為DSP利用其同步串列口接收串列數據作好准備。這樣,利用一對差分信號線就可以接收同步串列數據,簡化了印製電路板的外部介面。授時時鍾在DSP和GSP接收機的協助下生成精度為0.1ms的授時信息。解碼邏輯用於實現系統互聯。
2.2 DSP模塊實現及其功能
DSP模塊是數據轉存系統的主控模塊,在T1公司16位定點DSP晶元TMS320F206[4]中實現。在DSP的外部數據空間還配置了32KX16的高速SRAM,可以緩存80餘幀數據,用於提高系統的差錯控制能力。DSP利用同步串列口接收FPGA送來的同步串列數據,利用非同步串口接收GPS接收機送來時間信息(用於初始化FPGA授時時鍾),利用外部匯流排介面訪問FPGA授時時鍾、外部SRAM、ISP1581的片內寄存器。可以看出DSP模塊主要用於完成數據幀的接收、重組以及轉存調度等任務。
ISP1581晶元是PHILIPS公司推出的高速USB2.0設備控制器,實現了USB2.0/1.1物理層、協議層,完全符合USB2.0規范,即支持高速(480Mb/s)操作,又支持全速(12Mb/s)操作。ISP1581沒有內嵌微處理器,但對微處理器操作了靈活的介面。在上電時,通過配置BUS——CONF、DAO、MODE1、MODE0、DA1引腳電平可以適應絕大多數的微處理器介面類型。例如,通過BUS_CONF/DA0引腳,匯流排配置可以選擇普通處理器模塊(Generic Phocessor mode)中分割匯流排模式(Split Bus Mode);在普通處理器模式下,通過MODE0/DA1引腳可以選擇讀寫選通為8051風格或者Motorola風格。
在數據轉存系統中,ISP1581用於處理主機的高速數據傳輸。它工作在普通處理器介面模式下,採用8051風格的讀寫選通信號,由DSP晶元TMS320F206控制。兩者在選定工作方式下的信號連線如圖3所示,圖中未畫出的信號引腳可以懸空,供電引腳的連接方式在參考資料[2]第46頁有簡明描述。在FPGA解碼邏輯的作用下,ISP1581的片內寄存器被映射在DSP的片外數據空間中。DSP通過8位地址線選擇要訪問的寄存器,在讀寫選通信號的控制下,利用16位數據線與選定的寄存器交換數據。在訪問ISP1581單位元組寄存器時,數據匯流排高位元組內容無關緊要。ISP1581通過中斷引腳INT向DSP報告發生的匯流排事件,利用D+、D-引腳完成與主機的數據交換。
3 數據轉存系統的工作過程
系統加電後,當FPGA配置過程結束時,如果有串列數據輸入,位同步邏輯和幀同步邏輯便啟動同步過程。同時,DSP片內FLASH中復位中斷服務程序c_int0()[4]被立即執行,在建立好C語言的工作環境下,它會調用主函數main()。在main()中,需要安排好一系列有先後順序的初始化工作。其中,ISP1581的初始化過程比較復雜,需要考慮設備採用的供電方式(這里為自供電[6]方式)、插接主機和系統上電的先後次序,並需要與USB匯流排枚舉[1][6]過程相結合。
在FPGA中的位同步邏輯和幀同步邏輯均進入同步狀態,且DSP主控模塊配合主機完成初始化任務後,即可啟動數據的傳輸過程。下面介紹一下ISP1581的初始化過程及DSP控制的數據幀的接收機轉存流程。
3.1 ISP1581的初始化
在初始化過程中,首先需要設置影響ISP1581自身工作方式的一些寄存器,然後與主機端USB系統配合進行,應答來自主機端的設備請求。當數據轉存系統板作為USB 2.0設備通過連接器連到主機USB根集線器上的一個埠時,主機便可檢測到這一連接,接著給該埠加電,檢測設備並激活該埠,向USB設備發送復位信號。設備收到這一復位信號後,即進入預設狀態,此後就能夠通過預設通信通道響應主機端送來的設備請求。主機通過描述符請求(GET_DESCRIPTOR)獲得設備端的詳細信息,通過設置地址請求(SET_ADDRESS)設置設備地址,通過設置配置請求(SET_CONFIGURATION)選定合適的設備配置。在設備成功響應了這些設備請求之後,就可以與主機通信了。
在響應主機請求的過程中,DSP需要配置ISP1581的端點以實現不同類型的傳輸通道。根據數據傳輸速率的要求,除了預設的控制通道外,系統中實現了一個批傳輸(bulk)[1]類型的輸入通道。這樣,ISP1581就可以像FIFO一樣方便地從數據轉存系統向主機傳輸數據,而且具有差錯控制能力,簡化了設備端軟體設計的復雜性。
3.2 數據幀的接收轉存過程
系統正常工作時,需要與主機端程序相互配合。主要端需要開發者實現的程序包括設備驅動程序和應用程序。在Windows 2000操作系統下,USB設備驅動程序為WDM模型的驅動程序,開發環境DriverStudio為WDM型驅動程序提供了框架結構,使得驅動開發變得非常容易(參見參考文獻[5]第八、九、十章)。驅動程序接收應用程序的請求,利用USB匯流排驅動程序(US-BD)和主機控制器驅動程序(HCD)通過主機控制器安排USB匯流排事務,設備端則根據這些事務調度相應的數據幀的傳輸。關於主機埠如何安排匯流排事務可以查閱參考文獻[1]。以下著重介紹設備端數據的調度過程。
數據幀的接收轉存過程主要由DSP負責,DSP在外部SRAM中建立了一個數據幀的隊列,如圖4所示。系統主要工作在中斷驅動模式下,與同步串列口相關的中斷服務程序負責建立隊列的尾部,對應於ISP1581中斷引腳INT的中斷服務程序負責建立隊列的頭部。
當以幀同步字打頭的一幀數據以串列位流的形式到來時,FPGA產生的幀同步脈沖可以直接啟動DSP同步串列口接收數據,該同步脈沖同時以中斷方式通知DSP為一幀數據的接收做好准備。DSP接到通知後,首先檢查外部SRAM中是否有足夠的空間容納一幀數據。如果沒有空間,則丟棄當前數據幀(根據設計,這種情況是很少見的);如果有空間,則為當前數據幀保留足夠的空間。接著在幀起始位置填寫幀步字,讀取授時時鍾的當前值並填寫在幀同步字後。這樣,一個新的數據幀(圖4中數據幀F_N)就建立了,但是並沒有加入到隊列中,而是要等待來自同步串列口的後繼數據嵌入該幀中後再加入到隊列中。
同步串列口的接收緩沖區在接收到若干字(由初始化時的設置決定)後,會向DSP提出中斷請求。在中斷服務程序中,DSP讀取接收緩沖區中的內容,並將其填入上述新開辟的幀F_N中。在一幀數據接收完畢後,就將該幀添加到隊列的尾部,表示該幀數據已經准備好(圖4中數據幀F_R),可以通過ISP1581送給主機硬體保存。
DSP在查詢到隊列中有已經准備好的數據幀存在時,就設置ISP1581的端點索引寄存器(Endpoint Index Register)使其指向初始化時配置的批傳輸輸入端點,然後將隊列首幀數據通過ISP1581的數據埠寄存器(Data Port Register)填寫在端點緩沖區中。在端點緩沖區被填滿後,它就自動生效。在不能填滿端點緩沖區的情況下,可以通過設置控制功能寄存器(Control Function Register)的VENDP位[2]強制該端點緩沖區生效。端點緩沖區生效後,在USB匯流排上下一IN令牌到來時,該端點緩沖區中的數據就通過USB匯流排傳輸到主機中。主機成功接收到數據後,會給ISP1581以ACK應答。能夠通過INT引腳報告給DSP,DSP就可以繼續往端點中填寫該幀其餘數據。
在隊列首幀數據被成功轉移到主機後,DSP就丟棄首幀數據。如果隊列在還有數據幀,則將次首幀作為首幀,繼續前述傳輸過程;如果沒有要傳輸的數據幀,則為隊列首幀指針Head_Ptr賦空值(NULL),等待新的數據幀的到來。
USB2.0是計算機外設介面技術發展的最新成功,具有廣闊的應用前景。本文介紹了PHILIPS公司USB2.0介面晶元ISP1581在無線數據接收設備中的應用。高性能、便攜化的無線數據傳接收設備。其在靶場實彈試驗中受到了用戶的好評。
PC機的RS-232C串列口是使用最多的介面之一。因此,4串口、8串口等以增加串口數量為目的的ISA匯流排卡產品大量問世。一般串口應用只是使用了RXD和TXD兩條傳輸線和地線所構成的串口的最基本的應用條件,而本文介紹一個利用PC機的RS-232串口加上若干電路來實現多串口需求的介面電路。
1.PC機串口的RTS和DTR及擴展電路
RTS和DTR是PC機中8250晶元的MODEM控制寄存器的兩個輸出引角D1和D0位,口地址為COM1的是3FCH,口地址為COM2的是2FCH。我們可以利用對MODEM控制寄存器3FCH或2FCH的寫操作對其進行控制。從而利用該操作和擴展電路實現對TXD和RXD進行多線擴展,圖1是其擴展電路。
在圖1所示的PC機串口擴展電路中,74LS161是二進制計數器,1腳是清0端,2腳是計數端,計數脈沖為負脈沖信號,4051是八選一雙向數字/模擬電子開關電路,其中一片用於正向輸出,一片用於反向輸出。該擴展電路工作原理是通過控制PC機串口的DTR輸出的高低電平來形成74LS161的P2腳計數端的負脈沖信號,使161的輸出端P14(QA)、P13(QB)、P12(QC)、P11(QD)腳依次在0000到1111十六個狀態中變化,本電路僅使用了QA、QB、QC三個輸出來形成對4051的ABC控制,最終使得4051(1)的輸入端TXD依次通過與TX1~TX8導通而得到輸出信號,4051(2)的輸出端RXD與RX1~RX8依次導通形成輸入信號。由於RXD和TXD的導通是一一對應的,因此串口通信就可以依次通過與多達8個帶有三線基本串口的外部設備進行通信傳輸以實現數據傳送。PC機端的電平轉換電路是將RS232電平轉換為TTL電平,外設端的電平轉換電路是將TTL電平轉換為RS232電平。由於這種轉換有許多電路可以實現,因而,這里不再介紹。
2.電路使用程序
對PC機串口COM1的編程如下:
……
… ;對COM1口的波特率等設置;
MOV DX,3FCH
MOV AL,XXXXXX01B
OUT DX,AL;D1生成RTS負脈沖,對74LS161輸出端清0
MOV AL,XXXXXX11B;
OUT DX,AL ;4051的RX1和TX1導通
CALL COM ;調用通信子程序,與第一個外部設備通信;
MOV CX,7 ;設置循環計數器;
NEXT:MOV DX ,3FCH
MOV AL,XXXXXX10B
OUT DX ,AL ;D0位生成DTR的負脈沖,形成161的P2腳計數脈沖
MOV AL,XXXXXX11B
OUT DX,AL ;RX2和TX2導通
CALL COM ;調用通信子程序,與第二個外部設備通信
LOOP NEXT ;循環與另外6個外部設備通信
…
… ;通信子程序略
3.使用說明
由於該擴展的多路介面在通信時共用一個子程序,因此在與某一路導通時,系統只能與這一路的外部設備進行通信聯絡。
如果工作現場需要立即和某一路通信,則需要對3FCH的D1位執行兩個寫操作並在RTS腳形成負脈沖,以對7416I清0後,再連接執行若干次對DTR的兩次寫操作。例如想對第4路外設通信,則需要執行完成對74LS161清0後,再連續三次對3FCH的D0位進行兩個寫操作以形成DTR腳的負脈沖,然後即可調用通信子程序。
如需使用PC機的COM2串口,只需將程序中的3F8H~3FDH全部換成2F8H~2FDH即可。
如果使用十六選一雙向數字/模擬電子開關電路,可將74LS161的QA、QB、QC、QD四個輸出端接至電子開關的四個控制端A、B、C、D,這樣就可以達到一個PC機的RS232口與16個帶有串口的外設的數據通信。
❷ 51單片機串口通訊
51單片機串口通信
來源:維庫 作者:
關鍵字:51單片機 串口通信
這節我們主要講單片機上串口的工作原理和如何通過程序來對串口進行設置,以及根據所給出的實例實現與PC 機通信。
一、原理簡介
51 單片機內部有一個全雙工串列介面。什麼叫全雙工串口呢?一般來說,只能接受或只能發送的稱為單工串列;既可接收又可發送,但不能同時進行的稱為半雙工;能同時接收和發送的串列口稱為全雙工串列口。串列通信是指數據一位一位地按順序傳送的通信方式,其突出優點是只需一根傳輸線,可大大降低硬體成本,適合遠距離通信。其缺點是傳輸速度較低。
與之前一樣,首先我們來了解單片機串口相關的寄存器。
SBUF 寄存器:它是兩個在物理上獨立的接收、發送緩沖器,可同時發送、接收數據,可通過指令對SBUF 的讀寫來區別是對接收緩沖器的操作還是對發送緩沖器的操作。從而控制外部兩條獨立的收發信號線RXD(P3.0)、TXD(P3.1),同時發送、接收數據,實現全雙工。
串列口控制寄存器SCON(見表1) 。
表1 SCON寄存器
表中各位(從左至右為從高位到低位)含義如下。
SM0 和SM1 :串列口工作方式控制位,其定義如表2 所示。
表2 串列口工作方式控制位
其中,fOSC 為單片機的時鍾頻率;波特率指串列口每秒鍾發送(或接收)的位數。
SM2 :多機通信控制位。 該僅用於方式2 和方式3 的多機通信。其中發送機SM2 = 1(需要程序控制設置)。接收機的串列口工作於方式2 或3,SM2=1 時,只有當接收到第9 位數據(RB8)為1 時,才把接收到的前8 位數據送入SBUF,且置位RI 發出中斷申請引發串列接收中斷,否則會將接受到的數據放棄。當SM2=0 時,就不管第位數據是0 還是1,都將數據送入SBUF,並置位RI 發出中斷申請。工作於方式0 時,SM2 必須為0。
REN :串列接收允許位:REN =0 時,禁止接收;REN =1 時,允許接收。
TB8 :在方式2、3 中,TB8 是發送機要發送的第9 位數據。在多機通信中它代表傳輸的地址或數據,TB8=0 為數據,TB8=1 時為地址。
RB8 :在方式2、3 中,RB8 是接收機接收到的第9 位數據,該數據正好來自發送機的TB8,從而識別接收到的數據特徵。
TI :串列口發送中斷請求標志。當CPU 發送完一串列數據後,此時SBUF 寄存器為空,硬體使TI 置1,請求中斷。CPU 響應中斷後,由軟體對TI 清零。
RI :串列口接收中斷請求標志。當串列口接收完一幀串列數據時,此時SBUF 寄存器為滿,硬體使RI 置1,請求中斷。CPU 響應中斷後,用軟體對RI 清零。
電源控制寄存器PCON(見表3) 。
表3 PCON寄存器
表中各位(從左至右為從高位到低位)含義如下。
SMOD :波特率加倍位。SMOD=1,當串列口工作於方式1、2、3 時,波特率加倍。SMOD=0,波特率不變。
GF1、GF0 :通用標志位。
PD(PCON.1) :掉電方式位。當PD=1 時,進入掉電方式。
IDL(PCON.0) :待機方式位。當IDL=1 時,進入待機方式。
另外與串列口相關的寄存器有前面文章敘述的定時器相關寄存器和中斷寄存器。定時器寄存器用來設定波特率。中斷允許寄存器IE 中的ES 位也用來作為串列I/O 中斷允許位。當ES = 1,允許 串列I/O 中斷;當ES = 0,禁止串列I/O 中斷。中斷優先順序寄存器IP的PS 位則用作串列I/O 中斷優先順序控制位。當PS=1,設定為高優先順序;當PS =0,設定為低優先順序。
波特率計算:在了解了串列口相關的寄存器之後,我們可得出其通信波特率的一些結論:
① 方式0 和方式2 的波特率是固定的。
在方式0 中, 波特率為時鍾頻率的1/12, 即fOSC/12,固定不變。
在方式2 中,波特率取決於PCON 中的SMOD 值,即波特率為:
當SMOD=0 時,波特率為fosc/64 ;當SMOD=1 時,波特率為fosc/32。
② 方式1 和方式3 的波特率可變,由定時器1 的溢出率決定。
當定時器T1 用作波特率發生器時,通常選用定時初值自動重裝的工作方式2( 注意:不要把定時器的工作方式與串列口的工作方式搞混淆了)。其計數結構為8 位,假定計數初值為Count,單片機的機器周期為T,則定時時間為(256 ?Count)×T 。從而在1s內發生溢出的次數(即溢出率)可由公式(1)所示:
從而波特率的計算公式由公式(2)所示:
在實際應用時,通常是先確定波特率,後根據波特率求T1 定時初值,因此式(2)又可寫為:
51單片機串口通訊
二、電路詳解
下面就對圖1 所示電路進行詳細說明。
圖1 串列通信實驗電路圖
最小系統部分(時鍾電路、復位電路等)第一講已經講過,在此不再敘述。我們重點來了解下與計算機通信的RS-232 介面電路。可以看到,在電路圖中,有TXD 和RXD 兩個接收和發送指示狀態燈,此外用了一個叫MAX3232 的晶元,那它是用來實現什麼的呢?首先我們要知道計算機上的串口是具有RS-232 標準的串列介面,而RS-232 的標准中定義了其電氣特性:高電平「1」信號電壓的范圍為-15V~-3V,低電平「0」
信號電壓的范圍為+3V~+15V。可能有些讀者會問,它為什麼要以這樣的電氣特性呢?這是因為高低電平用相反的電壓表示,至少有6V 的壓差,非常好的提高了數據傳輸的可靠性。由於單片機的管腳電平為TTL,單片機與RS-232 標準的串列口進行通信時,首先要解決的便是電平轉換的問題。一般來說,可以選擇一些專業的集成電路晶元,如圖中的MAX3232。MAX3232 晶元內部集成了電壓倍增電路,單電源供電即可完成電平轉換,而且工作電壓寬,3V~5.5V 間均能正常工作。其典型應用如圖中所示,其外圍所接的電容對傳輸速率有影響,在試驗套件中採用的是0.1μF。
值得一提的是MAX3232 晶元擁有兩對電平轉換線路,圖中只用了一路,因此浪費了另一路,在一些場合可以將兩路並聯以獲得較強的驅動抗干擾能力。此外,我們有必要了解圖中與計算機相連的DB-9 型RS-232的引腳結構(見圖2)。
圖2 DB-9連接器介面圖
其各管腳定義如下(見表4)。
表4 DB-9型介面管腳定義
三、程序設計
本講設計實常式序如下:
#include "AT89X52.h" (1)
void Init_Com(void) ( 2)
{
TMOD = 0x20; ( 3)
PCON = 0x00; ( 4)
SCON = 0x50; ( 5)
TH1 = 0xE8; ( 6)
TL1 = 0xE8; ( 7)
TR1 = 1; ( 8)
}
void main(void) ( 9)
{
unsigned char dat; ( 10)
Init_Com(); ( 11)
while(1) ( 12)
程序詳細說明:
(1)頭文件包含。
(2)聲明串口初始化程序。
(3)設置定時器1 工作在模式2,自動裝載初值(詳見第二講)。
(4)SMOD 位清0,波特率不加倍。
(5)串列口工作在方式1,並允許接收。
(6)定時器1 高8 位賦初值。波特率為1200b/s(7)定時器1 低8 位賦初值。
(8)啟動定時器。
(9)主函數。
(10)定義一個字元型變數。
(11)初始化串口。
(12)死循環。
(13)如果接收到數據。
(14)將接收到的數據賦給之前定義的變數。
(15)將接收到的值輸出到P0 口。
(16)對接收標志位清0,准備再次接收。
(17)將接收到的數據又發送出去。
(18)查詢是否發送完畢。
(19)對發送標志位清0。
四、調試要點與實驗現象
接好硬體,通過冷啟動方式將程序所生成的。hex文件下載到單片機運行後,打開串口調試助手軟體,設置好波特率1200,復位單片機,然後在通過串口調試助手往單片機發送數據(見圖3),可以觀察到在接收窗口有發送的數據顯示,此外電路板上的串列通信指示燈也會閃爍,P0 口所接到LED 燈會閃爍所接收到的數據。
圖3 串口軟體調試界面
另外串口調試助手軟體使用時應注意的是,如果單片機開發板採用串口下載而且和串口調試助手是使用同一串口,則在打開串口軟體的同時不能給單片機下載程序,如需要下載,請首先點擊「關閉串口」,做發送實驗的時候,注意如果選中16 進制發送的就是數字或者字母的16 進制數值,比如發送「0」,實際接收的就應該是0x00,如果不選中,默認發送的是ASCII 碼值,此時發送「0」,實際接收的就應該是0x30,這點可以通過觀察板子P0 口上的對應的LED 指示出來。
五、總結
本講介紹了單片機串口通信的原理並給出了實例,通過該講,讀者可以了解和掌握51 單片機串口通信的原理與應用流程,利用串口通信,單片機可以與計算機相連,也可以單片機互聯或者多個單片機相互通信組網等,在實際的工程應用中非常廣泛。從學習的角度來說,熟練的利用串口將單片機系統中的相關信息顯示在計算機上可以很直觀方便的進行調試和開發。
❸ MSP430與PC機之間的RS232串口通信電路如何搭建
MSP430 串口 介面電平?
PC機串口 是標准RS232串口
介面電平一致,可以直接相連
否則 就必須要轉換!
請看 武漢鴻偉光電E232TTL RS232/TTL電平無源轉換器
❹ 什麼是串口通信
串列介面是一種可以將接受來自CPU的並行數據字元轉換為連續的串列數據流發送出去,同時可將接受的串列數據流轉換為並行的數據字元供給CPU的器件。
一般完成這種功能的電路,我們稱為串列介面電路。
串口按位(bit)發送和接收位元組。盡管比按位元組(byte)的並行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。它很簡單並且能夠實現遠距離通信。
(4)串口通訊電路擴展閱讀:
串口通信的結構:
串口通信是指外設和計算機間,通過數據信號線 、地線、控制線等,按位進行傳輸數據的一種通訊方式。
這種通信方式使用的數據線少,在遠距離通信中可以節約通信成本,但其傳輸速度比並行傳輸低。
串口是計算機上一種非常通用的設備通信協議。大多數計算機(不包括筆記本電腦)包含兩個基於RS-232的串口。串口同時也是儀器儀表設備通用的通信協議;
很多GPIB兼容的設備也帶有RS-232口。同時,串口通信協議也可以用於獲取遠程採集設備的數據。
❺ 串口電路的作用是什麼
http://www.avrvi.s.e.cn/start/guide_avr_hardware_design.html
http://www.eefocus.com/html/06-12/061002576847.shtml
http://www.laogu.com/wz_2982.htm
❻ 485通訊與串口通訊區別
一、應用場景的區別
1、485通訊適用於多主機/驅動器工業環境。主要包括:過程自動化、工廠自動化、HVAC、安防、電機控制、運動控制。
2、串口通訊用於計算機周邊,如實現計算機相距不遠的「人-機」交換設備和串列存儲的外部設備如終端、列印機、邏輯分析儀、磁碟等。
(6)串口通訊電路擴展閱讀:
介面標准
一、485通訊
1、平衡傳輸
RS-422、RS-485與RS-232不一樣,數據信號採用差分傳輸方式,也稱作平衡傳輸,它使用一對雙絞線,將其中一線定義為A,另一線定義為B。
2、RS-422電氣規定
由於接收器採用高輸入阻抗和發送驅動器比RS232更強的驅動能力,故允許在相同傳輸線上連接多個接收節點,最多可接10個節點。即一個主設備,其餘為從設備,從設備之間不能通信,所以RS-422支持點對多的雙向通信。
RS-422四線介面由於採用單獨的發送和接收通道,因此不必控制數據方向,各裝置之間任何必須的信號交換均可以按軟體方式或硬體方式實現。
3、RS485電氣規定
由於RS-485是從RS-422基礎上發展而來的,所以RS-485許多電氣規定與RS-422相仿。如都採用平衡傳輸方式、都需要在傳輸線上接終端電阻等。RS-485可以採用二線與四線方式,二線制可實現真正的多點雙向通信。
而採用四線連接時,與RS-422一樣只能實現點對多的通信,即只能有一個主設備,其餘為從設備,但它比RS-422有改進,
無論四線還是二線連接方式匯流排上可多接到32個設備。
4、RS-422與RS-485
RS-422可支持10個節點,RS-485支持32個節點,因此多節點構成網路。網路拓撲一般採用終端匹配的匯流排型結構,不支持環形或星形網路。
二、串口通訊
1、實現數據格式化
因為來自CPU的是普通的並行數據,所以,介面電路應具有實現不同串列通信方式下的數據格式化的任務。在非同步通信方式下,介面自動生成起止式的幀數據格式。在面向字元的同步方式下,介面要在待傳送的數據塊前加上同步字元。
2、進行串-並轉換
串列傳送,數據是一位一位串列傳送的,而計算機處理數據是並行數據。所以當數據由計算機送至數據發送器時,首先把串列數據轉換為並行數才能送入計算機處理。因此串並轉換是串列介面電路的重要任務。
3、控制數據傳輸速率
串列通信介面電路應具有對數據傳輸速率—波特率進行選擇和控制的能力。
4、進行錯誤檢測
在發送時介面電路對傳送的字元數據自動生成奇偶校驗位或其他校驗碼。在接收時,介面電路檢查字元的奇偶校驗或其他校驗碼,確定是否發生傳送錯誤。
5、進行TTL與EIA電平轉換
CPU和終端均採用TTL電平及正邏輯,它們與EIA採用的電平及負邏輯不兼容,需在介面電路中進行轉換。
6、提供EIA-RS-232C介面標准所要求的信號線
遠距離通信採用MODEM時,需要9根信號線;近距離零MODEM方式,只需要3根信號線。這些信號線由介面電路提供,以便與MODEM或終端進行聯絡與控制。
❼ 請問RS232和RS485串口電路一樣嗎 ,怎麼接線的啊
都是 串口通信,應用場合不同:
RS232 -3線全雙工,點對點通信,傳輸距離 25米以內。
RS485 -2線半雙工,點對多主從通信,傳輸距離可達 1200米以上
RS485 -4線全雙工,主從通信,傳輸距離可達 1200米以上
由於工業現場通信節點多,位置分散,通信距離遠,要求使用最少的線材完成相應的通信任務。根據相關的要求,人們開發出利用兩根導線實現多節點互聯的EIA RS-485匯流排標准。RS-485匯流排採用差分平衡電路,即一條導線上的電壓是另外一條導線的電壓的取反值,接收器輸入電壓為兩根導線電壓的差值。由於其在兩條線路上傳遞的是大小相同,方向相反的電流,而雜訊電壓對於線路的影響都是同時出現,兩條線路的雜訊電壓相互抵消,極大的削弱雜訊的影響。差分平衡電路不受節點之間的地平電壓差的影響,EIA 485沒有規定引腳定義,信號功能,只需保持兩根信號線相鄰,在同一個雙絞線中,引腳A,B不能互換就可以了,所以在工業現場使用過程中,RS-485介面沒有標準的規范,有可能是DB9,也有可能是RJ45/RJ11,但是用的最多的還是工業接線端子。由於RS-485匯流排採用差分平衡電路,極大的抑制雜訊干擾,有極強的抗共模干擾能力,輸入電壓檢測靈敏度為200毫伏(電壓信號可以在極遠距離進行恢復),使得RS-485的傳輸距離可以達到1200米(傳輸速率在110Kbps情況下)。最大傳輸速率10Mbps(傳輸距離12米)。RS-485支持多點通信,多個驅動器和接收器共享一條信號通道,在半雙工連接模式下,只能有一個驅動器工作,多個驅動器同時啟用,會產生線競爭(導致通信失敗),同時容易產生大電流,可能導致晶元燒毀。一般485晶元建議使用限流和過熱關閉功能保護晶元。
RS-485看:
http://ke..com/view/542681.htm
RS-232介面有DB25介面和DB9介面兩種,現在普通使用的基本上都是DB9介面,DB25介面基本上不再使用,DB9介面定義如下(1.載波檢測,2.接收數據,3.發送數據,4.數據終端准備就緒,5.信號地,6.數據機就緒,7.請求發送,8.允許發送,9.振鈴提示),RS-232串口相互連接分為通過Modem連接和無Modem連接,由於乙太網,RS-485匯流排,CAN匯流排等匯流排的普及,通過Modem連接做較長距離通信已經基本上不再使用。無Modem連接即直接連接則分為握手連接和無握手連接,無握手連接直接使用2,3,5三個針腳就可以使用,而握手連接則是必須使用請求發送,允許發送,准備就緒等信號,握手連接又稱全信號連接。由於RS-232使用單端非差分電路,多條線路共用一個接地線,長距離傳輸時,不同節點的接地線電平差異可能會達到幾伏,有可能導致信號的誤讀,從而導致RS-232傳輸距離不能超過15米,傳輸速率不能超過110Kbps.
RS-232看:
http://ke..com/view/112004.ht
❽ 51單片機和計算機之間實現串口通信的電路圖
串口通訊參考程序如下:
來源:深入淺出AVR單片機
#include<reg51.h>
unsignedcharUART_RX;//定義串口接收數據變數
unsignedcharRX_flag;//定義穿行接收標記
/*********************************************************************************************
函數名:UART串口初始化函數
調用:UART_init();
參數:無
返回值:無
結果:啟動UART串口接收中斷,允許串口接收,啟動T/C1產生波特率(佔用)
備註:振盪晶體為12MHz,PC串口端設置[4800,8,無,1,無]
/**********************************************************************************************/
voidUART_init(void){
EA=1;//允許總中斷(如不使用中斷,可用//屏蔽)
ES=1;//允許UART串口的中斷
TMOD=0x20;//定時器T/C1工作方式2
SCON=0x50;//串口工作方式1,允許串口接收(SCON=0x40時禁止串口接收)
TH1=0xF3;//定時器初值高8位設置
TL1=0xF3;//定時器初值低8位設置
PCON=0x80;//波特率倍頻(屏蔽本句波特率為2400)
TR1=1;//定時器啟動
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口接收中斷處理函數
調用:[SBUF收到數據後中斷處理]
參數:無
返回值:無
結果:UART串口接收到數據時產生中斷,用戶對數據進行處理(並發送回去)
備註:過長的處理程序會影響後面數據的接收
/**********************************************************************************************/
voidUART_R(void)interrupt4using1{//切換寄存器組到1
RI=0;//令接收中斷標志位為0(軟體清零)
UART_RX=SBUF;//將接收到的數據送入變數UART_data
RX_flag=1;//標記接收
//用戶函數內容(用戶可使用UART_data做數據處理)
//SBUF=UART_data;//將接收的數據發送回去(刪除//即生效)
//while(TI==0);//檢查發送中斷標志位
//TI=0;//令發送中斷標志位為0(軟體清零)
}
/**********************************************************************************************/
/*********************************************************************************************
函數名:UART串口發送函數
調用:UART_T(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_T(unsignedcharUART_data){//定義串口發送數據變數
ES=0;//禁止穿行中斷
SBUF=UART_data;//將接收的數據發送回去
while(TI==0);//檢查發送中斷標志位
TI=0;//令發送中斷標志位為0(軟體清零)
ES=1;//打開穿行中斷
}
/*********************************************************************************************
函數名:UART串口發送字元串函數
調用:UART_S(?);
參數:需要UART串口發送的數據(8位/1位元組)
返回值:無
結果:將參數中的數據發送給UART串口,確認發送完成後退出,採用非中斷方式
備註:
/**********************************************************************************************/
voidUART_S(unsignedchar*str)
{
while(1)
{
if(*str=='