課程設(shè)計(jì)基于LPC2138芯片與PC機(jī)的串行通信設(shè)計(jì)_第1頁
課程設(shè)計(jì)基于LPC2138芯片與PC機(jī)的串行通信設(shè)計(jì)_第2頁
課程設(shè)計(jì)基于LPC2138芯片與PC機(jī)的串行通信設(shè)計(jì)_第3頁
課程設(shè)計(jì)基于LPC2138芯片與PC機(jī)的串行通信設(shè)計(jì)_第4頁
課程設(shè)計(jì)基于LPC2138芯片與PC機(jī)的串行通信設(shè)計(jì)_第5頁
已閱讀5頁,還剩16頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、lpc2138芯片與pc機(jī)的串行通信設(shè)計(jì) 摘要:串口通信是一種廣泛使用且實(shí)用的通信方式,介紹rs232串行通信的聯(lián)結(jié)方式,研究利用c語言編程實(shí)現(xiàn)rs232串行通信的過程結(jié)合實(shí)際應(yīng)用,在約定雙方串行通信協(xié)議的基礎(chǔ)上,運(yùn)用c語言開發(fā)的串行通信軟件,lpc2138芯片與pc機(jī)的串行數(shù)據(jù)通信。關(guān)鍵詞:arm嵌入式系統(tǒng)、lpc2138芯片、rs232串行通信目錄第1章 設(shè)計(jì)的目的和要求1.1設(shè)計(jì)的目的 31.2 設(shè)計(jì)要求 3第2章 方案論證2.1 設(shè)計(jì)方案 42.2 方案選擇 4第3章 硬件電路設(shè)計(jì)3.1 設(shè)計(jì)思路 53.2 主電路設(shè)計(jì) 53.2.1 lpc2138芯片 53.2.2 晶振電路 93.2

2、.3 復(fù)位電路103.2.4 電源電路103.3 rs232電平轉(zhuǎn)換電路設(shè)計(jì) 113.4 硬件電路連線圖12第4章 軟件設(shè)計(jì)4.1 串行通信協(xié)議設(shè)計(jì)134.2 程序設(shè)計(jì)144.2.1 流程圖144.2.2 程序清單16第5章 總結(jié) 19參考文獻(xiàn) 20第1章 設(shè)計(jì)的目的和要求1.1 設(shè)計(jì)目的1、 了解lpc2138各個(gè)引腳功能,工作方式,計(jì)數(shù)/定時(shí),i/o口,中斷等的相關(guān)原理,并鞏固學(xué)習(xí)嵌入式的相關(guān)內(nèi)容知識(shí)。2、 培養(yǎng)綜合運(yùn)用所學(xué)知識(shí)、獨(dú)立分析和解決實(shí)際問題的能力,培養(yǎng)創(chuàng)新意識(shí)和創(chuàng)新能力,并獲得科學(xué)研究的基礎(chǔ)訓(xùn)練。3、 掌握lpc2138芯片及pc機(jī)rs232通信原理。1.2 設(shè)計(jì)要求利用lpc

3、2138芯片與pc機(jī)實(shí)現(xiàn)信息的串行通信:1、課程設(shè)計(jì)論文內(nèi)容要正確,概念要清楚;2、完成任務(wù)書所規(guī)定的內(nèi)容;3、附有電路原理圖及程序流程圖,以及程序清單;4、文字要通順,書寫要工整,設(shè)計(jì)圖紙必須符合規(guī)范。第2章 方案論證2.1 設(shè)計(jì)方案方案一:采用單片機(jī)89s51芯片和max3232芯片與pc機(jī)進(jìn)行rs232串行通信;方案二:采用lpc2114芯片和sc161s752芯片與pc機(jī)進(jìn)行rs232串行通信;方案三:采用lpc2138芯片和max3223芯片pc機(jī)進(jìn)行rs232串行通信;2.2 方案選擇mcu-51系列芯片主要是8位單片機(jī),而lpc2000系列芯片是32位的微處理器,因此采用單片機(jī)芯

4、片相對(duì)來說會(huì)比其余方案的功能來的簡單,性能會(huì)比較差。max3223芯片與sc161s752芯片都能實(shí)現(xiàn)rs232電平的轉(zhuǎn)換,但max3223芯片的設(shè)計(jì)簡單,成本更低廉。因此我們組選擇方案三。根據(jù)系統(tǒng)設(shè)計(jì)的要求,對(duì)系統(tǒng)設(shè)計(jì)的總體方案進(jìn)行論證分析如下:1當(dāng)使用串口進(jìn)行數(shù)據(jù)傳送時(shí),雖然同步通信速度遠(yuǎn)遠(yuǎn)高于異步通信,可達(dá)500kbit/s,但由于其需要有一個(gè)時(shí)鐘來實(shí)現(xiàn)發(fā)送端和接收端之間的同步,硬件電路復(fù)雜,通常計(jì)算機(jī)之間的通信只采用異步通信。2本設(shè)計(jì)中采用外接晶振的方法。3rs232接口具有良好的抗噪聲干擾性、 長的傳輸距離和多點(diǎn)連接能力等優(yōu)點(diǎn), 所以選用 rs232接口。因普通pc機(jī)串口遵循標(biāo)準(zhǔn)的

5、rs232通訊協(xié)議,所以在pc機(jī)串口與通信電纜間安裝一 rs232 /485協(xié)議轉(zhuǎn)換器實(shí)現(xiàn)協(xié)議轉(zhuǎn)換。4:程序采用c語言來實(shí)現(xiàn)來實(shí)現(xiàn)。第3章 硬件電路設(shè)計(jì)3.1 設(shè)計(jì)思路lpc2138具有片內(nèi)flash程序存儲(chǔ)器,需3.3v電源、復(fù)位電路、晶振電路,p0.14接一個(gè)上拉電阻禁止isp功能。lpc2138的uart0沒有完整的modem接口信號(hào),僅提供txd、rxd信號(hào)引腳,使用uart0與rs-232接口進(jìn)行串行通信需要一個(gè)rs-232轉(zhuǎn)換器(max3223芯片)將ttl電平轉(zhuǎn)換成rs-232電平。3.2 主電路設(shè)計(jì) 3.2.1 lpc2138芯片1、 簡介lpc2138 是基于一個(gè)支持實(shí)時(shí)仿真

6、和嵌入式跟蹤的32/16 位arm7tdmi-stm cpu 的微控制器,并帶有512 kb 的嵌入的高速flash 存儲(chǔ)器。片內(nèi)128 位寬度的存儲(chǔ)器接口和獨(dú)特的加速結(jié)構(gòu)使32 位代碼能夠在最大時(shí)鐘速率下運(yùn)行。對(duì)代碼規(guī)模有嚴(yán)格控制的應(yīng)用可使用16 位thumb模式將代碼規(guī)模降低超過30%,而性能的損失卻很小。由于lpc2138較小的封裝和極低的功耗,多個(gè)32 位定時(shí)器,4路10位adc或8路10位adc,pwm 通道和46個(gè)gpio 以及多達(dá)9 個(gè)邊沿或電平觸發(fā)的外部中斷??衫硐氲赜糜谛⌒拖到y(tǒng)中,如訪問控制和pos 機(jī)。寬范圍的串行通信接口和片內(nèi)32kb 的sram 使lpc2138 非常適

7、用于通信網(wǎng)關(guān)、協(xié)議轉(zhuǎn)換器、軟modem、聲音辨別和低端成像,為它們提供巨大的緩沖區(qū)空間和強(qiáng)大的處理功能。lpc2138 集成了一個(gè)512 kb 的flash 存儲(chǔ)器系統(tǒng)。該存儲(chǔ)器可用作代碼和數(shù)據(jù)的存儲(chǔ)。對(duì)flash 存儲(chǔ)器的編程可通過幾種方法來實(shí)現(xiàn)??赏ㄟ^串口進(jìn)行在系統(tǒng)編程。應(yīng)用程序也可以在程序運(yùn)行時(shí)擦除和/或編程flash,這樣為數(shù)據(jù)存儲(chǔ)和現(xiàn)場固件的升級(jí)都帶來了極大的靈活性。當(dāng)使用片內(nèi)bootloader 時(shí),512kb 的flash存儲(chǔ)器可作用戶代碼使用。2、引腳描述圖3.1 lpc2138芯片引腳圖表3-1 lpc2138引腳功能介紹引腳名稱引腳號(hào)類型描 述p0.0 p0.31i/op0

8、 口:p0 口是一個(gè)32 位雙向i/o 口。每個(gè)位都有獨(dú)立的方向控制。有31 個(gè)p0 口可用作通用雙向數(shù)字i/o 口,p0.31 只用作輸出口。p0口管腳的操作取決于管腳連接模塊所選擇的功能。p0.24 不可用。p0.019ootxd0uart0 的發(fā)送器輸出pwm1脈寬調(diào)制器輸出1p0.121 ioirxd0uart0 的接收器輸入pwm3脈寬調(diào)制器輸出3eint0外部中斷0 輸入p0.222 i/oiscl0i2c0 時(shí)鐘輸入/輸出。開漏輸出cap0.0定時(shí)器0 捕獲輸入0p0.326 i/ooisda0i2c0 數(shù)據(jù)輸入/輸出。開漏輸出mat0.0定時(shí)器0 匹配輸出0eint1外部中斷1

9、 輸入p0.427 i/oiisck0spi0 串行時(shí)鐘,主機(jī)輸出或從機(jī)輸入的時(shí)鐘cap0.1定時(shí)器0 捕獲輸入0ad0.6a/d 轉(zhuǎn)換器0 輸入6。該模擬輸入總是連接到相應(yīng)的管腳。p0.529 i/ooimiso0spi0 主機(jī)輸入/從機(jī)輸出,從機(jī)到主機(jī)的數(shù)據(jù)傳輸mat0.1定時(shí)器0 匹配輸出1ad0.7a/d 轉(zhuǎn)換器0 輸入7。該模擬輸入總是連接到相應(yīng)的管腳。p0.630i/oiimosi0spi0 主機(jī)輸出/從機(jī)輸入,主機(jī)到從機(jī)的數(shù)據(jù)傳輸cap0.2定時(shí)器0 捕獲輸入2ad1.0a/d 轉(zhuǎn)換器1 輸入0。該模擬輸入總是連接到相應(yīng)的管腳。p0.731 ioissel0spi0 從機(jī)選擇,選

10、擇spi 接口用作從機(jī)。pwm2脈寬調(diào)制器輸出2eint2外部中斷2 輸入p0.833 ooitxd1uart1 的發(fā)送器輸出pwm4脈寬調(diào)制器輸出4ad1.1a/d 轉(zhuǎn)換器1 輸入1。該模擬輸入總是連接到相應(yīng)的管腳。p0.934 ioirxd1uart1 的接收器輸入pwm6脈寬調(diào)制器輸出6eint3外部中斷3 輸入p0.1035 oiirts1uart1 請(qǐng)求發(fā)送輸出cap1.0定時(shí)器1 捕獲輸入0ad1.2a/d 轉(zhuǎn)換器1 輸入2。該模擬輸入總是連接到相應(yīng)的管腳。p0.1137iii/octs1uart1 的清零發(fā)送輸入cap1.1定時(shí)器1 捕獲輸入1scl1i2c1 時(shí)鐘輸入/輸出。開

11、漏輸出p0.1238 ioidsr1uart1 的數(shù)據(jù)設(shè)備就緒輸入mat1.0定時(shí)器1 匹配輸出0ad1.3a/d 轉(zhuǎn)換器1 輸入3。該模擬輸入總是連接到相應(yīng)的管腳。p0.1339 ooidtr1uart1 的數(shù)據(jù)終端就緒輸出mat1.1定時(shí)器1 匹配輸出1ad1.4a/d 轉(zhuǎn)換器1 輸入4。該模擬輸入總是連接到相應(yīng)的管腳。p0.1441iii/odcd1uart1 數(shù)據(jù)載波檢測輸入eint1外部中斷1 輸入sda1i2c1 數(shù)據(jù)輸入/輸出。開漏輸出p0.1545 iiiri1uart1 鈴聲指示輸入eint2外部中斷2 輸入ad1.5a/d 轉(zhuǎn)換器1 輸入5。該模擬輸入總是連接到相應(yīng)的管腳。

12、p0.1646 ioieint0外部中斷0 輸入mat0.2定時(shí)器0 匹配輸出2cap0.2定時(shí)器0 捕獲輸入2p0.1747 ii/oocap1.2定時(shí)器1 捕獲輸入2sck1ssp串行時(shí)鐘,主機(jī)輸出或從機(jī)輸入的時(shí)鐘mat1.2定時(shí)器1 匹配輸出2p0.1853ii/oocap1.3定時(shí)器1 捕獲輸入3miso1ssp 主機(jī)輸入/從機(jī)輸出,從機(jī)到主機(jī)的數(shù)據(jù)傳輸mat1.3定時(shí)器1 匹配輸出3p0.1954 oi/oimat1.2定時(shí)器1 匹配輸出2mosi1ssp主機(jī)輸出/從機(jī)輸入,主機(jī)到從機(jī)的數(shù)據(jù)傳輸cap1.2定時(shí)器1 捕獲輸入2p0.2055 oiimat1.3定時(shí)器1 匹配輸出3ss

13、el1ssp從機(jī)選擇,選擇ssp 接口用作從機(jī)。eint3外部中斷3 輸入p0.211 oiipwm5脈寬調(diào)制器輸出5ad1.6a/d 轉(zhuǎn)換器1 輸入6。該模擬輸入總是連接到相應(yīng)的管腳。cap1.3定時(shí)器1 捕獲輸入3p0.222 iioad1.7a/d 轉(zhuǎn)換器1 輸入7。該模擬輸入總是連接到相應(yīng)的管腳。cap0.0定時(shí)器0 捕獲輸入0mat0.0定時(shí)器0 匹配輸出0p0.2358i/o通用數(shù)字輸入/輸出口。p0.259 ioad0.4a/d 轉(zhuǎn)換器0 輸入4。該模擬輸入總是連接到相應(yīng)的管腳。aoutd/a 轉(zhuǎn)換器輸出p0.2610iad0.5a/d 轉(zhuǎn)換器0 輸入5。該模擬輸入總是連接到相應(yīng)

14、的管腳。p0.2711iioad0.0a/d 轉(zhuǎn)換器0 輸入0。該模擬輸入總是連接到相應(yīng)的管腳。cap0.1定時(shí)器0 捕獲輸入1mat0.1定時(shí)器0 匹配輸出1p0.2813iioad0.1a/d 轉(zhuǎn)換器0 輸入1。該模擬輸入總是連接到相應(yīng)的管腳。cap0.2定時(shí)器0 捕獲輸入2mat0.2定時(shí)器0 匹配輸出2p0.2914 iioad0.2a/d 轉(zhuǎn)換器0 輸入2。該模擬輸入總是連接到相應(yīng)的管腳。cap0.3定時(shí)器0 捕獲輸入3mat0.3定時(shí)器0 匹配輸出3p0.3015iiiad0.3a/d 轉(zhuǎn)換器0 輸入3。該模擬輸入總是連接到相應(yīng)的管腳。eint3外部中斷3 輸入cap0.0定時(shí)器0

15、 捕獲輸入0p0.3117o通用數(shù)字輸出口。重要:當(dāng)reset 管腳為低電平或禁止jtag 端口時(shí),該管腳必須不能外部拉低。p1.0p1.31i/op1 口:p1 口是一個(gè)32 位雙向i/o 口。每個(gè)位都有獨(dú)立的方向控制。p1 口管腳的操作取決于管腳連接模塊所選擇的功能。p1 口的p1.0p1.15 不可用。p1.1616 otracepkt0跟蹤包位0,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.1712otracepkt1跟蹤包位1,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.188 otracepkt2跟蹤包位2,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.194 otracepkt3跟蹤包位3,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/

16、o 口。p1.2048 otracesync跟蹤同步。帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。當(dāng)reset為低時(shí),tracesync上的低電平使p1.16p1.25在復(fù)位后作為跟蹤端口。p1.2144 opipestat0流水線狀態(tài)位0,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.2240 opipestat1流水線狀態(tài)位1,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.2336 opipestat2流水線狀態(tài)位2,帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.2432otraceclk跟蹤時(shí)鐘。帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.2528 iextin0外部觸發(fā)輸入。帶內(nèi)部上拉的標(biāo)準(zhǔn)i/o 口。p1.2624i/ortck返回的測試時(shí)鐘輸

17、出。jtag 端口的額外信號(hào)。當(dāng)處理器頻率變化時(shí)幫助調(diào)試器保持同步。帶內(nèi)部上拉的雙向口。當(dāng)reset 為低時(shí),rtck 上的低電平會(huì)使p1.26p1.31 在復(fù)位后作為調(diào)試端口。p1.2764 otdojtag 接口測試數(shù)據(jù)輸出。p1.2860 itdijtag 接口測試數(shù)據(jù)輸入。p1.2956 itckjtag 接口測試時(shí)鐘。p1.3052 itmsjtag 接口的模式選擇。p1.3120 itrst jtag 接口的測試復(fù)位。reset57 i外部復(fù)位輸入:該管腳的低電平將器件復(fù)位,并使i/o 口和外圍功能恢復(fù)默認(rèn)狀態(tài),處理器從地址0 開始執(zhí)行。帶遲滯的ttl 電平,管腳可承受5v 電壓。

18、xtal162i振蕩器電路和內(nèi)部時(shí)鐘發(fā)生器的輸入。xtal261 o振蕩放大器的輸出。rtxc13 irtc 振蕩電路的輸入。rtxc25 ortc 振蕩電路的輸出。vss6,18,25,42 50i地:0v 參考點(diǎn)。vssa59i模擬地:0v 參考點(diǎn)。標(biāo)稱電壓與vss 相同,但應(yīng)當(dāng)互相隔離以減少噪聲和故障。vdd23,43 51i3.3v 電源:內(nèi)核和i/o 口的電源電壓。vdda7i模擬3.3v 端口電源:標(biāo)稱電壓與vdd 相同,但應(yīng)當(dāng)互相隔離以減少噪聲和故障。該電壓也用來向片內(nèi)pll 供電。vref63ia/d 轉(zhuǎn)換器參考電壓:標(biāo)稱電壓與vdd 相同,但應(yīng)當(dāng)互相隔離以減少噪聲和故障。該管

19、腳的電平用作a/d 和d/a 轉(zhuǎn)換器的參考電壓。vbat49irtc 電源:rtc 的3.3v 電源端。3.2.2 晶振電路lpc2138arm晶體振蕩器可以使用外接晶體產(chǎn)生時(shí)鐘,稱之為“振蕩模式”,硬件連接如圖3.2所示。微控制器內(nèi)部的振蕩電路僅支持130mhz的外部晶體。由于芯片內(nèi)部已經(jīng)集成了反饋電阻,所以只需在外部連接一個(gè)晶體和電容c1、c2就可以形成基本模式的振蕩。圖3.2晶振電路3.2.3 復(fù)位電路一些微控制器自己在上電時(shí)會(huì)產(chǎn)生復(fù)位信號(hào),但大多數(shù)微控制器需要外部輸入這個(gè)信號(hào)。因?yàn)檫@個(gè)信號(hào)會(huì)使微控制器初始化為某個(gè)確定的狀態(tài),所以這個(gè)信號(hào)的穩(wěn)定性和可靠性對(duì)微控制器的正常工作有重大影響。s

20、p708s芯片屬于微處理器(up)監(jiān)控器件,可有效的監(jiān)測up及數(shù)字系統(tǒng)中的供電及電池的工作情況,以提高系統(tǒng)的可靠性。帶手動(dòng)復(fù)位的復(fù)位電路如圖3.3所示。圖3.3 復(fù)位電路3.2.4 電源電路電源系統(tǒng)為整個(gè)系統(tǒng)提供能量,是整個(gè)系統(tǒng)工作的基礎(chǔ),具有極其重要的地位,但卻往往被忽略。如果電源系統(tǒng)處理的好,那么整個(gè)系統(tǒng)的故障往往減少了一大半。設(shè)計(jì)電源電路必須考慮的因素有:輸出的電壓、電流和功率;輸入的電壓、電流;安全因素;輸出波紋;電磁兼容和電磁干擾;體積限制;功耗限制;成本限制。電源電路如圖3.4所示。圖3.4 電源電路3.3 rs232電平轉(zhuǎn)換電路設(shè)計(jì)1、 串口原理串口,簡單地說,就是串行收發(fā)數(shù)據(jù)的

21、接口。串口通信是一種異步通信方式(串口通信也有同步通信的標(biāo)準(zhǔn),但實(shí)際應(yīng)用很少),其中負(fù)責(zé)異步串行收發(fā)數(shù)據(jù)的模塊叫uart(univesal asynchronous receiver/transmitter)。由于異步通信的數(shù)據(jù)發(fā)送方和數(shù)據(jù)接收方的系統(tǒng)時(shí)鐘不是同步的,數(shù)據(jù)通信過程中也不攜帶任何時(shí)鐘信息,因此他的速度收到了很大限制,目前較常用的串口速率最快的也只能達(dá)到115200bit/s。串口發(fā)送的數(shù)據(jù)都是以字節(jié)為單位的,一個(gè)字節(jié)發(fā)送的過程分為起始位、數(shù)據(jù)位和結(jié)束位三部分。所有數(shù)據(jù)的起始位和結(jié)束位都分別是邏輯0和1。串口通信是異步通信,因此設(shè)備兩端需要一個(gè)時(shí)鐘同步的過程,這在高速數(shù)據(jù)通信中往往

22、由采用鎖相環(huán)技術(shù)的時(shí)鐘恢復(fù)電路來完成。但是在低速率的串口通信中,人們設(shè)計(jì)了一種更為簡單的方式實(shí)現(xiàn)時(shí)鐘同步。串口數(shù)據(jù)線平時(shí)的狀態(tài)總是邏輯1,而設(shè)計(jì)接收方采用比線路速率高得多的時(shí)鐘對(duì)數(shù)據(jù)線進(jìn)行采樣,一旦在線路上采到邏輯0,則表示線路上有新的數(shù)據(jù)發(fā)送了,接收方根據(jù)事先約定好的串口速率,以自己的高速時(shí)鐘計(jì)數(shù),在每一個(gè)數(shù)據(jù)位的有效期內(nèi)采樣到正確的數(shù)值。當(dāng)一個(gè)字節(jié)發(fā)送完畢,為了讓數(shù)據(jù)接收方有足夠的準(zhǔn)備時(shí)間接收下一個(gè)字節(jié),因此又定義了停止位。停止位是邏輯1,因此相當(dāng)于強(qiáng)迫數(shù)據(jù)線回到空間狀態(tài)至少一個(gè)數(shù)據(jù)周期。2、 串口電平串口設(shè)備實(shí)際使用時(shí),人們?yōu)榱俗屗男盘?hào)可以傳輸?shù)母h(yuǎn),并不會(huì)直接將邏輯電平放到傳輸線上,

23、而是會(huì)做電平轉(zhuǎn)換。這個(gè)電平標(biāo)準(zhǔn)就是rs232標(biāo)準(zhǔn),它規(guī)定邏輯1(也稱為mark)的電平范圍是-5-15v;邏輯0(也稱為space)的電平范圍是515v。3、 電平轉(zhuǎn)換電路串口信號(hào)要傳輸必須進(jìn)行電平轉(zhuǎn)換,而所有的串口芯片,包括處理器內(nèi)部集成的串口模塊都不會(huì)直接輸出rs232電平的串口信號(hào),因此都需要進(jìn)行串口電平轉(zhuǎn)換。完成串口電平轉(zhuǎn)換 電路設(shè)計(jì)很簡單,最簡單的能進(jìn)行雙向通信的串口只需要3根信號(hào)線,這種串口實(shí)際使用的也最多。圖 3.5 給出了利用電平轉(zhuǎn)換芯片max3223完成串口電平轉(zhuǎn)換的電路。圖3.5 串口電平轉(zhuǎn)換電路3.4 硬件電路連線圖本次設(shè)計(jì)的硬件電路連線圖如圖3.6所示。圖3.6 硬件電

24、路連線圖第4章 軟件設(shè)計(jì)4.1 串行通信協(xié)議設(shè)計(jì)無論是異步串行通信還是同步串行通信、為了保證通信的正確,發(fā)送方和接收方事先必須有一個(gè)雙方共同遵守的協(xié)議,來規(guī)定數(shù)據(jù)傳送格式、起始標(biāo)志、結(jié)束標(biāo)志、校驗(yàn)方式等。例如pc系列微機(jī)中廣泛采用的異步串行通信方式,其通信協(xié)議規(guī)定的信息傳輸格式如圖4.1所示。按該格式,每幀信息(即每個(gè)字符)由4部分組成: 圖4.1 異步串行通信格式(1) 1位起始位,規(guī)定為低電平“0”。(2) 58位數(shù)據(jù)位,它緊跟在起始位后面,是要傳送的有效信息。規(guī)定從低位至高位依次傳送。(3) 0位或1位奇偶校驗(yàn)位。(4) 1位,112位或2位停止位,規(guī)定為高電平“1”。其中采用相反極性的

25、起始位和停止位起著至關(guān)重要的作用。起始位標(biāo)志每個(gè)字符的開始,通知接收器開始裝置一個(gè)字符,以便和發(fā)送器取得同步;停止位標(biāo)志每個(gè)字符的結(jié)束。利用前一個(gè)字符的高電平停止位到后一個(gè)字符的低電平起始位的負(fù)跳變,接收器便知道這是一個(gè)字符的開始,可以以此作為新字符內(nèi)位檢測與采樣的時(shí)間基準(zhǔn)。正是為了保證這種從一個(gè)字符到另一個(gè)字符的轉(zhuǎn)換必須以負(fù)跳變開始,通信協(xié)議規(guī)定在字符與字符之間出現(xiàn)空閑狀態(tài)時(shí),空閑位也一律用停止位的“1”填充。除此之外,通常還采取以下兩項(xiàng)措施來進(jìn)一步消除因收發(fā)雙方時(shí)鐘的相對(duì)偏差而可能導(dǎo)致的接收端采樣錯(cuò)誤: (1)接收器在每位碼元的中心采樣,以獲得最大的收/發(fā)時(shí)鐘頻率偏差容限。(2)接收器采用

26、比傳送波特率更高頻率的時(shí)鐘來控制采樣時(shí)間,以提高采樣的分辨能力和抗干擾能力。例如,利用圖4.2所示的這種經(jīng)16倍頻的接收時(shí)鐘對(duì)串行數(shù)據(jù)流進(jìn)行檢測和采樣,接收器能在一個(gè)位周期的1/16時(shí)間內(nèi)決定出字符的開始。如果采樣頻率和傳送波特率相同,沒有這種倍頻關(guān)系,則分辨率會(huì)很差。比如在起始位前沿出現(xiàn)前夕剛采樣一次,則下次采樣要到起始位結(jié)束前夕才進(jìn)行。而假若在這個(gè)位周期期間因某種原因恰恰使接收端時(shí)鐘往后偏移了一點(diǎn)點(diǎn),就會(huì)錯(cuò)過起始位而導(dǎo)致整個(gè)后面各位檢測和識(shí)別的錯(cuò)誤。圖4.2 用16倍波特率接收時(shí)鐘控制采樣過程示意圖4.2 程序設(shè)計(jì)4.2.1 流程圖遠(yuǎn)端arm嵌入式系統(tǒng)lpc2138芯片采用中斷方式進(jìn)行數(shù)據(jù)

27、接收, 基于軟件編程與上位機(jī)進(jìn)行通訊, 下位機(jī)中斷子程序流程、數(shù)據(jù)發(fā)送流程、串口初始化流程和數(shù)據(jù)接收流程分別如圖4.3、圖4.4、圖4.5和圖4.6所示:圖4.3 中斷子程序流程圖圖4.4 數(shù)據(jù)發(fā)送流程圖圖4.5 串口初始化流程圖 圖4.6 數(shù)據(jù)接收流程圖 控制中心上位pc 機(jī)始終在循環(huán)發(fā)送指令, 當(dāng)遠(yuǎn)端單元接收到與本機(jī)地址相同的指令時(shí), 置接收數(shù)據(jù)標(biāo)志, 接收到自己的指令后, 遠(yuǎn)端單元開始上傳數(shù)據(jù)到上位pc機(jī), 與此同時(shí)pc 機(jī)停止發(fā)送指令并處于接收數(shù)據(jù)狀態(tài), 等到接收數(shù)據(jù)完畢并檢驗(yàn)數(shù)據(jù)合格后發(fā)送確認(rèn)命令到此遠(yuǎn)端單元; 如果沒收到數(shù)據(jù)或數(shù)據(jù)不合格, 則發(fā)送錯(cuò)誤標(biāo)志到此遠(yuǎn)端單元; 如果收到的指

28、令與本機(jī)地址不同時(shí), 程序返回中斷入口處, 繼續(xù)執(zhí)行其它操作。這樣可保證遠(yuǎn)端單元把數(shù)據(jù)準(zhǔn)確地發(fā)送到上位機(jī)。圖4.7 pc機(jī)通訊子程序流程圖4.2.2 程序清單/* 文 件 名:main.c* 功 能:向串口發(fā)送數(shù)據(jù)。* 說 明:使用外部11.0592mhz晶振,根據(jù)config.h文件配置,fpclk=11.0592mhz;* 通訊波特率115200,8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn)。*/#include config.h#define uart_bps115200/ 定義通訊波特率uint8 const send_string = hello world!rn;/* 名 稱:delayns

29、()* 功 能:長軟件延時(shí)* 入口參數(shù):dly延時(shí)參數(shù),值越大,延時(shí)越久* 出口參數(shù):無*/void delayns(uint32 dly) uint32 i; for(; dly0; dly-) for(i=0; i5000; i+); /* 名 稱:uart0_ini()* 功 能:初始化串口0。設(shè)置為8位數(shù)據(jù)位,1位停止位,無奇偶校驗(yàn),波特率為115200* 入口參數(shù):無* 出口參數(shù):無*/void uart0_init(void) uint16 fdiv; u0lcr = 0x83;/ dlab = 1,可設(shè)置波特率 fdiv = (fpclk / 16) / uart_bps;/ 設(shè)

30、置波特率 u0dlm = fdiv / 256; u0dll = fdiv % 256; u0lcr = 0x03;/* 名 稱:uart0_sendbyte()* 功 能:向串口發(fā)送字節(jié)數(shù)據(jù),并等待發(fā)送完畢。* 入口參數(shù):data要發(fā)送的數(shù)據(jù)* 出口參數(shù):無*/void uart0_sendbyte(uint8 data) u0thr = data; / 發(fā)送數(shù)據(jù) while( (u0lsr&0x40)=0 ); / 等待數(shù)據(jù)發(fā)送完畢/* 名 稱:uart0_sendstr()* 功 能:向串口發(fā)送一字符串* 入口參數(shù):srt要發(fā)送的字符串的指針* 出口參數(shù):無*/void uart0_se

31、ndstr(uint8 const *str) while(1) if( *str = 0 ) break; uart0_sendbyte(*str+); / 發(fā)送數(shù)據(jù) /* 名 稱:uart0_rcvbyte()* 功 能:從串口接收字節(jié)數(shù)據(jù)。使用查詢方式* 入口參數(shù):無* 出口參數(shù):返回接收到的數(shù)據(jù)*/uint8 uart0_rcvbyte(void)uint8 rcv_data;while(u0lsr&0x01)=0);rcv_data=u0rbr;return(rcv_data);/* 名 稱:main()* 功 能:向串口uart0發(fā)送字符串hello world!*/int mai

32、n(void) pinsel0 = 0x00000005; / 設(shè)置i/o連接到uart0 uart0_init(); while(1) uart0_rcvbyte(); uart0_sendstr(send_string); delayns(10); return(0);第5章 總結(jié)本次課程設(shè)計(jì)我組的課題是基于lpc2138芯片與pc機(jī)的串行通信設(shè)計(jì),通過這次的課程設(shè)計(jì),我了解了嵌入式系統(tǒng)的一些基本知識(shí)和arm嵌入式系統(tǒng)的應(yīng)用。這次課程設(shè)計(jì)我們查閱了許多的相關(guān)文獻(xiàn)和書籍,了解了許多關(guān)于嵌入式系統(tǒng)的應(yīng)用知識(shí),對(duì)arm7系列的嵌入式系統(tǒng)芯片有了客觀的認(rèn)識(shí)。課程設(shè)計(jì)是我們專業(yè)課程知識(shí)綜合應(yīng)用的實(shí)踐訓(xùn)練,著是我們邁向社會(huì),從

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論