![RS-485總線收發(fā)實(shí)驗(yàn)_第1頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe9/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe91.gif)
![RS-485總線收發(fā)實(shí)驗(yàn)_第2頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe9/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe92.gif)
![RS-485總線收發(fā)實(shí)驗(yàn)_第3頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe9/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe93.gif)
![RS-485總線收發(fā)實(shí)驗(yàn)_第4頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe9/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe94.gif)
![RS-485總線收發(fā)實(shí)驗(yàn)_第5頁](http://file3.renrendoc.com/fileroot_temp3/2022-3/2/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe9/1205bf1b-a5b1-4bbd-9a18-89be5c7e0fe95.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、RS-485總線收發(fā)實(shí)驗(yàn) 在本章節(jié),我們將介紹RS-485總線的使用。本實(shí)驗(yàn)一共需要兩塊神舟IV號(hào)STM32開發(fā) 板,一塊作為RS485的發(fā)送端,另一塊作為RS485的接收端,接收總線上的數(shù)據(jù)。本節(jié)分為 如下幾個(gè)部分: 1 RS-485總線實(shí)驗(yàn)的意義與作用 2 實(shí)驗(yàn)原理 3 軟件設(shè)計(jì) 4 硬件設(shè)計(jì) 5 下載與驗(yàn)證 6 實(shí)驗(yàn)現(xiàn)象 意義與作用 前面兩個(gè)例程,我們分別講解了串口printf實(shí)驗(yàn)和串口中斷收發(fā)實(shí)驗(yàn),對(duì)RS232串口原理 及其應(yīng)用有了一定的了解,但是 由于RS232接口標(biāo)準(zhǔn)出現(xiàn)較早,難免有不足之處,主要有以 下四點(diǎn): (1)接口的信號(hào)電平值較高,易損壞接口電路的芯片,又因?yàn)榕cTTL 電平
2、不兼容故需使 用電平轉(zhuǎn)換電路方能與TTL電路連接。 (2)傳輸速率較低,在異步傳輸時(shí),波特率為20Kbps。 (3)接口使用一根信號(hào)線和一根信號(hào)返回線而構(gòu)成共地的傳輸形式, 這種共地傳輸容易 產(chǎn)生共模干擾,所以抗噪聲干擾性弱。 (4)傳輸距離有限,最大傳輸距離標(biāo)準(zhǔn)值為50英尺,實(shí)際上也只能用在50米左右。 針對(duì)RS232接口的不足,于是就不斷出現(xiàn)了一些新的接口標(biāo)準(zhǔn),RS-485就是其中之一, 它具有以下特點(diǎn): (1)RS-485的電氣特性:邏輯"1"以兩線間的電壓差為+(26) V表示;邏輯"0"以兩線 間的電壓差為-(26)V表示。接口信號(hào)電平比RS-
3、232降低了,就不易損壞接口電 路的芯片,且該電平與TTL電平兼容,可方便與TTL 電路連接。 (2)RS-485的數(shù)據(jù)最高傳輸速率為10Mbps(實(shí)際取決于RS485接口芯片和電路) 。 (3)RS-485接口是采用平衡驅(qū)動(dòng)器和差分接收器的組合,抗共模干能力增強(qiáng),即抗噪聲 干擾性好。 (4)RS-485接口的最大傳輸距離標(biāo)準(zhǔn)值為4000英尺,實(shí)際上可達(dá) 3000米,另外RS-232接 口在總線上只允許連接1個(gè)收發(fā)器, 即單站能力。而RS-485接口在總線上是允許連 接多達(dá)128個(gè)收發(fā)器。即具有多站能力,這樣用戶可以利用單一的RS-485接口方便地 建立起設(shè)備網(wǎng)絡(luò)。 (5)因?yàn)镽S485接口組
4、成的半雙工網(wǎng)絡(luò),一般只需二根連線(我們一般叫AB線),所以 RS485接口均采用屏蔽雙絞線傳輸。 基于以上原因,RS485總線在工業(yè)控制行業(yè)應(yīng)用非常廣泛,適合分散的,遠(yuǎn)距離(上千 米)的多點(diǎn)通信,這是RS232所不能實(shí)現(xiàn)的,因此,通過使用STM32開發(fā)板實(shí)現(xiàn)RS485的通 信,我們可以了解RS485總線的應(yīng)用和基本原理,搭建RS485通信網(wǎng)絡(luò)。 實(shí)驗(yàn)原理 RS-485 總線簡(jiǎn)介 在數(shù)據(jù)通信,計(jì)算機(jī)網(wǎng)絡(luò)以及分布式工業(yè)控制系統(tǒng)當(dāng)中,經(jīng)常需要使用串行通信來實(shí)現(xiàn) 數(shù)據(jù)交換。目前,有RS-232,RS-485,RS-422幾種接口標(biāo)準(zhǔn)用于串行通信。RS-232是最早的串 行接口標(biāo)準(zhǔn), 在短距離 <
5、15M) 較低波特率串行通信當(dāng)中得到了廣泛應(yīng)用。 (,其后針對(duì)RS-232 接口標(biāo)準(zhǔn)的通信距離短,波特率比較低的狀況,在RS-232接口標(biāo)準(zhǔn)的基礎(chǔ)上又提出了RS-422 接口標(biāo)準(zhǔn), RS-485接口標(biāo)準(zhǔn)來克服這些缺陷。 下面詳細(xì)介紹RS-232,RS-422,RS-485接口標(biāo)準(zhǔn)。 RS-232串口標(biāo)準(zhǔn)是種在低速率串行通訊種增加通訊距離的單端標(biāo)準(zhǔn)。RS-232采取不平 衡傳輸方式,即單端通訊。其收發(fā)端的數(shù)據(jù)信號(hào)都是相對(duì)于地信號(hào)的。所以其共模抑制能力 差,再加上雙絞線的分布電容,其傳輸距離最大約為15M,最高速率為20KBPS,且其只能 支持點(diǎn)對(duì)點(diǎn)通信。 針對(duì)RS-232串口標(biāo)準(zhǔn)的局限性,人們又
6、提出了RS-422,RS-485接口標(biāo)準(zhǔn)。RS-485/422采 用平衡發(fā)送和差分接收方式實(shí)現(xiàn)通信:發(fā)送端將串行口的TTL電平信號(hào)轉(zhuǎn)換成差分信號(hào)A,B 兩路輸出,經(jīng)過線纜傳輸之后在接收端將差分信號(hào)還原成TTL電平信號(hào)。由于傳輸線通常使 用雙絞線,又是差分傳輸,所以又極強(qiáng)的抗共模干擾的能力,總線收發(fā)器靈敏度很高,可以 檢測(cè)到低至200mV電壓。故傳輸信號(hào)在千米之外都是可以恢復(fù)。RS-485/422最大的通信距離 約為1219M,最大傳輸速率為10Mb/S,傳輸速率與傳輸距離成反比,在100Kb/S的傳輸速率 下,才可以達(dá)到最大的通信距離,如果需傳輸更長的距離,需要加485中繼器。 RS-485采
7、用半雙工工作方式,支持多點(diǎn)數(shù)據(jù)通信。RS-485總線網(wǎng)絡(luò)拓?fù)湟话悴捎媒K端 匹配的總線型結(jié)構(gòu)。即采用一條總線將各個(gè)節(jié)點(diǎn)串接起來,不支持環(huán)形或星型網(wǎng)絡(luò)。如果需 要使用星型結(jié)構(gòu),就必須使用485中繼器或者485集線器才可以。RS-485/422總線一般最大支 持32個(gè)節(jié)點(diǎn),如果使用特制的485芯片,可以達(dá)到128個(gè)或者256個(gè)節(jié)點(diǎn),最大的可以支持到 400個(gè)節(jié)點(diǎn)。 EIA RS-485 標(biāo)準(zhǔn) 在自動(dòng)化領(lǐng)域,隨著分布式控制系統(tǒng)的發(fā)展,迫切需要一種總線能適合遠(yuǎn)距離的數(shù)字通 信。 RS-422標(biāo)準(zhǔn)的基礎(chǔ)上, 研究出了一種支持多節(jié)點(diǎn)、 在EIA 遠(yuǎn)距離和接收高靈敏度的RS-485 總線標(biāo)準(zhǔn)。 RS-485標(biāo)
8、準(zhǔn)采有用平衡式發(fā)送,差分式接收的數(shù)據(jù)收發(fā)器來驅(qū)動(dòng)總線,具體規(guī)格要求: 1.接收器的輸入電阻RIN³12k 2.驅(qū)動(dòng)器能輸出±7V的共模電壓 3.輸入端的電容£50pF 4.在節(jié)點(diǎn)數(shù)為32個(gè),配置了120的終端電阻的情況下,驅(qū)動(dòng)器至少還能輸出電壓 1.5V(終端電阻的大小與所 用雙絞線的參數(shù)有關(guān)) 5.接收器的輸入靈敏度為200mV(即(V+)-(V-)³0.2V,表示信號(hào)"0";(V+) -(V-)£-0.2V,表示信 號(hào)"1") 因?yàn)镽S-485的遠(yuǎn)距離、多節(jié)點(diǎn)(32個(gè))以及傳輸線成本低的特性,使得EI
9、A RS-485成為 工業(yè)應(yīng)用中數(shù)據(jù)傳輸?shù)氖走x標(biāo)準(zhǔn)。 影響RS-485總線通訊速度和通信可靠性的三個(gè)因素 1、在通信電纜中的信號(hào)反射 在通信過程中,有兩種信號(hào)因?qū)е滦盘?hào)反射:阻抗不連續(xù)和阻抗不匹配。 阻抗不連續(xù),信號(hào)在傳輸線末端突然遇到電纜阻抗很小甚至沒有,信號(hào)在這個(gè)地方就會(huì) 引起反射,這種信號(hào)反射的原理,與光從一種媒質(zhì)進(jìn)入另一種媒質(zhì)要引起反射是相似的。消 除這種反射的方法,就必須在電纜的末端跨接一個(gè)與電纜的特性阻抗同樣大小的終端電阻, 使電纜的阻抗連續(xù)。由于信號(hào)在電纜上的傳輸是雙向的,因此,在通訊電纜的另一端可跨接 一個(gè)同樣大小的終端電阻。 從理論上分析,在傳輸電纜的末端只要跨接了與電纜特性
10、阻抗相匹配的終端電阻,就再 也不會(huì)出現(xiàn)信號(hào)反射現(xiàn)象。但是,在實(shí)現(xiàn)應(yīng)用中,由于傳輸電纜的特性阻抗與通訊波特率等 應(yīng)用環(huán)境有關(guān),特性阻抗不可能與終端電阻完全相等,因此或多或少的信號(hào)反射還會(huì)存在。 引起信號(hào)反射的另個(gè)原因是數(shù)據(jù)收發(fā)器與傳輸電纜之間的阻抗不匹配。 這種原因引起的 反射,主要表現(xiàn)在通訊線路處在空閑方式時(shí),整個(gè)網(wǎng)絡(luò)數(shù)據(jù)混亂。 信號(hào)反射對(duì)數(shù)據(jù)傳輸?shù)挠绊?,歸根結(jié)底是因?yàn)榉瓷湫盘?hào)觸發(fā)了接收器輸入端的比較器, 使接收器收到了錯(cuò)誤的信號(hào),導(dǎo)致CRC校驗(yàn)錯(cuò)誤或整個(gè)數(shù)據(jù)幀錯(cuò)誤。 要減弱反射信號(hào)對(duì)通訊線路的影響,通常采用噪聲抑制和加偏置電阻的方法。在實(shí)際應(yīng) 用中,對(duì)于比較小的反射信號(hào),為簡(jiǎn)單方便,經(jīng)常采用
11、加偏置電阻的方法。 2、在通訊電纜中的信號(hào)衰減 第二個(gè)影響信號(hào)傳輸?shù)囊蛩厥切盘?hào)在電纜的傳輸過程中衰減。 一條傳輸電纜可以把它看 出由分布電容、分布電感和電阻聯(lián)合組成的等效電路,電纜的分布電容C主要是由雙絞線的 兩條平行導(dǎo)線產(chǎn)生。導(dǎo)線的電阻在這里對(duì)信號(hào)的影響很小,可以忽略不計(jì)。信號(hào)的損失主要 是由于電纜的分布電容和分布電感組成的LC低通濾波器。 3、在通訊電纜中的純阻負(fù)載 影響通訊性能的第三個(gè)因素是純阻性負(fù)載(也叫直流負(fù)載)的大小。這里指的純阻性負(fù) 載主要由終端電阻、偏置電阻和RS-485收發(fā)器三者構(gòu)成。 在敘述EIA RS-485規(guī)范時(shí)曾提到過RS-485驅(qū)動(dòng)器在帶了32個(gè)節(jié)點(diǎn),配置了150終
12、端電 阻的情況下,至少能輸出1.5V的差分電壓。一個(gè)接收器的輸入電阻為12k,RS-485驅(qū)動(dòng)器 的負(fù)載能力為: RL=32個(gè)輸入電阻并聯(lián)|2個(gè)終端電阻=(12000/32)×(150/2)/(12000/32)+(150/2) »51.7 現(xiàn)在比較常用的RS-485驅(qū)動(dòng)器有MAX485、DS3695、MAX1488/1489以及和利時(shí)公司使 用的SN75176A/D等,其中有的RS-485驅(qū)動(dòng)器負(fù)載能力可以達(dá)到20。在不考慮其它諸多因 素的情況下,按照驅(qū)動(dòng)能力和負(fù)載的關(guān)系計(jì)算,一個(gè)驅(qū)動(dòng)器可帶節(jié)點(diǎn)的最大數(shù)量將遠(yuǎn)遠(yuǎn)大于 32個(gè)。 在通訊波特率比較高的時(shí)候,在線路上偏置電阻是很
13、有必要的。它的作用是在線路進(jìn)入 空閑狀態(tài)后,把總線上沒有數(shù)據(jù)時(shí)(空閑方式)的電平拉離0電平。這樣一來,即使線路中 出現(xiàn)了比較小的反射信號(hào)或干擾, 掛接在總線上的數(shù)據(jù)接收器也不會(huì)由于這些信號(hào)的到來而 產(chǎn)生誤動(dòng)作。 在實(shí)際應(yīng)用中,RS-485總線加偏置電阻有兩種方法: (1)把偏置電阻平衡分配給總線上的每一個(gè)收發(fā)器。這種方法給掛接在RS-485總線上 的每一個(gè)收發(fā)器加了偏置電阻,給每一個(gè)收發(fā)器都加了一個(gè)偏置電壓。 (2)在一段總線上只用一對(duì)偏置電阻。這種方法對(duì)總線上存在大的反射信號(hào)或干擾信號(hào)比 較有效。值得注意的是偏置電阻的加入,增加了總線的負(fù)載。 神舟IV號(hào)RS-485實(shí)驗(yàn)原理 本實(shí)驗(yàn)主要是利用
14、兩塊神舟IV號(hào)STM32開發(fā)板搭建一個(gè)簡(jiǎn)單的RS-485網(wǎng)絡(luò),其中一塊 神舟IV號(hào)作為RS-485接收端,另一塊神舟IV號(hào)作為RS-485發(fā)送端。而PC主要用于顯示神舟 IV號(hào)通過串口1打印的提示信息。網(wǎng)絡(luò)示意圖如下: 其中神舟IV號(hào)-B作為RS-485的發(fā)送端,循環(huán)發(fā)送數(shù)據(jù)到RS-485總線上,而神舟IV號(hào)-A 作為RS-485的接收端,當(dāng)接收到RS-485總線上的數(shù)據(jù),收到完整的數(shù)據(jù)后,通過串口1將數(shù) 據(jù)發(fā)送到PC機(jī)。 硬件設(shè)計(jì) 在神舟IV號(hào)STM32開發(fā)板中,RS-485接口與串口2的RS232電平接口進(jìn)行復(fù)用,通過跳 線選擇即可以選擇神舟IV號(hào)的串口2連接到RS-232接口或者RS-4
15、85接口。以下為RS-485接口 芯片及其外圍電路原理圖。 圖表 1 RS485 原理圖 神舟IV號(hào)開發(fā)板載有RS485物理芯片,它與處理器的UART2連接,與串口2復(fù)用,可通 過跳線選擇支持RS-232接口或RS-485接口,跳線定義如下: JP4 串口2功能選擇 1-2 2-3(默認(rèn)) 串口2 RS-485接口 串口2 RS-232接口 神舟IV號(hào)默認(rèn)是安裝了RS-485接口的120歐終端匹配電阻。對(duì)應(yīng)上圖的R43,請(qǐng)依據(jù)實(shí) 際應(yīng)用選擇是否安裝此匹配電阻。 上圖中U3為RS-485接口芯片SP3485,SP3485是Sipex公司推出的RS-485收發(fā)器,它具有 如下特性: 工作電源3.3
16、V; 兼容5V電平邏輯 發(fā)送/接收使能控制 總線節(jié)點(diǎn)最大支持32個(gè) 具有輸出短路保護(hù)電路 芯片的邏輯框圖如下: /RE和DE管腳控制RS-485的收發(fā)使能控制。在神舟IV號(hào)中,這兩個(gè)管腳與處理器的PD7 管腳連接,由PD7管腳控制神舟IV號(hào)STM32開發(fā)板的RS485作為發(fā)送端還是接收端。 查看 SP3485 RS-485收發(fā)器.pdf 可知, PD7輸出高電平, 當(dāng)此時(shí)SP3485芯片的2腳 /RE) (,3腳(DE)都為高電平。SP3485工作與發(fā)送模式。邏輯關(guān)系如下表所示。 當(dāng)PD7輸出低高電平,此時(shí)SP3485芯片的2腳(/RE),3腳(DE)都為低電平。SP3485 工作與接收模式。
17、邏輯關(guān)系如下表所示。 另外,上圖中的R43的作用是作用RS485的終端匹配電阻,在RS-485總線網(wǎng)絡(luò)中,終端 匹配電阻主要作用是使總線的阻抗連續(xù), 減小信號(hào)的反射, 提高信號(hào)的傳輸質(zhì)量, 一般RS485 網(wǎng)絡(luò)的終端匹配電路只需要在總線的最遠(yuǎn)端的節(jié)點(diǎn)并一個(gè)即可, 其他接點(diǎn)不需要安裝此匹配 電阻。 在神舟 IV 號(hào) STM32 開發(fā)板中,默認(rèn)終端匹配電阻都是安裝的(對(duì)應(yīng)原理圖的 R43),請(qǐng) 依據(jù)實(shí)際情況,選擇安裝或去掉此電阻。 軟件設(shè)計(jì) 在軟件設(shè)計(jì)中,我們先來了解關(guān)于ST庫函數(shù)中配置串口參數(shù)。關(guān)于STM32的USART的 庫 函 數(shù) 實(shí) 現(xiàn) , 主 要 是 在 STM32F10x_StdPer
18、iph_Driver 庫 的 " stm32f10x_usart.c " 和 " stm32f10x_usart.h " 兩 個(gè) 文 件 里 。 以 V3.3.0 版 本 的 庫 為 例 , 這 兩 個(gè) 文 件 位 于 "STM32F10x_StdPeriph_Lib_V3.3.0Libraries Stm32F10x_StdPeriph_Driver"目錄的"src"和"inc"文件夾里: 在本實(shí)驗(yàn)中,程序運(yùn)行以后,首先通過串口1打印提示信息,提示通過板上的USER1和 USER2按鍵設(shè)置神舟
19、IV號(hào)為發(fā)送端或者接收端,設(shè)置完成后,發(fā)送端周期性的發(fā)送數(shù)據(jù)到 RS-485網(wǎng)絡(luò)上(神舟IV號(hào)的RS485收發(fā)器與處理器的串口2連接),而接收端等待RS-485網(wǎng) 絡(luò)上的數(shù)據(jù), 并將接收到的完整數(shù)據(jù)通過串口1打印出來。 因此本實(shí)驗(yàn)需要用的資源有串口1, 串口2,按鍵,LED,RS485收發(fā)器。 GPIO 初始化 在本實(shí)現(xiàn)中,按鍵,LED燈以及串口,RS-485收發(fā)器方向控制等都是有處理器GPIO連 接的,因此在使用之前,我們需要對(duì)相關(guān)的GPIO初始化。 注意:由于神舟IV號(hào)開發(fā)板的RS-485收發(fā)器方向控制管腳與LED4的相同,所以初始化 LED4就是初始化RS-485收發(fā)器方向控制管腳。 G
20、PIO_KEY_Config()函數(shù)完成與按鍵連接的GPIO初始化。 串口1 printf實(shí)現(xiàn) 在實(shí)驗(yàn)中,串口1用于打印程序提示信息和RS-485接收/發(fā)送的數(shù)據(jù),因此,我們初始化 串口1,作為printf函數(shù)輸出使用。關(guān)于printf的實(shí)現(xiàn)可參見串口1 printf實(shí)驗(yàn)詳細(xì)說明。主 要代碼如下: 首先,完成串口發(fā)送單個(gè)字節(jié)的函數(shù),在庫函數(shù)模板的main.c中一般會(huì)有如下宏定義, 這是為了兼容不同的編譯平臺(tái)。 我們關(guān)注串口的發(fā)送函數(shù),通過此函數(shù),我們發(fā)送一個(gè)字符出去。 其中,"USART_SendData(EVAL_COM1,(uint8_t)ch);"是"stm
21、32f10x_usart.c"庫文件 中 的 字 符 發(fā) 送 函 數(shù) , 然 后 是 while 循 環(huán) 等 待 串 行 數(shù) 據(jù) 發(fā) 送 完 成 , "(USART_GetFlagStatus(EVAL_COM1,USART_FLAG_TC)=RESET)"。如果不等待發(fā) 送結(jié)束就返回,則調(diào)用字符串發(fā)送函數(shù)中printf時(shí),如果上一次發(fā)送的字節(jié)在寄存器中還沒 有發(fā)送結(jié)束,此時(shí)再次寫同樣的發(fā)送寄存器會(huì)將剛才的數(shù)據(jù)覆蓋掉,接收側(cè)將得不到預(yù)期的 數(shù)據(jù)。 接下來,我們?cè)賮砜碪SART相關(guān)的結(jié)構(gòu)體,主要是用來配置串口的波特率,數(shù)據(jù)位, 奇偶校驗(yàn)位等信息等。 這是關(guān)于USAR
22、T_InitTypeDef結(jié)構(gòu)體定義。了解了庫函數(shù)關(guān)于USART的一些相關(guān)的函 數(shù),結(jié)構(gòu)體定義后,我們回到本實(shí)驗(yàn)中。本實(shí)驗(yàn)中直接調(diào)用庫函數(shù)進(jìn)行設(shè)計(jì)。在本實(shí)驗(yàn)的主 程序中,需要對(duì)USART_InitTypeDef結(jié)構(gòu)體進(jìn)行初始化設(shè)置,配置串口的基本參數(shù),具體如 下所示: 到這里,我們就可以像一般的C語言一樣,非常方便的使用printf函數(shù)來往串口1輸出提 示信息了。 串口2 RS485實(shí)現(xiàn) 在神舟IV號(hào)STM32開發(fā)板中,串口2與RS485接口連接,兩塊神舟IV號(hào)STM32開發(fā)板通 過RS485通信。在軟件程序設(shè)計(jì)時(shí),基本上,除了需要控制RS485的收發(fā)方向外,還是和通 用的串口2收發(fā)控制一樣設(shè)
23、計(jì),在本實(shí)驗(yàn)中,我們通過中斷的方式進(jìn)行串口的收發(fā),首先我 們?cè)O(shè)置串口中斷模式和優(yōu)先級(jí),這個(gè)主要是NVIC_Configuration()函數(shù)實(shí)現(xiàn)的,相關(guān)代碼如 下: 在使用串口2之前,我們首先需要對(duì)串口參數(shù)進(jìn)行配置,主要是配置串口的波特率,數(shù) 據(jù)位,奇偶校驗(yàn)位等信息等,具體代碼如下。 串口發(fā)送接收中斷服務(wù)程序 到這里,我們已經(jīng)完成了串口的參數(shù)配置,由于我們?cè)O(shè)置串口2為中斷中斷收發(fā)模式, 正常情況下,當(dāng)串口產(chǎn)生發(fā)送或接收中斷時(shí),將跳轉(zhuǎn)的對(duì)應(yīng)的中斷服務(wù)程序中。 首先是頭文件的引用和外部變量的聲明: 串口中斷服務(wù)程序是stm32f10x_it.c文件中的USART2_IRQHandler()函數(shù)實(shí)現(xiàn)
24、。 在進(jìn)入串 口2中斷服務(wù)程序以后,首先判斷是串口發(fā)送中斷還是串口接收中斷,如果是接收中斷,則 將接收到的數(shù)據(jù)放入BUFFER中,直到接收到的數(shù)據(jù)個(gè)數(shù)達(dá)到設(shè)定的個(gè)數(shù)或指針越界或者收 到"n"結(jié)束符,關(guān)閉串口接收中斷。 如果是發(fā)送中斷,則將BUFFER中的數(shù)據(jù)通過串口2發(fā)送出去,直到發(fā)送的數(shù)據(jù)個(gè)數(shù)達(dá) 到設(shè)定的個(gè)數(shù),關(guān)閉串口接收中斷。 主程序功能說明 前面,我們完成了各資源接口模塊的初始化和參數(shù)配置,以及串口的中斷服務(wù)程序。 主函數(shù)首先初始化串口和485總線: 然后是初始化指示燈和485方向控制以及按鍵等: 在完成了初始化以后,主程序中,首先等待用于通過STM32按鍵設(shè)置神舟I
25、V號(hào)RS485 作為接收或發(fā)送端設(shè)置,如果作為RS485接收端,則將PD7輸出低電平,控制SP3485收發(fā)器 在接收模式,通過串口1打印提示信息。如果作為RS485發(fā)送端,則將PD7輸出高電平,控制 SP3485收發(fā)器在發(fā)送模式,并通過串口1打印提示信息。這主要是通過RS485_Mode_Set() 函數(shù)實(shí)現(xiàn)的。 設(shè)置完神舟IV號(hào)的RS485工作模式后,依據(jù)實(shí)際的工作模式后,程序依據(jù)模式執(zhí)行相關(guān) 的代碼。 如果為接收模式,則程序使能串口2的中斷接收。當(dāng)串口2接收到到數(shù)據(jù)時(shí),進(jìn)入串口2 的中斷服務(wù)程序,保存接收到的數(shù)據(jù)。接收完完整的一串?dāng)?shù)據(jù)后,將接收到的數(shù)據(jù)打印出來。 如果為發(fā)送模式,則程序使能
26、串口2的中斷發(fā)送。主程序在While循環(huán)中等待,直到串口 2的中斷服務(wù)程序中發(fā)送完完整的一串?dāng)?shù)據(jù)。 并通過串口1打印發(fā)送的數(shù)據(jù)。 延遲一段時(shí)間后, 重復(fù)發(fā)送。 發(fā)送的數(shù)據(jù)為: 下載與驗(yàn)證 神舟IV號(hào)光盤源碼目錄包含本實(shí)驗(yàn)的工程源碼,在神舟IV號(hào)光盤源碼 24、RS-485總 線收發(fā)實(shí)驗(yàn).rarProject24、RS-485總線收發(fā)實(shí)驗(yàn)EWARMv5STM32F107VC -ARMJISHUExe 目錄下的ARMJISHU_RS-485總線收發(fā)實(shí)驗(yàn).hex文件即為前面我們分析的RS-485總線收發(fā)實(shí) 驗(yàn)編譯好的固件,我們可以直接將固件下載到神舟IV號(hào)開發(fā)板中,觀察運(yùn)行效果。 如果使用JLINK下載固件,請(qǐng)按錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。下載固件 到神舟IV號(hào)開發(fā)板小節(jié)進(jìn)行操作。 如果使用USB下載固件,請(qǐng)按錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。小節(jié)進(jìn)行操 作。 如果使用串口下載固件,請(qǐng)按錯(cuò)誤!未找到引用源。錯(cuò)誤!未找到引用源。小節(jié)進(jìn)行 操作。 如果在IAR開發(fā)環(huán)境中,下載編譯好的固件或者在線調(diào)試,請(qǐng)按錯(cuò)誤!未找到引用源。 錯(cuò)誤!未找到引用源。小節(jié)進(jìn)行操作。 如果在MDK開發(fā)環(huán)境中,下載編譯好的固件或者在線調(diào)試,請(qǐng)按錯(cuò)誤!未找到引用源。 錯(cuò)誤
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 浙江2025年春季浙江省國際經(jīng)濟(jì)貿(mào)易學(xué)會(huì)招聘筆試歷年參考題庫附帶答案詳解
- 河源2025年廣東河源職業(yè)技術(shù)學(xué)院招聘博士研究生5人筆試歷年參考題庫附帶答案詳解
- 2025年中國堵縫槍市場(chǎng)調(diào)查研究報(bào)告
- 2025年中國光學(xué)投影研磨機(jī)市場(chǎng)調(diào)查研究報(bào)告
- 2025年車庫大門項(xiàng)目可行性研究報(bào)告
- 2025年自動(dòng)拔蓋機(jī)項(xiàng)目可行性研究報(bào)告
- 2025年立臥式可調(diào)鉆床項(xiàng)目可行性研究報(bào)告
- 2025年玻璃字畫乳化膏項(xiàng)目可行性研究報(bào)告
- 2025年水電站型自動(dòng)保壓液控蝶閥項(xiàng)目可行性研究報(bào)告
- 2025至2031年中國數(shù)字溫度電勢(shì)計(jì)行業(yè)投資前景及策略咨詢研究報(bào)告
- 消防員證考試題庫2000題中級(jí)
- 校園安全教育高中生
- 2024至2030年中國數(shù)字壓力表行業(yè)投資前景及策略咨詢研究報(bào)告
- 《SPIN顧問式銷售》課件
- 農(nóng)產(chǎn)品質(zhì)量安全檢測(cè)技術(shù)
- 【蟬媽媽】2024年抖音電商酒水行業(yè)趨勢(shì)洞察報(bào)告
- 物業(yè)員工行為規(guī)范管理手冊(cè)
- 基于STM32單片機(jī)的智能停車場(chǎng)車位管理系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 小型家用電器制造工(省賽)理論考試題及答案
- 康復(fù)科-關(guān)節(jié)活動(dòng)度測(cè)量量表
- 2025初級(jí)會(huì)計(jì)理論考試100題及解析
評(píng)論
0/150
提交評(píng)論