RS-485總線收發(fā)實驗要點_第1頁
RS-485總線收發(fā)實驗要點_第2頁
RS-485總線收發(fā)實驗要點_第3頁
RS-485總線收發(fā)實驗要點_第4頁
RS-485總線收發(fā)實驗要點_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、R RS-48總線收發(fā)實驗在本章節(jié),我們將介紹RS-48鬼線的使用。本實驗一共需要兩塊神舟IV號STM32開發(fā) 板,一塊作為RS485勺發(fā)送端,另一塊作為RS485勺接收端,接收總線上的數(shù)據(jù)。本節(jié)分為 如個音吩:1 RS-48總線實驗的意義與作用2實驗原理3軟件設(shè)計4硬件設(shè)計5下載與驗證6實驗現(xiàn)象意見乍用前面兩個例程,我們分別講解了串口 print餃驗和串口中斷收發(fā)實驗,對RS23肆口原理 及其應(yīng)用有了一定的了解,但是由于RS23腰口標準出現(xiàn)較早,難免有不足之處,主要有以 下四點:(1)接口的信號電平值較高,易損壞接口電路的芯片,又因為與TTL電平不兼容故需使 用電平轉(zhuǎn)換電路方能與TTL電路連

2、接。(2)傳輸速率較低,在異步傳輸時,波特率為20Kbps(3)接口使用一根信號線和一根信號返回線而構(gòu)成共地的傳輸形式,這種共地傳輸容易 產(chǎn)生共模干擾,所以抗噪聲干擾性弱。(4)傳輸距離有限,最大傳輸距離標準值為5嘮尺,實際上也只能用在5瞇左右。針又RS23兼口的不足,于是就不斷出現(xiàn)了一些新的接口標準,RS-48僦是其中之一, 它具有以下特點:(1) RS-485勺電氣特性:邏輯"1"以兩線間的電壓差為+ (2 6) V表示;邏輯"0"以兩線 間的電壓差為-(2 6) V表示。接口信號電平比RS-232條低了,就不易損壞接口電 路的芯片,且該電平與TTL

3、電平兼容,可方便與TTL電路連接。(2) RS-485勺數(shù)據(jù)最高彳輸速率為10Mbps (實際取決于RS48破口芯片和電路)。(3) RS-48菠口是采用平衡驅(qū)動器和差分接收器的組合,抗共模干能力增強,即抗噪聲 性好。(4) RS-485口的最大傳輸距離標準值為400吸尺,實際上可達300瞇,另外RS-23端 口在總線上只允許連接1個收發(fā)器,即單站能力。而RS-48破口在總線上是允許連 接多達12階收發(fā)器。即具有多站能力,這樣用戶可以利用單一的RS-48族口方便地 建立起設(shè)備網(wǎng)絡(luò)。(5)因為RS48啜口組成的半雙工網(wǎng)絡(luò),一般只需二根連線(我們一般叫AB線),所以 RS48啜口均采用屏蔽雙絞線傳

4、輸。基于以上原因,RS48總線在工業(yè)控制行業(yè)應(yīng)用非常廣泛,適合分散的,遠距離(上千 米)的多點通信,這是RS23所不能實現(xiàn)的,因此,通過使用STM32開發(fā)板實現(xiàn)RS485勺通 信,我們可以了解RS48鬼線的應(yīng)用和基本原理,搭建RS4851信網(wǎng)絡(luò)。熨刖RS-485總線簡介在數(shù)據(jù)通信,計算機網(wǎng)絡(luò)以及分布式工業(yè)控制系統(tǒng)當(dāng)中,經(jīng)常需要使用串行通信來實現(xiàn) 數(shù)據(jù)交換。目前,有RS-232,RS-485,RS-422種接口標準用于串行通信。RS-23愛最早的串 行接口標準,在短距離15M)較低波特率串行通信當(dāng)中得到了廣泛應(yīng)用。其后針又RS-232接口標準的通信距離短,波特率比較低的狀況,在RS-23裝口標準

5、的基礎(chǔ)上又提出了RS-422 接口標準,RS-48駿口標準來克服這些缺陷。下面詳細介紹RS-232,RS-422,RS-485 口標準。RS-23肆口標準是種在低速率串行通訊種增加通訊距離的單端標準。RS-23深取不平 衡傳輸方式,即單端通訊。其收發(fā)端的數(shù)據(jù)信號都是相對于地信號的。所以其共模抑制能力 差,再加上雙絞線的分布電容,其傳輸距離最大約為15M,最高速率為20KBPS,且其只能 支持點對點通信。針對RS-23邪口標準的局限性,人們又提出了 RS-422,RS-48轉(zhuǎn)口標準。RS-485/42深 用平衡發(fā)送和差分接收方式實現(xiàn)通信:發(fā)送端將串行口的TTL電平信號轉(zhuǎn)換成差分信號A,B 兩路輸

6、出,經(jīng)過線纜傳輸之后在接收端將差分信號還原成TTL電平信號。由于傳輸線通常使 用雙絞線,又是差分傳輸,所以又極強的抗共模干擾的能力,總線收發(fā)器靈敏度很高,可以 檢測到低至200mV電壓。故傳輸信號在千米之外都是可以恢復(fù)。RS-485/42最大的通信距離 約為1219M,最大傳輸速率為10Mb/S,傳輸速率與傳車距離成反比,在100Kb/S勺傳輸速率 下,才可以達到最大的通信距離,如果需傳輸更長的距離,需要加48升繼器。RS-48睬用半雙工工作方式,支持多點數(shù)據(jù)通信。RS-48總線網(wǎng)絡(luò)拓撲一般采用終端 匹配的總線型結(jié)構(gòu)。即采用一條總線將各個節(jié)點串接起來,不支持環(huán)形或星型網(wǎng)絡(luò)。如果需 要使用星型結(jié)

7、本勾,就必須使用485中繼器或者48深線器才可以。RS-485/42總線一般最大支 才132個節(jié)點,如果使用特制的48心片,可以達1 M2階或者25孫節(jié)點,最大的可以支持到 40'節(jié)點。日A RS-485標準在自動化領(lǐng)域,隨著分布式控制系統(tǒng)的發(fā)展,迫切需要一種總線能適合遠距離的數(shù)字通 信。在RS-422標準的基礎(chǔ)上,EI喊出了一種支持多節(jié)點、遠距離和接收高靈敏度的RS-485總統(tǒng)標準。RS-48標準采有用平衡式發(fā)送,差分式接收的數(shù)據(jù)收發(fā)器來驅(qū)動總線,具體規(guī)格要求:1 .接收器的輸入電阻RINH2kQ2 .驅(qū)動器能輸出立V的共模電壓3輸入端的電容學(xué)0pF4在節(jié)點數(shù)為3好,酉叫了 120Q

8、的終端電阻的情況下,驅(qū)動器至少還能輸出電壓1.5V (終端電阻的大小與所用雙絞線的參數(shù)有關(guān))5.接收器的輸入靈敏度為200mV (即(V+) - (V-)出.2V,表示信號"0" (V+)-(V-) M0.2V,表示信號甘因為RS-485勺遠距離、多節(jié)點(32個)以及傳輸線成本低的特性,使得EIA RS-48峨為 工業(yè)應(yīng)用中數(shù)據(jù)傳輸?shù)氖走x標準。影響RS-48噫線通訊速度和通信可靠性的三個因素1、在通信電纜中的信號反射在通信過程中,有兩種信號因?qū)е滦盘柗瓷洌鹤杩共贿B續(xù)和阻抗不匹配。阻抗不連續(xù),信號在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號在這個地方就會 引起反射,這種信號

9、反射的原理,與光從一種媒質(zhì)進入另一種媒質(zhì)要引起反射是相似的。消 除這種反射的方法,就必須在電纜的末端跨接一個與電纜的特性阻抗同樣大小的終端電阻, 使電纜的阻抗連續(xù)。由于信號在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接 一個同樣大小的終端電阻。從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性阻抗相匹配的終端電阻,就再 也不會出現(xiàn)信號反射現(xiàn)象。但是,在實現(xiàn)應(yīng)用中,由于傳輸電纜的特性阻抗與通訊波特率等 應(yīng)用環(huán)境有關(guān),特性阻抗不可能與終端電阻完全相等,因此或多或少的信號反射還會存在。引起信號反射的另個原因是數(shù)據(jù)收發(fā)器與傳輸電纜之間的阻抗不匹配。這種原因弓I起的反射,主要表現(xiàn)在通訊線路處在空

10、閑方式時,整個網(wǎng)絡(luò)數(shù)據(jù)混信號反射對數(shù)據(jù)傳輸?shù)挠绊?,歸根結(jié)底是因為反射信號觸發(fā)了接收器輸入端的比較器, 使接收器收到了錯誤的信號,導(dǎo)致CRC驗錯誤或整個數(shù)據(jù)幀錯誤。要減弱反射信號對通訊線路的影響,通常采用噪聲抑制和加偏置電阻的方法。在實際應(yīng) 用中,對于比較小的反射信號,為簡單方便,經(jīng)常采用加偏置電阻的方法。2、在通訊電纜中的信號衰減第二個影響信號傳輸?shù)囊蛩厥切盘栐陔娎|的傳輸過程中衰減。一條傳輸電纜可以把它看出由分布電容、分布電感和電阻聯(lián)合組成的等效電路,電纜的分布電容C主要是由雙絞線的 兩條平行導(dǎo)線產(chǎn)生。導(dǎo)線的電阻在這里對信號的影響很小,可以忽略不計。信號的損失主要 是由于電纜的分布電容和分布電

11、感組成的LC低通濾波器。3、在通訊電纜中的純阻負載影口向通訊性能的第三個因素是純阻性負載(也叫直流負載)的大小。這里指的純阻性負 載主要由終端電阻、偏置電阻和RS-48敢發(fā)器三者構(gòu)成。在敘述EIA RS-48覬范時曾提到過RS-48國區(qū)動器在帶了32個節(jié)點,配置了 150終端電 阻的情況下,至少能輸出1.5V勺差分電壓。一個接收器的輸入電阻為12kQ, RS-485;區(qū)動器 的負載能力為:RL=32個輸入電阻并聯(lián) |外終端電阻=(12000/32)X (150)/ (12000/32) + (150/2) 51.7Q現(xiàn)在比較常用的RS-4851動器有MAX485、DS3695 MAX1488/

12、1489以及和利時公司使用的SN75176A/陰,其中有的RS-4851動器負載能力可以達到20Q。在不考慮其它諸多因 素的情況下,按照驅(qū)動能力和負載的關(guān)系計算,一個驅(qū)動器可帶節(jié)點的最大數(shù)量將遠遠大于 32個。在通訊波特率比較高的時候,在線路上偏置電阻是很有必要的。它的作用是在線路進入 空閑狀態(tài)后,把總線上沒有數(shù)據(jù)時(空閑方式)的電平拉離0電平。這樣一來,即使線路中 出現(xiàn)了比較小的反射信號或干擾,掛接在總線上的數(shù)據(jù)接收器也不會由于這些信號的到來而誤動作。在實際應(yīng)用中,RS-48總線加偏置電阻有兩種方法:(1)把偏置電阻平衡分配給總線上的每一個收發(fā)器。這種方法給掛接在RS-48總線上 的每一個收

13、發(fā)器加了偏置電阻,給每一個收發(fā)器都加了一個偏置電壓。(2)在一段總線上只用一對偏置電阻。這種方法對總線上存在大的反射信號或干擾信號比 較有效。值得注意的是偏置電阻的加入,增加了總線的負載。神舟IV號RS-48政驗原理本實驗主要是利用兩塊神舟IV號STM3叫發(fā)板搭建一個簡單的RS-48捌絡(luò),其中一塊 神舟IV號彳為RS-48眼收端,另一塊神舟IV號彳為RS-48吸送端。而PC主要用于顯示神舟 IV號通過串口 1打印的提示信息。網(wǎng)絡(luò)示意圖如下:神舟】V號一AKS463lElJI JRS485iEL: JI :神舟IV號一B其中神舟IV號-B作為RS-485勺發(fā)送端,循環(huán)發(fā)送數(shù)據(jù)到RS-48鬼線上,

14、而神舟IV號-A 作為RS-485勺接收端,當(dāng)搠攵到RS-48鬼線上的數(shù)據(jù),收到完整的數(shù)據(jù)后,通過串口 1將數(shù) 據(jù)發(fā)送到PO。在神舟IV號STM32開發(fā)板中,RS-485g口與串口 2白RS23比平接口進行復(fù)用,通過跳 線選擇即可以選擇神舟IV號的串口2連接至URS-23兼口或者RS-485g口。以下為RS-48喂口 芯片及其外圍電路原理圖。485圖表1 RS485原理圖神舟IV號開發(fā)板載有RS48勖理芯片,它與處理器的UART2連接,與串口2復(fù)用,可通過跳線選擇支持RS-23兼口或Ry-48喉口,跳線定義如下:JP4I由口2功能先擇1-2串 口2 RS-48援口2-3 (默認)串 口2 RS

15、-23芨口神舟IV號默認是安裝了RS-48啜口的120歐終端匹配電阻。對應(yīng)上圖的R43,請依據(jù)實 際應(yīng)用選擇是否安裝此匹配電阻。上圖中U3為RS-485g口芯片SP3485 SP348是Sipe於司推出的RS-485攵發(fā)器,它具有 嚇特性:工作電源3.3V;兼容5V電平邏輯發(fā)送/接收使能控制總線節(jié)點最大支才抖好具有輸出短路保護電路芯片的邏輯框圖如下:/R訝DDE管腳控制RS-485勺收發(fā)使能控制。在神舟IV號中,這兩個管腳與處理器的PD7管腳連接,由PD冷腳控制神舟IV號STM32開發(fā)板的RS485乍為發(fā)送端還是接收端。查看SP3485 RS-485攵發(fā)器.pdf可知,當(dāng)D7W出高電平, 此時

16、SP348哈片的2腳/RE), 3腳(DE)都為高電平。SP3485E作與發(fā)送模式。邏輯關(guān)系如下表所示。IXBUISOL I PCI SREDE1)1LINE COMiniONR AX11 ,No Fault01X10No Faulti 0X0XXz zrtibfff L rrunsmU rusiciimt fruf/i TuMe當(dāng)PD碗出低高電平,此時SP348宓片的2腳(/RE) , 3腳(DE)都為低電平。SP3485 工作與接收模式。邏輯關(guān)系如下表所示。INPUTSOi l PUTSREDEA- gR00+0.2VP 100-0,2 V000Inputs Open110XzTubie

17、2 Receive htnL titui Truth Table另外,上圖中的R4對作用是作用RS485勺終端匹配電阻,在RS-48的線網(wǎng)絡(luò)中,終端匹配電阻主要作用是使總線的阻抗連續(xù),減小信號的反射, 提高信號的傳輸質(zhì)量,一般RS485網(wǎng)絡(luò)的終端匹配電路只需要在總線的最遠端的節(jié)點并一個即可,其他接點不需要安裝此匹配電阻。在神舟IV號STM32開發(fā)板中,默認終端匹配電阻都是安裝的(對應(yīng)原理圖的R43),請 依據(jù)實際情況,選擇安裝或去掉此電阻。在軟件設(shè)計中,我們先來了解關(guān)于ST庫函數(shù)中配置串口參數(shù)。關(guān)于STM32白USART的 庫函數(shù)實現(xiàn), 主要是在 STM32F10x_StdPeriph_Dri

18、ver 庫 的"stm32f10x_usart.c”和 "stm32f10x_usart.h'兩個文件里。以V3.3.0版本的庫為例,這兩個文件位于 "STM32F10x_StdPeriph_Lib_V330LibrariesStm32F10x_StdPeriph_Drive"目錄的"srC'和"inc"文件夾里:在本實驗中,程序運行以后,首先通過串口1打印提示信息,提示通過板上的USER的USER2K鍵設(shè)置神舟IV號為發(fā)送端或者接收端,設(shè)置完成后,發(fā)送端周期性的發(fā)送數(shù)據(jù)到RS-485絡(luò)上(神舟IV號的RS4

19、85攵發(fā)器與處理器的串口 2連接),而接收端等待RS-485 絡(luò)上的數(shù)據(jù),并將接收到的完整數(shù)據(jù)通過串口 1打印出來。因此本實驗需要用的資源有串口 1,串口2,按鍵,LED, RS485攵發(fā)器。GPIO初始化在本實現(xiàn)中,按鍵,LED燈以及串口,RS-485攵發(fā)器方向控制等都是有處理器GPIO隹 接的,因此在使用之前,我們需要對相關(guān)白GPIOU始化。注意:由于神舟IV號開發(fā)板的RS-485攵發(fā)器方向控制管腳與LED4的相同,所以初始化LED4就是初始化RS-485攵發(fā)器方向控制管腳。GPIO_KEY_Config()函數(shù)完成與按鍵連接的GPIO初始化。* Update春 www. axnjri&#

20、165;ftLE. oom壽帝 中青 *葉卡古甫/帝 擊汗聲青全升守* 方* 雷*全片聲才曹*k# h米 寶翁薩寧* 才 酎十左 育去宗 ”哀*?GPIO_KEY_Config firfl.lcTJ IGPI _ in_itTypeI>?t 6riO_TnitStnic tui?e ;/* Cojiflgura KET1 fiutrtou */rcEhHFF 2fc ripfi cl oik cmd ( rc c_Kfri f enable);GPTO_TnAi:Sti:tiai:urc . dPTO_Jde = GPTO_Afcide_ TFD/ GFXtTjnItStructujre

21、 . GFJFFiii = GPTqjKETl;- QPIOInlt (GPIO KEY1 PO府,&GPIO JnitStruo tuit?);/ Configure KEY2 Button #/JSC J月PR3F& 2-ipli Cl ock Cad fJtCC_JBEF2, WASZE) /gpio_mitiitiiicture. gpiq motie - Grrq_ft»tfe rPTJ; GPXrnitSltrnctuTe , GPKTpiu - iSPT<<K£Y5; GEkTirIt (GPIO_KEY2_POR7, &G

22、FIO_JuTtt±TJcture) f/* Conf-iguro KZY3 ButtonKGf2Fe rlpf Ci OCJt Cmri (HCl'_KIfY3 r VMARLE)GPXO_TnlLStrnicLurc . GPTO_Wbde = GPTO_bt>de_IPV;GrzcFrnitstnfcturt?. GFitTpin = gpioJket3;GPI<r Tn It (GPIO_ K£73_ros f J GFIOIni t St Jtn c tuiJ ;/* Conf-ignma KE5T4 8七七口1】酎/RCi_APB2Ferip

23、ftCi 口心* Elrad fJtCC_J?E?<, EMViBZE);GRiiLlniirStrrHEirijre-tJFTJrtDcJe = m即;CFZiTTh-iiSirraEtu . CPTPin 工 PTCKEY4;GPIQZnl t (G£IO_KEY4_PO/ij f 4 <;FXO_JnifrtnJ c tux9 );j ? end &FFQ KEY Config ?串口 1 print實現(xiàn)在實驗中,串口傭于打印程序提示信息和RS-48駿收/發(fā)送的數(shù)據(jù),因此,我們初始化 串口 1,作為printf函數(shù)輸出使用。關(guān)于printf的實現(xiàn)可參見串口

24、1 print長驗詳細說明。主 要代碼如下:首先,完成串口發(fā)送單個字節(jié)的函數(shù),在庫函數(shù)模板的main.沖一般會有如下宏定義, 這是為了兼容不同的編譯平臺。_GVK_/* th GCC/EAISONANCE, siisll printf Copt ion U> L 7 j?ktr -> L r Jbr ari as -> 5<a JI prtntf f«t ta T V*aj ca?5 _TO_ptitc/iai,Q */jeffre PUTCHAR_PfiOTOTYPE Ynt _i o_outchar ( i nt ch)>PUfOid也FRO出TYP

25、E 7P?t fpctcCTnt ch, FILE "fjf&Kijf /* _GNLC_ */我們關(guān)注串口的發(fā)送函數(shù),通過此函數(shù),我們發(fā)送一個字符出去。PUTCHAR_PROTOTYPE( 一/* Plsee you*ation of fputc h白re */* e.g. write a character to the USART */USART_SendData(pvAL cowif ge_t)/*發(fā)送一字符函期/* Loop until the end of transmission */wlilie (USART_GetFlaqStatus (EVAL_COM 1

26、 f USART PLAG_TC) = RESET 士等待發(fā)送完成士/return ch;其中,"USART_SendData(EVAL_COM1,(uint8_t)ch);"是"stm32f10x_usaitc庫文件 中的字符發(fā)送函數(shù),然后是while循環(huán)等待串行數(shù)據(jù)發(fā)送完成, ”(USART_GetFlagStatus(EVAL_COM1,USART_FLAG_TC)=RESET )”。如果不等待發(fā) 送結(jié)束就返回,則調(diào)用字符串發(fā)送函數(shù)中print時,如果上一次發(fā)送的字節(jié)在寄存器中還沒有發(fā)送結(jié)束,此時再次寫同樣的發(fā)送寄存器會將剛才的數(shù)據(jù)四掉,接收側(cè)將得不到預(yù)期的

27、 數(shù)據(jù)。接下來,我們再來看USART相關(guān)的結(jié)構(gòu)體,主要是用來配置串口的波特率,數(shù)據(jù)位, 奇偶校驗位等信息等。 «士 USART init. struat.ure definition +/ typedef struct I u號rrt BaudKate; uL6 USART WordLength; uIFSARTs;U16 USARTParity?U16 USFkRT Mode ;uL6 TSART_Hardwa.i:eFlcjwCorLtrol;y usART_initiypeDef ;這是關(guān)于USART_InitTypeDef吉構(gòu)體定義。了解了庫函數(shù)關(guān)于USART的一些相關(guān)的函

28、數(shù),結(jié)構(gòu)體定義后,我們回到本實驗中。本實驗中直接調(diào)用庫函數(shù)進行設(shè)計。在本實驗的主 程序中,需要對USART_InitTypeDef吉構(gòu)體進行初始化設(shè)置,配置串口的基本參數(shù),具體如 下所示:/* USART1 and USART2 configured 鼻鼻 followi -BaudRatg = 9600 bud -Word Length = 8 日上光號 -One Stop Bit -No parity-Hdrdwa.re flow e&ni: rol disabled (RTS and CT5 signals)-Receive and transmit enabledCFSt S

29、true irure. U S AR T _B a u d Rat e = 11S200 ?*設(shè)置波特率為:L0口*,CF.VART2TnitStructure. USART_WcrdLength = USART_WordLengt h_Bb; /*設(shè)置數(shù)據(jù)也為E*/ Cf.SAFiIaitStructUi-B. USART_5topHit S = UEAET_StopBitS_l;/* 設(shè)置序止位為工位*,usARTinitstrHctui-e, USARTParity = usART_Parity_Ho;/* 羌彎隔核驍*/USARTfol = USART H后rdwareFlowCont

30、 rol None無硬件流控*/tARTTriitfitrucirui-e. USAET 2M0de = LfSART_Mode Rx | USART Mode Tx; /*發(fā)送奔口稹收*/J圮直串口 1寸DSART_Tnit (USART 1, £USART_ZnitStmetore);到這里,我們就可以像一般白C語言一樣,非常方便的使用printf函數(shù)來往串口 1輸出提 示信息了。串口2 RS48其現(xiàn)在神舟IV號STM32開發(fā)板中,串口 2與RS48眼口連接,兩塊神舟IV號STM32開發(fā)板通 過RS485!信。在軟件程序設(shè)計時,基本上,除了需要控制RS485勺收發(fā)方向外,還是和通

31、 用的串口2收發(fā)控制一樣設(shè)計,在本實驗中,我們通過中斷的方式進行串口的收發(fā),首先我 們設(shè)置串口中斷模式和優(yōu)先級,這個主要是NVIC_Configuration(兩數(shù)實現(xiàn)的,相關(guān)代碼如 下:void NVIC_Conflguratlon(void) ( -NV I C_I nit Type De f NV IC Tn itst ruct ura;/* configure the nvic pr*amption Ptriority 日itw */MV IC Pr tor ItyC-roupConfig (NVTC_ P ric r it y Gr ou p_0);k 3nabl(s the USA

32、RT2 Intarriipt 卡/NVIC_ Tn it Structure . NYIC_IRQChannel = USART2_IRQri;NVic_rnit Btractura.MYic_iRQChann«lsubPriority = OjNVICI nit Struct lire . NVICIRQChannelCmd = ENABLE;NV 工C二lni?t (£hlVI C_I ni t St ructu;在使串口2之前,我們首先需要對串口參數(shù)進行配置,主要是酉叫串口的波特率,數(shù)據(jù)位,奇偶校驗位等信息等,具體代碼如下。a5-VilInit5tructure, U

33、SART BaudRatt = 9$口口;設(shè)置波特車為工工52口口*(JSAfiT2ZnjtStruature. US ART7Wo rdLengt h = JSAPT,耳口 rdLengt h.臼上;鍍菅數(shù)者, 位為曰*/trSARZijjfrJIfrructujfl. USART3StopBita - U9 ART_StopBits_l;,*該宣停上也為 1 煌土USART Pirity = USART Parity N心;,*無奇偶噎臉*CJSAJ?T_Tdit J!ti ucture. irSART_HardwareElowCon rcl = US ART_HarciwareE Icw

34、Cont rol_Ncn.e ; / */USARTZnitStructure. USART_Modfl = USART_Mode_RE | USART_Mode_TM;,*發(fā)送?口接收*/J*配置串口£*/USART_Itiit (USART2 t 匕 EWART_JnltStmctU2«);串口發(fā)送接收中斷服務(wù)程序到這里,我們已經(jīng)完成了串口的參數(shù)配置,由于我們設(shè)置串口2為中斷中斷收發(fā)模式, 正常情況下,當(dāng)串口產(chǎn)生發(fā)送或接收中斷時,將跳轉(zhuǎn)的對應(yīng)的中斷服務(wù)程序中。首先是頭文件的引用和外部變量的聲明:itdv. h h,ext&m IO u in tff_t TafC

35、oun teT;extern IQJ£xCounter;cxtiirj* uinti?_tTo Transfer/extern ui-nt8 t 詡>2工口苴七&胃口治?收&£在進入串串口中斷服務(wù)程序是stm32f10x_it.位件中的USART2_IRQHandler()函數(shù)實現(xiàn)???中斷服務(wù)程序以后,首先判斷是串口發(fā)送中斷還是串口接收中斷,如果是接收中斷,則將接收到的數(shù)據(jù)放入BUFFER,直到接收到的數(shù)據(jù)個數(shù)達到設(shè)定的個數(shù)或指針越界或者收 到'n"結(jié)束符,關(guān)閉串口接I攵中斷。T74'3rf USARl2_/RQHaiict

36、er (va id) iuiutRChj:;if (tiSART_GfftTTSt<itu,¥ (UtARrS, USART_IT_RXN£ M RESET)i 一/* Read one byte Ei口網(wǎng) the raasive d4tt-a*ZRx-Chr - fJSLAT_/Zeoiran4rt:e» (USART2);“界和他本將劉醺IT ( fftreownter < NfirofnafRxchr ;= r n J Jtf jRrcoun tsr+7 = i7SRr_fece i(VSAIT);> el se f jacBufforfN

37、brCtfBataToRsad-I =;JixCounter a Nbj-OiTn tnToRe-ad; if fRjcGcmuter = brOfDdtuTaBend) fRKBufferfRxcaunter - ,1;/* Qdsf/力/已 亡力已 VSAKT3! Fieneive intrjmpt 才/ USAFiT_TTCviiIig (USART2 f USART_TT_RXNE DTSAB,LE);/i ? and i± USr_tITVtntusiVKAr . . ?如果是發(fā)送中斷,則將BUFFER中的數(shù)據(jù)通過串口2發(fā)送出去,直到發(fā)送的數(shù)據(jù)個數(shù)達 到設(shè)定的個數(shù),關(guān)閉串口

38、接收中斷。±£ (UART_CifftITStt (USART2f UtSAKT_lT_TXE)R£:SET)/ Wrl te one jbyire 七口 the trans mi t data 工舊守工區(qū)亡白工-/ USABT_SiendIkit (USART2, Tufferl TxCountej* + H ;if fTrcouji ter ts=- fJbrO/Dat*1 To Transfer J (/*- Dlssitle the USART2 Transmit inter-mt 新/ USART_ITConfig (USART2USART_IT_TXE

39、, DISABLE);ISTM_EVAL_LEI>To qgl e (LED1);j ? end HSAfl32_J #r ?前面,我們完成了各資源接口模塊的初始化和參數(shù)配置,以及串口的中斷服務(wù)程序。主函數(shù)首先初始化串口和48公線:wvtc_C0ii fIgai tion ();/* KSARTx GDDJfdgrwzied as follow: - 加udW七& = 115200 baud - wpjctf ireogtji 二 8 Bits -由附。四亡日p Bit =to p ojri ty" - 加rthfaz flowr control(RTS aiid CT

40、S signals)- deceive 后岫d ti'usjwi t enabled7/*這君串口'刀s-"3垣信使用*/ /注替C即時應(yīng)的是串口士;血國對應(yīng)的是串mUSART_Trid t Stxuetu« . LrSARTBsf tJdRd tv - 9600;/* 設(shè)置鼓舞享用hs/le匯 njjtst nietHre, 口泅用匚的 rcfLe 網(wǎng)/th = usAKT_wt>itiLengtfj_O; /* 設(shè)置叁率位為8" uAJir rn j ttrac tw re. rJStARTitp£>fli tx 

41、1; H右西江口psi 七宇一工;八 線置停正檢為'位?USART2InitStiuature .USAHT2Parlty h U.SULRT_FaTi戶無畚康校觸fUjSART Tnd tStrut tu , tTSJART HardwdruFiowControZ HmdwciiFlouCcuitoi ;/*無硬件源控M/USAROrni twtmc tui . fJSART_MnriA HI 門田卻?工_卜出上裝送和樓jSTM_EVAL_£:QKrijb (COMt r &USART_rn i tStructure7;/* 設(shè)胃印口。RSf 32與SC期用使用*/

42、 /注素;3日對虎的裊主6:心例3#過附相出口USAftT_ In4£structure. USAftT_BaurfJ te 3 XlZQQ;/成直7君婚f惠初 15£t?0*/口客AR三 rnitStanucture. USAfWd jiJLenth - UiiAJ?y_Wbr JLen g thSb ;/* 短:置羲據(jù)位為8"U5ARl21711 fc Stiwc tuXt i irSAK05Li?pBi ts - UJSART_StC>pBlts_l/ /* 統(tǒng)M序上七彩切計/ usaro mi t strut tuie. irsvuwPdrity =

43、1物味乜石上卬_初廠人大徐般校騙/USAJiT Zni t5tnic twreT UAJiT ft a rdsrfl rt IL o TfCon tro I = SART ffrdvarv FlowCcntrol I*?ne; /*元陵普遍笛/17;AR3Tti_t t Strut bu . CTS;ARTMb de = &總加?«1)(?度.而 | 05g宜七田.日_丁上; 八發(fā)送和 STMEVALCQlUnitfCOMS, AUSAETln it st ru C til re);然后是初始化指示燈和4857r向控制以及按鍵等:/*STM32E107£VALrs

44、LED 中/SHM_£ WLL_X£DTni t (LKD1;STf£ VAILKDTUl t fLE02);S¥MEVAIL.EDJ:ni t,LER?1;/工旦叩專48與放方向.翔初阿一代尸工口SrM_KVAL_LEDZnl t (VED4);/beep_ conf i gif21 ti on ();/STM_VAL_BE£rOff ();/* rum an lds av&llabli? on STJ£i2E107-EVAL 十/STM_EVAL_LEDCaj (L£DI;STjTeVAIL£DOr (

45、LED2);STM2EVAlTLEDOf / (LEDS);/*初賽化核鍵*/GFZO KEY Can fig () /prln tf LV»r-n "J ;pr如上門“5、下”皿2例舟承 理開發(fā)菽 485扁頸英送獎播管,;prdntf t ”Q支-技U自量FLL技施或置嬸舟工工工號為RS405賽送腦g ' );printf ("n x"擲情尊耀我哲碑用、工*號為RS435要就端n ,);prin tf,”m、宜-iJi- 1= = -+->-,= 4 - 一1I -");在完成了初始化以后,主程序中,首先等待用于通過STM32S

46、鍵設(shè)置神舟IV號RS485 作為接收或發(fā)送端設(shè)置,如果作為RS48菠收端,則將PD瀚出低電平,控制SP348敢發(fā)器 在接收模式,通過串口 1打印提示信息。如果作為RS48故送端,則將PD7B出高電平,控制 SP3485攵發(fā)器在發(fā)送模式,并通過串口 1打印提示信息。這主要是通過RS485_Mode_Set() 函數(shù)實現(xiàn)的。IDLE)while (曰/= RS4B5 MODE SET ();)void RS485_MODE_SET void J(*便能串U2 7USMT Cmd (USART2, BNABLBJ ;if (ReadKeyEKJWii <) = KEY1) 1RfS4S5_Ht

47、) rft? = TX _MODE;pt-intf (rrXn rRS4F!5 發(fā)送模式設(shè)置成功");TX_M0dC 0 ;Le<i_Ctrl (DG2_FIN, ON);else if fReddKeyDowii ( ) = KEYS = RX_MODE;printf ("XnX rES495接收模式設(shè)置成功門;p匚i.rrt-嗔nr等待接收敵據(jù)”);Le Gtrl (DS3_PIN, GN);RX_Mode () )else IT (ReadKeyDown J = KEYS) (R忘4A5jMbd白二 IDLE ;printf退出發(fā)送接收,諧重新設(shè)置工作模式7);

48、printf CrXnr U4ERL按醺:盤量RS4H5為接收模式;printf i rtn r U它ER£接鑲;謖置RS483為發(fā)塔橙式"); 設(shè)置完神舟IV號的RS485E作模式后,依據(jù)實際的工作模式后,程序依據(jù)模式執(zhí)行相關(guān) 的代碼。如果為接收模式,則程序使能串口2的中斷接收。當(dāng)串口戲收到到數(shù)據(jù)時,進入串口2 的中斷服務(wù)程序,保存接收到的數(shù)據(jù)。接收完完整的一串?dāng)?shù)據(jù)后,將接收到的數(shù)據(jù)打印出來。if (RSS5_lfode = RX_XODE) Z/RXC SART lTCoilfig USART2r USART_I T_RZNE , ENABLE); while RjcC

49、vunttfr < R;cBuf f srSiz)printf 揍收到的數(shù)據(jù):");printf " s " f /Buffer);Kr counter = 口;如果為發(fā)送模式,則程序使能串口 2的中斷發(fā)送。主程序在Whil嘛環(huán)中等待,直到串口2的中斷服務(wù)程序中發(fā)送完完整的一串?dāng)?shù)據(jù)。并通過串口 1打印發(fā)送的數(shù)據(jù)。延遲一段時間后,吸皿。暮if JZS4S5_Osd& = 仃兄同口DEJ上門快給U,”便能串口 2的發(fā)送,/USART ITConfit) (USART2, USARr_TT_TXEr ENABLE);/* til a. It Until a

50、 nd of t r .a.ri smissaon f tom US ART 1 to U £ ARTS */ whLie(TarCouf»ter < T«BufferSize) ( Jprintf "Inkt正在發(fā)送數(shù)據(jù);wj ;for (i = 0 ; i < Nb rO£Da La To Tjrnnsfe r; _* ( printf TyBu/fer);if ( i - NBb rOf Da tn To Tj ans f ej-) 1print f (-hni:");ircounter = U ?Delay_ARHJISHtI (6OODOGO;;,7 and If R34S5 Bods=-TX NODE 1 發(fā)送的數(shù)u.iji tmBufforJ = wrn#. iunji shii. ccin鈍算系列開發(fā)根 R后4志號港多?碘餐占里乳"7神舟IV號光盤源碼目錄包含本實驗的工程源碼,在神舟IV號光盤源碼' 24、RS-48晦線收發(fā)實驗.rarProjec

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論