嵌入式串口通信的設(shè)計(jì)_第1頁(yè)
嵌入式串口通信的設(shè)計(jì)_第2頁(yè)
嵌入式串口通信的設(shè)計(jì)_第3頁(yè)
嵌入式串口通信的設(shè)計(jì)_第4頁(yè)
嵌入式串口通信的設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩28頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、- 1 -*實(shí)踐教學(xué)*蘭州理工大學(xué)計(jì)算機(jī)與通信學(xué)院2013年春季學(xué)期嵌入式系統(tǒng)開(kāi)發(fā)技術(shù)課程設(shè)計(jì)題 目: 嵌入式串口通信設(shè)計(jì) 專(zhuān)業(yè)班級(jí): 通信工程四班 姓 名: / 學(xué) 號(hào): / 指導(dǎo)教師: / 成 績(jī): 1 摘 要 嵌入式是以應(yīng)用為中心,以計(jì)算機(jī)技術(shù)為基礎(chǔ),軟件硬件可剪裁,適應(yīng)應(yīng)用系統(tǒng)對(duì)功能、可靠性、成本、體積、功耗嚴(yán)格要求的專(zhuān)用計(jì)算機(jī)系統(tǒng),應(yīng)用ARM體系結(jié)構(gòu)、ARM9-2410開(kāi)發(fā)板、串行通信接口工作原理、ARM9調(diào)試仿真工具ADS1. 2和MULTI-ICE軟件仿真器,用超級(jí)終端進(jìn)行數(shù)據(jù)傳送測(cè)試,實(shí)現(xiàn)連接PC機(jī)、ARM9-2410開(kāi)發(fā)板、仿真器,實(shí)現(xiàn)串行通信,傳輸速率115200

2、bps,接收來(lái)自串口(通過(guò)超級(jí)終端)的字符并將接收到的字符發(fā)送到超級(jí)終端,實(shí)現(xiàn)監(jiān)測(cè)。 嵌入式系統(tǒng)以其小型、專(zhuān)用、易攜帶、可靠性高的特點(diǎn),已經(jīng)在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用,如軍事國(guó)防、消費(fèi)電子、通信設(shè)備、工業(yè)控制等。關(guān)鍵字:ARM體系;ARM9-2410開(kāi)發(fā)板;串行通信;數(shù)據(jù)傳送;監(jiān)測(cè)目 錄前 言I一、串口通信概述11.1 串口通信的原理11.2 串口通信的開(kāi)發(fā)工具11.2.1 2410F硬件平臺(tái)簡(jiǎn)介21.2.2 ARM簡(jiǎn)介21.2.3 Linux系統(tǒng)簡(jiǎn)介31.3 串口通信的基本任務(wù)4二、系統(tǒng)分析52.1 RS-232C標(biāo)準(zhǔn)52.2 系統(tǒng)硬件結(jié)構(gòu)原理11三、串口驅(qū)動(dòng)程序設(shè)計(jì)133.1 串

3、口操作需要的頭文件133.2 打開(kāi)串口133.3串口設(shè)置143.4 串口讀寫(xiě)163.5 關(guān)閉串口18四、總結(jié)19五、 致謝20參考文獻(xiàn)21附 錄22前 言 串口通信是指外設(shè)和計(jì)算機(jī)間,通過(guò)數(shù)據(jù)信號(hào)線(xiàn) 、地線(xiàn)、控制線(xiàn)等,按位進(jìn)行傳輸數(shù)據(jù)的一種通訊方式。這種通信方式使用的數(shù)據(jù)線(xiàn)少,在遠(yuǎn)距離通信中可以節(jié)約通信成本,但其傳輸速度比并行傳輸?shù)汀?隨著計(jì)算機(jī)系統(tǒng)的應(yīng)用和微機(jī)網(wǎng)絡(luò)的發(fā)展,通信功能越來(lái)越顯得重要.這里所說(shuō)的通信是指計(jì)算機(jī)與外界的信息交換.因此,通信既包括計(jì)算機(jī)與外部設(shè)備之間,也包括計(jì)算機(jī)和計(jì)算機(jī)之間的信息交換.由于串行通信是在一根傳輸線(xiàn)上一位一位的傳送信息,所用的傳輸線(xiàn)少,并且可以借助現(xiàn)成的電

4、話(huà)網(wǎng)進(jìn)行信息傳送,因此,特別適合于遠(yuǎn)距離傳輸.對(duì)于那些與計(jì)算機(jī)相距不遠(yuǎn)的人機(jī)交換設(shè)備和串行存儲(chǔ)的外部設(shè)備如終端、打印機(jī)、邏輯分析儀、磁盤(pán)等,采用串行方式交換數(shù)據(jù)也很普遍.在實(shí)時(shí)控制和管理方面,采用多臺(tái)微機(jī)處理機(jī)組成分級(jí)分布控制系統(tǒng)中,各 CPU 之間的通信一般都是串行方式.所以串行接口是微機(jī)應(yīng)用系統(tǒng)常用的接口。許多外設(shè)和計(jì)算機(jī)按串行方式進(jìn)行通信,這里所說(shuō)的串行方式,是指外設(shè)與接口電路之間的信息傳送方式,實(shí)際上,CPU 與接口之間仍按并行方式工作。- 1 -一、串口通信概述 所謂串口通信,是指外設(shè)和計(jì)算機(jī)間使用一根數(shù)據(jù)信號(hào)線(xiàn)(另外需要地線(xiàn)),數(shù)據(jù)在一根數(shù)據(jù)信號(hào)線(xiàn)上一位一位進(jìn)行傳輸,每一位數(shù)據(jù)都占

5、據(jù)一個(gè)固定的時(shí)間長(zhǎng)度。 串口傳輸是二進(jìn)制代碼序列在一條信道上以位(元碼)為單位,按時(shí)間順序且按位傳輸?shù)耐ㄐ欧绞?。串行傳輸時(shí),發(fā)送端按位發(fā)送,接收端按位接受,同時(shí)還要對(duì)所傳輸?shù)奈患右源_認(rèn),所以收發(fā)雙方要采取同步措施,否則接受端將不能正確區(qū)分出所傳輸?shù)臄?shù)據(jù)。 串口通信不但能實(shí)現(xiàn)計(jì)算機(jī)與嵌入式開(kāi)發(fā)板之間的數(shù)據(jù)傳輸,而且還能實(shí)現(xiàn)計(jì)算機(jī)對(duì)嵌入式開(kāi)發(fā)板的控制。若采用普通單片機(jī),對(duì)外部設(shè)備的訪(fǎng)問(wèn)就需要利用復(fù)雜的匯編語(yǔ)言進(jìn)行編程或者使用C 51 自己編寫(xiě)設(shè)備的初始化以及讀寫(xiě)訪(fǎng)問(wèn)程序,這樣的過(guò)程不僅復(fù)雜,而且不利于大規(guī)模的開(kāi)發(fā)和設(shè)計(jì)。ARM 與8051 等普通單片機(jī)相比,具有開(kāi)發(fā)簡(jiǎn)單、靈活,而且性能穩(wěn)定、功能易

6、于擴(kuò)展等一系列優(yōu)勢(shì),因而在汽車(chē)電子、手持設(shè)備、無(wú)線(xiàn)領(lǐng)域和航空航天等嵌入式系統(tǒng)中得到廣泛的應(yīng)用。將Linux 移植到ARM 嵌入式處理器后,可以利用操作系統(tǒng)中提供的系統(tǒng)調(diào)用把串口及其他外設(shè)當(dāng)成普通文件進(jìn)行操作,讀寫(xiě)方便,因此進(jìn)行相應(yīng)開(kāi)發(fā)可以提高系統(tǒng)編程效率,而且還可以簡(jiǎn)化調(diào)試的復(fù)雜程度。1.1 串口通信的原理串行端口的本質(zhì)功能是作為CPU和串行設(shè)備間的編碼轉(zhuǎn)換器。當(dāng)數(shù)從CPU經(jīng)過(guò)串行端口發(fā)送出去時(shí),字節(jié)數(shù)據(jù)轉(zhuǎn)換為串行的位。在接收數(shù)據(jù)時(shí),串行的位被轉(zhuǎn)換為字節(jié)數(shù)據(jù)。串口是系統(tǒng)資源的一部分,應(yīng)用程序要使用串口進(jìn)行通信,必須在使用之前向操作系統(tǒng)提出申請(qǐng)要求(打開(kāi)串口),通信完成后必須釋放資源(關(guān)閉串口)

7、。1.2 串口通信的開(kāi)發(fā)工具 本次開(kāi)發(fā)采用的硬件平臺(tái)是ARM920T處理器的2410F,開(kāi)發(fā)系統(tǒng)平臺(tái)是Lin ux系統(tǒng)。1.2.1 2410F硬件平臺(tái)簡(jiǎn)介2410F 是基于三星(samsung)ARM9 嵌入式處理器 S3C2410 處理器的一款開(kāi)發(fā)平臺(tái),“F”指基于2410 的第六代開(kāi)發(fā)套件。系統(tǒng)運(yùn)行在 202M 的主2410F 是基于三星(samsung)ARM9 嵌入式處理器 S3C2410 處理器頻下發(fā)揮出色的性能。可以完成MP3,MPG,VOIP 等工作。2410 資源豐富適合 ARM 處理器的初學(xué)者學(xué)習(xí)使用。2410F 上面使用的核心模塊體積小資源豐富,IO 充足還可以應(yīng)用在二次開(kāi)

8、發(fā)的產(chǎn)品當(dāng)中。這款設(shè)備主要包括核心板與底板兩個(gè)部分,核心板采用6 層PCB 設(shè)計(jì)、底板采用2 層PCB 板設(shè)計(jì),核心器件是基于目前業(yè)內(nèi)主流使用的SAMSUNG ARM9S3C2410 處理器,主頻202MHz,配套的存儲(chǔ)器,網(wǎng)卡等設(shè)備;底板主要是各類(lèi)型的接口。S3C2410處理器是Samsung公司基于ARM公司的ARM920T處理器核,采用0.18um制造工藝的32位微控制器。該處理器擁有:獨(dú)立的16KB指令Cache和16KB數(shù)據(jù)Cache,MMU,支持TFT的LCD控制器,NAND閃存控制器,3路UART,4路DMA,4路帶PWM的Timer ,I/O口,RTC,8路10位ADC,Tou

9、ch Screen接口,IIC-BUS 接口,IIS-BUS 接口,2個(gè)USB主機(jī),1個(gè)USB設(shè)備,SD主機(jī)和MMC接口,2路SPI。S3C2410處理器最高可運(yùn)行在203MHz。它是基于ARM920T 內(nèi)核的16/32 位RISC 處理器, 主要應(yīng)用于嵌入式系統(tǒng)中。S3C2410 擁有強(qiáng)大的數(shù)據(jù)處理能力,又有著低成本,低功耗等優(yōu)點(diǎn),在各種手持及移動(dòng)設(shè)備上的應(yīng)用越來(lái)越廣泛,基于其平臺(tái)的程序功能也越來(lái)越復(fù)雜。于是,在其平臺(tái)上架構(gòu)多線(xiàn)程的操作系統(tǒng)已成為越來(lái)越多系統(tǒng)設(shè)計(jì)者的訴求, 本文介紹多線(xiàn)程在S3C2410 上的具體實(shí)現(xiàn)過(guò)程。1.2.2 ARM簡(jiǎn)介ARM(Advanced RISC Machin

10、es),既可以認(rèn)為是一個(gè)公司的名字,也可以認(rèn)為是對(duì)一類(lèi)微處理器的通稱(chēng),還可以認(rèn)為是一種技術(shù)的名字。1991 年ARM 公司成立于英國(guó)劍橋,主要出售芯片設(shè)計(jì)技術(shù)的授權(quán)。目前,采用ARM 技術(shù)知識(shí)產(chǎn)權(quán)(IP)核的微處理器,即通常所說(shuō)的ARM微處理器,已遍及工業(yè)控制、消費(fèi)類(lèi)電子產(chǎn)品、通信系統(tǒng)、網(wǎng)絡(luò)系統(tǒng)、無(wú)線(xiàn)系統(tǒng)、軍用系統(tǒng)等各類(lèi)產(chǎn)品市場(chǎng),基于ARM 技術(shù)的微處理器應(yīng)用約占據(jù)了32 位RISC 微處理器70以上的市場(chǎng)份額,ARM 技術(shù)正在逐步滲入到我們生活的各個(gè)方面。ARM 公司是專(zhuān)門(mén)從事基于RISC 技術(shù)芯片設(shè)計(jì)開(kāi)發(fā)的公司,作為知識(shí)產(chǎn)權(quán)供應(yīng)商,本身不直接從事芯片生產(chǎn),靠轉(zhuǎn)讓設(shè)計(jì)許可,由合作公司生產(chǎn)各具

11、特色的芯片,世界各大半導(dǎo)體生產(chǎn)商從ARM 公司購(gòu)買(mǎi)其ARM 微處理器核,根據(jù)各自不同的應(yīng)用領(lǐng)域,加入適當(dāng)?shù)耐鈬娐?,從而形成自己的ARM 微處理器芯片進(jìn)入市場(chǎng)。目前全世界有幾十家大的半導(dǎo)體公司都使用ARM 公司的授權(quán),因此既使得ARM 技術(shù)獲得更多的第三方工具、制造、軟件的支持,又使整個(gè)系統(tǒng)成本降低,使產(chǎn)品更容易進(jìn)入市場(chǎng)并被消費(fèi)者所接受,更具有競(jìng)爭(zhēng)力。ARM 微處理器一般具有如下特點(diǎn):􀂗 (1)體積小、低功耗、低成本、高性能;􀂗 (2)支持 Thumb(16 位)/ARM(32 位)雙指令集,能很好的兼容8/16 位器件;􀂗 (3)大量使用

12、寄存器,指令執(zhí)行速度更快;􀂗 (4)大多數(shù)數(shù)據(jù)操作都在寄存器中完成;􀂗 (5)尋址方式靈活簡(jiǎn)單,執(zhí)行效率高;􀂗 (6)指令長(zhǎng)度固定。1.2.3 Linux系統(tǒng)簡(jiǎn)介L(zhǎng)inux是一類(lèi)Unix計(jì)算機(jī)操作系統(tǒng)的統(tǒng)稱(chēng)。Linux操作系統(tǒng)也是自由軟件和開(kāi)放源代碼發(fā)展中最著名的例子。Linux 一般有四個(gè)主要部分:內(nèi)核、Shell、文件結(jié)構(gòu)和實(shí)用工具。(1)Linux 內(nèi)核內(nèi)核是系統(tǒng)的心臟,是運(yùn)行程序和管理像磁盤(pán)和打印機(jī)等硬件設(shè)備的核心程序。它從用戶(hù)那里接受命令并把命令送給內(nèi)核去執(zhí)行。(2)Linux ShellShell 是系統(tǒng)的用戶(hù)界面,提供了用戶(hù)與

13、內(nèi)核進(jìn)行交互操作的一種接口。它接收用戶(hù)輸入的命令并把它送入內(nèi)核去執(zhí)行。實(shí)際上Shell 是一個(gè)命令解釋器,它解釋由用戶(hù)輸入的命令并且把它們送到內(nèi)核。不僅如此,Shell 有自己的編程語(yǔ)言用于對(duì)命令的編輯,它允許用戶(hù)編寫(xiě)由shell 命令組成的程序。Shell 編程語(yǔ)言具有普通編程語(yǔ)言的很多特點(diǎn),比如它也有循環(huán)結(jié)構(gòu)和分支控制結(jié)構(gòu)等,用這種編程語(yǔ)言編寫(xiě)的Shell 程序與其他應(yīng)用程序具有同樣的效果。3(3)Linux 文件結(jié)構(gòu)文件結(jié)構(gòu)是文件存放在磁盤(pán)等存儲(chǔ)設(shè)備上的組織方法。主要體現(xiàn)在對(duì)文件和目錄的組織上。目錄提供了管理文件的一個(gè)方便而有效的途徑。我們能夠從一個(gè)目錄切換到另一個(gè)目錄,而且可以設(shè)置目錄

14、和文件的權(quán)限,設(shè)置文件的共享程度。使用Linux,用戶(hù)可以設(shè)置目錄和文件的權(quán)限,以便允許或拒絕其他人對(duì)其進(jìn)行訪(fǎng)問(wèn)。(4)Linux 實(shí)用工具標(biāo)準(zhǔn)的 Linux 系統(tǒng)都有一套叫做實(shí)用工具的程序,它們是專(zhuān)門(mén)的程序,例如編輯器、執(zhí)行標(biāo)準(zhǔn)的計(jì)算操作等。用戶(hù)也可以產(chǎn)生自己的工具。實(shí)用工具可分三類(lèi):􀂗 編輯器:用于編輯文件。􀂗 過(guò)濾器:用于接收數(shù)據(jù)并過(guò)濾數(shù)據(jù)。􀂗 交互程序:允許用戶(hù)發(fā)送信息或接收來(lái)自其他用戶(hù)的信息。1.3 串口通信的基本任務(wù)(1)實(shí)現(xiàn)數(shù)據(jù)格式化:因?yàn)閬?lái)自CPU 的是普通的并行數(shù)據(jù),所以,接口電路應(yīng)具有實(shí)現(xiàn)不同串行通信方式下的數(shù)據(jù)格式化的

15、任務(wù)。在異步通信方式下,接口自動(dòng)生成起止式的幀數(shù)據(jù)格式。在面向字符的同步方式下,接口要在待傳送的數(shù)據(jù)塊前加上同步字符。(2)進(jìn)行串-并轉(zhuǎn)換:串行傳送,數(shù)據(jù)是一位一位串行傳送的,而計(jì)算機(jī)處理數(shù)據(jù)是并行數(shù)據(jù)。所以當(dāng)數(shù)據(jù)由計(jì)算機(jī)送至數(shù)據(jù)發(fā)送器時(shí),首先把串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)才能送入計(jì)算機(jī)處理。因此串并轉(zhuǎn)換是串接口電路和的重要任務(wù)。(3)控制數(shù)據(jù)傳輸速率:串行通信接口電路應(yīng)具有對(duì)數(shù)據(jù)傳輸速率-波特率進(jìn)行先擇和控制的能力。(4)進(jìn)行錯(cuò)誤檢測(cè):在發(fā)送接口電路對(duì)傳送的字符數(shù)據(jù)自動(dòng)生成奇偶校驗(yàn)位或其他校驗(yàn)碼。在接收時(shí),接口電路檢查字符的奇偶校驗(yàn)或其他檢驗(yàn)碼,確定是否發(fā)生傳送錯(cuò)誤。(5)進(jìn)行TTL 與EIA 電平

16、轉(zhuǎn)換:CPU 和終端均采用TTL 電平及正邏輯,它們與EIA 采用的電平及負(fù)邏輯不兼容,需在接口電路中進(jìn)行轉(zhuǎn)換。51二、系統(tǒng)分析 串行端口的本質(zhì)功能是作為CPU 和串行設(shè)備間的編碼轉(zhuǎn)換器,一般微機(jī)內(nèi)都配有通信適配器,使計(jì)算機(jī)能夠與其他具有RS-232C 串口的計(jì)算機(jī)或設(shè)備進(jìn)行通信。本系統(tǒng)主要目的是實(shí)現(xiàn)宿主機(jī)與目標(biāo)機(jī)之間的近距離串行通信, 采用的宿主機(jī)是Intel Centrino架構(gòu)的Red Hat Linux 9.03 環(huán)境PC機(jī), 而目標(biāo)機(jī)是ARM 架構(gòu)的開(kāi)發(fā)板。本系統(tǒng)中目標(biāo)機(jī)開(kāi)發(fā)板的內(nèi)核采用的是三星的S3C2410 ,該開(kāi)發(fā)板采用核心板加底板的模式, 核心板接口采用DIMM200 標(biāo)準(zhǔn)連

17、接器,工作非??煽?可穩(wěn)定運(yùn)行在203 MHz 的時(shí)鐘頻率下。其外設(shè)非常豐富,功能強(qiáng)大,完全可以滿(mǎn)足設(shè)計(jì)需要。串口線(xiàn)采用常用的RS-232C 型接口模式,能實(shí)現(xiàn)計(jì)算機(jī)與開(kāi)發(fā)板間的數(shù)據(jù)傳輸與控制。嵌入式串口通信采用EIA RS-232C標(biāo)準(zhǔn)。2.1 RS-232C標(biāo)準(zhǔn)RS-232C是1969年由電子工業(yè)協(xié)會(huì)(EIA)公布的標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)的用途是定義數(shù)據(jù)終端設(shè)備DTE(Data Terminal Equipment)與數(shù)據(jù)通信設(shè)備DCE(Data Communication Equioment)的接口特性。數(shù)據(jù)終端設(shè)備就是連接通信兩端設(shè)備的連線(xiàn)(如空MODEM)或其他設(shè)備。RS-232C標(biāo)準(zhǔn)的構(gòu)架如

18、圖2.1所示。(數(shù)據(jù)終端設(shè)備DTE)(數(shù)據(jù)通信設(shè)備DCE)(數(shù)據(jù)通信設(shè)備DCE)(數(shù)據(jù)終端設(shè)備DTE)MODEM計(jì)算機(jī)A計(jì)算機(jī)BRS-232C通信線(xiàn)路MODEMRS-232C圖2.1 RS-232C標(biāo)準(zhǔn)的構(gòu)架RS-232C標(biāo)準(zhǔn)的一些主要規(guī)范如下。(1) 電氣特性RS-232C采用非歸零、雙極性編碼,且使用負(fù)邏輯規(guī)定的邏輯電平:-15-5V規(guī)定為邏輯“1”。+5+15V規(guī)定為邏輯“0”。信號(hào)電平與TTL電平不兼容,所以需要電平轉(zhuǎn)換電路(通常使用MAX3232轉(zhuǎn)換)。電平轉(zhuǎn)換電路如圖2.2所示。RS-232C輸出TTL輸出RS-232C接口電路MAX3232RS-232C輸入TTL輸入圖2.2 R

19、S-232C的電平轉(zhuǎn)換電路(2) 引腳定義目前廣泛的DB9引腳定義如圖2.3所示。信號(hào)引腳定義的說(shuō)明見(jiàn)表2.1。9 RIGND 58 CTSDTR 47 RTSTXD 3RXD 26 DSRDCD 1圖2.3 DB9 引腳定義表2.1 DB9引腳說(shuō)明9針串口DB9針號(hào)功能說(shuō)明縮寫(xiě)1輸入,數(shù)據(jù)載波檢測(cè)DCD2輸入,接收數(shù)據(jù)RXD3輸出,發(fā)送數(shù)據(jù)TXD4輸出,DTE準(zhǔn)備就緒DTR5信號(hào)地GND6輸入,MODEM準(zhǔn)備就緒DSR7輸出,請(qǐng)求發(fā)送RTS8輸入,允許發(fā)送CTS9輸入,振鈴指示DELL(3) 字符(幀)格式RS-232C采用起止式異步通信協(xié)議,其特點(diǎn)是一個(gè)字符接著一個(gè)字符進(jìn)行傳輸,并且傳輸一

20、個(gè)字符總是以起始位開(kāi)始,以停止位結(jié)束,字符之間沒(méi)有固定的時(shí)間間隔要求。其傳輸格式如圖2.4所示,每一個(gè)字符的前面都有一位起始位(低電平,邏輯“0”),字符本身有58位數(shù)據(jù)位,接著字符后面是一位校驗(yàn)碼(也可以沒(méi)有校驗(yàn)碼),最后是停止位。停止位后面是不定長(zhǎng)度的空閑位。停止位和空閑位都規(guī)定為高電平(邏輯值“1”),這樣就能保證起始位開(kāi)始處一定有一個(gè)下跳沿,便于接受方識(shí)別。校驗(yàn)位(可以沒(méi)有)起始位數(shù)據(jù)停止位接收方發(fā)送方1 x 1 1 1 1 1 0 1 1 0數(shù)據(jù)流方向1 1 1 1 1 1 0 1 1 01 1 11 0 1 0數(shù)據(jù)單元之間的間隔圖2.4 串行傳輸?shù)墓ぷ髟硎疽鈭D從圖2.4 中可以看

21、出,這種格式是靠起始位和停止位來(lái)實(shí)現(xiàn)字符的界定或同步的,故稱(chēng)為起止式協(xié)議。沒(méi)有統(tǒng)一的時(shí)鐘,沒(méi)有同步字符,依靠起始位和停止位標(biāo)識(shí)每一幀,傳輸時(shí),數(shù)據(jù)的地位在前,高位在后。起始位實(shí)際上是作為同步信號(hào)附加進(jìn)來(lái)的,當(dāng)它變?yōu)榈碗娖綍r(shí),告訴接受方傳輸開(kāi)始,后面接著是數(shù)據(jù)位;而停止位則標(biāo)志一個(gè)字符的結(jié)束。這樣就為通信雙方提供了何時(shí)開(kāi)始收發(fā)、何時(shí)結(jié)束的標(biāo)志。傳輸開(kāi)始前,收發(fā)雙方把所采用的字符格式(包括字符的數(shù)據(jù)位長(zhǎng)度、停止位位數(shù)、有無(wú)校驗(yàn)位以及是奇校驗(yàn)還是偶校驗(yàn)等)和數(shù)據(jù)的傳輸速率進(jìn)行統(tǒng)一規(guī)定。傳輸開(kāi)始后,接收設(shè)備不斷地檢測(cè)線(xiàn)路,看是否有起始位到來(lái)。當(dāng)收到一系列的“1”(停止位或空閑位)之后,檢測(cè)到一個(gè)下跳沿

22、(由“1”變?yōu)椤?”),說(shuō)明起始位出現(xiàn),起始位經(jīng)確認(rèn)后,就開(kāi)始接收所規(guī)定的數(shù)據(jù)位和奇偶校驗(yàn)位以及停止位。然后去掉停止位,對(duì)數(shù)據(jù)位進(jìn)行串并轉(zhuǎn)換,并且經(jīng)奇偶校驗(yàn)無(wú)誤后,才算正確地接收到一個(gè)字符。一個(gè)字符接收完畢,接收設(shè)備又繼續(xù)測(cè)試線(xiàn)路,監(jiān)視“0”電平的到來(lái)和下一位字符的開(kāi)始,直到全部數(shù)據(jù)傳輸完畢。(4)握手協(xié)議RS-232C標(biāo)準(zhǔn)除了規(guī)定的字符格式和通信波特率以外,還在數(shù)據(jù)終端設(shè)備DTE和數(shù)據(jù)通信設(shè)備DCE之間定義了一套握手協(xié)議。握手協(xié)議的過(guò)程如圖2.5所示。數(shù)據(jù)終端設(shè)備DTE 本地MODEM 遠(yuǎn)程MODEM 遠(yuǎn)程DTEDTRDSRRTS呼叫載波信號(hào)DCD 載波確認(rèn)CTSTXD圖2.5 DTE與DC

23、E的握手協(xié)議過(guò)程DTR:數(shù)據(jù)終端設(shè)備DTE準(zhǔn)備就緒。DTE加電并能正確實(shí)現(xiàn)通信時(shí),向DCE發(fā)出DTR信號(hào)。DSR:數(shù)據(jù)通信設(shè)備DCE準(zhǔn)備就緒。MODEM加電并能正確執(zhí)行通信功能時(shí),DTE發(fā)出DSR信號(hào)。RTS:請(qǐng)求發(fā)送。當(dāng)DTE有數(shù)據(jù)需要向另一遠(yuǎn)程DTE傳輸時(shí),DTE在檢測(cè)DSR有效時(shí)向本地MODEM發(fā)出RTS信號(hào)。本地MODEM檢測(cè)到RTS有效,然后根據(jù)目的電話(huà)號(hào)碼向遠(yuǎn)程MODEM發(fā)出呼叫。遠(yuǎn)程MODEM收到該呼叫,發(fā)出回答載波信號(hào)。本地MODEM接受到此載波信號(hào),然后向遠(yuǎn)程MODEM發(fā)出原載波信號(hào)進(jìn)行確認(rèn),同時(shí)向DTE發(fā)出數(shù)據(jù)載波信號(hào)DCD。DCD:數(shù)據(jù)載波信號(hào)檢測(cè)。由MODEM發(fā)向數(shù)據(jù)終

24、端設(shè)備DTE,表示已檢測(cè)到對(duì)方載波信號(hào)。 CTS:允許發(fā)送,當(dāng)一個(gè)MODEM辨認(rèn)出對(duì)方MODEM已經(jīng)準(zhǔn)備接收時(shí),使用CTS信號(hào)通知自己的DTE,表示這個(gè)通信通路已經(jīng)做好數(shù)據(jù)傳輸?shù)臏?zhǔn)備,允許DTE進(jìn)行數(shù)據(jù)發(fā)送。至此,通信鏈路建立,可以通信。RI:振鈴指示。如果MODEM具有自動(dòng)應(yīng)答能力,當(dāng)對(duì)方呼叫傳來(lái)時(shí),MODEM向DTE發(fā)出該信號(hào),指示此呼叫。在電話(huà)呼叫振鈴結(jié)束后,MODEM在DTE已準(zhǔn)備好的情況下(即DTR有效),立即向?qū)Ψ阶詣?dòng)應(yīng)答。(5) 雙機(jī)互連方式雙機(jī)可以利用RS-232C通信接口進(jìn)行直接互連(數(shù)據(jù)終端設(shè)備DTE到DTE),即空MODEM連接。這種形式在嵌入式系統(tǒng)中應(yīng)用極為廣泛。由于R

25、S-232C標(biāo)準(zhǔn)中有兩對(duì)硬件握手協(xié)議的引線(xiàn):DTR和DSR、RTS和CTS,根據(jù)應(yīng)用握手協(xié)議的機(jī)制不同,可分為3種情況:無(wú)硬件握手、DTR和DSR握手、RTS和CTS握手。 無(wú)硬件握手情況無(wú)硬件握手的雙機(jī)互連如圖2.6所示。DTE TXD RXD GND DTETXDRXDGND計(jì)算機(jī)B計(jì)算機(jī)A圖2.6 無(wú)握手的雙機(jī)互連無(wú)硬件握手的連線(xiàn)最簡(jiǎn)單,只需要3根線(xiàn),應(yīng)用比較多。但通信不可靠,接收緩沖區(qū)容易溢出。 DTR和DSR握手情況DTR和DSR握手的雙機(jī)互連如圖2.7所示。 DTETXDRXDGNDDTRDSRDTE TXD RXD GND DTRDSR計(jì)算機(jī)B計(jì)算機(jī)A圖2.7 DTR和DSR握手

26、的雙機(jī)互連采用DTR和DSR握手進(jìn)行發(fā)送和接收數(shù)據(jù)的過(guò)程如下(設(shè)計(jì)算機(jī)A接收,計(jì)算機(jī)B發(fā)送): 若計(jì)算機(jī)A已經(jīng)準(zhǔn)備就緒,則使DTR有效。計(jì)算機(jī)B通過(guò)采集DSR,得知計(jì)算機(jī)A已經(jīng)做好接收數(shù)據(jù)的準(zhǔn)備,可以發(fā)送數(shù)據(jù)。若計(jì)算機(jī)A為準(zhǔn)備好,則DTR無(wú)效,計(jì)算機(jī)B通過(guò)采集DSR,得知計(jì)算機(jī)A尚未做好接收數(shù)據(jù)的準(zhǔn)備,停止發(fā)送數(shù)據(jù)。 RTS和CTS握手情況RTS和CTS握手的雙機(jī)互連如圖2.8所示。DTE TXD RXD GND RTS CTS DTETXDRXDGNDRTSCTS計(jì)算機(jī)A計(jì)算機(jī)B圖2.8 RTS和CTS握手的雙機(jī)互連利用RTS和CTS握手進(jìn)行發(fā)送和接收數(shù)據(jù)的過(guò)程如下(設(shè)計(jì)算機(jī)A接收、計(jì)算機(jī)B

27、發(fā)送):若計(jì)算機(jī)A已經(jīng)準(zhǔn)備就緒,則使RTS有效。計(jì)算機(jī)B通過(guò)采集CTS,得知計(jì)算機(jī)A已經(jīng)做好接收數(shù)據(jù)的準(zhǔn)備,可以發(fā)送數(shù)據(jù)。若計(jì)算機(jī)A未準(zhǔn)備好,則RTS無(wú)效,計(jì)算機(jī)B通過(guò)采集CTS,得知計(jì)算機(jī)A尚未做好接收數(shù)據(jù)的準(zhǔn)備,停止發(fā)送數(shù)據(jù)。2.2 系統(tǒng)硬件結(jié)構(gòu)原理在串口通信的實(shí)現(xiàn)過(guò)程中,要保證數(shù)據(jù)傳輸?shù)目煽啃院头€(wěn)定性, 其硬件設(shè)計(jì)是必不可少的, 本文中選用S3C2410 芯片作為核心器件。S3C2410 芯片是SAMGSUNG公司16/ 32 位的RISC 處理器,采用ARM920 T 內(nèi)核,內(nèi)部具有2 個(gè)獨(dú)立的UART 控制器以及分開(kāi)的16 kB的指令Cache 和16 kB 數(shù)據(jù)Cache ,每個(gè)控

28、制器支持的最高波特率可達(dá)到230. 4 kb/ s 。S3C2410 芯片的這些特點(diǎn),為實(shí)現(xiàn)在Linux 操作系統(tǒng)下計(jì)算機(jī)與開(kāi)發(fā)板間的串口通信提供了可靠的保證?;赟3C2410 的嵌入式串口通信的硬件結(jié)構(gòu)原理如圖2.9所示: 宿主機(jī)(計(jì)算機(jī)系統(tǒng)) 目標(biāo)機(jī)(開(kāi)發(fā)板) JTAG接口模塊電源模塊計(jì)算機(jī)主機(jī)設(shè)備(帶RS-232接口)顯示器液晶顯示模塊S3C2410 ARM芯片串行接口線(xiàn)DIMM200連接器接口模塊鍵盤(pán)控制模塊鍵盤(pán)外擴(kuò)存儲(chǔ)器模塊圖2.9 系統(tǒng)硬件結(jié)構(gòu)原理圖宿主機(jī)即計(jì)算機(jī)系統(tǒng)中,在Linux 操作系統(tǒng)下編寫(xiě)好串口通信的程序,通過(guò) 網(wǎng)絡(luò)ftp下載至目標(biāo)機(jī)即開(kāi)發(fā)板中,在相應(yīng)的軟件控制命令下,

29、通過(guò)串行接口線(xiàn)即可實(shí)現(xiàn)宿主機(jī)與目標(biāo)機(jī)間數(shù)據(jù)的發(fā)送和接收。目標(biāo)機(jī)中電源模塊提供了開(kāi)發(fā)板系統(tǒng)工作所需的正常電壓,各種數(shù)據(jù)信息可以通過(guò)液晶顯示模塊及時(shí)顯示出來(lái),還可以通過(guò)鍵盤(pán)控制模塊來(lái)實(shí)現(xiàn)對(duì)目標(biāo)機(jī)操作的控制,外擴(kuò)存儲(chǔ)器模塊可以由FLASH 或SDRAM 構(gòu)成,當(dāng)然作為一個(gè)完整的系統(tǒng),還必須配有其他外圍電路,以保證系統(tǒng)的正常工作。 三、串口驅(qū)動(dòng)程序設(shè)計(jì) 由于嵌入式系統(tǒng)是一個(gè)受資源限制的系統(tǒng),因此不能直接在嵌入式系統(tǒng)硬件上進(jìn)行編程。作為一個(gè)完整的嵌入式系統(tǒng),其軟件設(shè)計(jì)也是一個(gè)很重要的方面。本系統(tǒng)軟件的實(shí)現(xiàn)是通過(guò)串口設(shè)置和讀寫(xiě)串口等操作來(lái)完成宿主機(jī)與目標(biāo)機(jī)間的串口通信。3.1 串口操作需要的頭文件在開(kāi)發(fā)嵌

30、入式Linux串口驅(qū)動(dòng)程序時(shí),需要以下頭文件。#include <stdio.h> /*標(biāo)準(zhǔn)輸入輸出定義*/#include <stdlib.h> /*標(biāo)準(zhǔn)函數(shù)庫(kù)定義*/#include <unisted.h> /*UNIX標(biāo)準(zhǔn)函數(shù)定義*/#include <sys/types.h>#include <sys/stat.h>#include <fcntl.h> /*文件控制定義*/#include <termios.h> /*POSIX終端控制定義*/#include <errno.h> /*錯(cuò)誤號(hào)

31、定義*/3.2 打開(kāi)串口在嵌入式Linux系統(tǒng)中,打開(kāi)一個(gè)串口設(shè)備和打開(kāi)普通文件一樣。嵌入式Linux系統(tǒng)下的串口文件通常位于/dev下:串口一為/dev/ttyS0;串口二為/dev/ttyS1。打開(kāi)串口時(shí)通過(guò)使用標(biāo)準(zhǔn)的文件函數(shù)open( )來(lái)進(jìn)行操作的,下面假設(shè)以讀寫(xiě)方式打開(kāi)串口一。int fd;/文件描述符fd=open(“/dev/ttyS0”,O_RDWR);/以讀寫(xiě)方式打開(kāi)串口if(fd=-1)/如果不能打開(kāi)串口一 perror(“提示錯(cuò)誤!”); 3.3串口設(shè)置 在Linux 系統(tǒng)中,設(shè)備都是以文件的形式表示的,串口參數(shù)一般包括波特率、起始位數(shù)量、停止位數(shù)量等。下面對(duì)這些串口參數(shù)

32、進(jìn)行詳細(xì)說(shuō)明。(1) 起始位通信線(xiàn)路上沒(méi)有數(shù)據(jù)被傳送時(shí),處于邏輯“1”狀態(tài)。當(dāng)發(fā)送字符數(shù)數(shù)據(jù)是首先發(fā)送一個(gè)邏輯“0”信號(hào),這個(gè)邏輯低電平就是起始位。起始位通過(guò)通信線(xiàn)路傳輸?shù)浇邮斩?,接收端檢測(cè)到這個(gè)低電平之后,就開(kāi)始準(zhǔn)備接收數(shù)據(jù)位信號(hào)。起始位所起的作用就是使通信雙方同步。(2) 數(shù)據(jù)位當(dāng)接收端收到起始位后,開(kāi)始接收數(shù)據(jù)位。數(shù)據(jù)位的個(gè)數(shù)可以是58位。在數(shù)據(jù)傳送過(guò)程中,數(shù)據(jù)位從最低有效位開(kāi)始傳送,接收端收到數(shù)據(jù)后,依次將其轉(zhuǎn)換成并行數(shù)據(jù)。(3) 奇偶校驗(yàn)位數(shù)據(jù)位發(fā)送完后,為了保證數(shù)據(jù)的可靠性,還要傳送一個(gè)奇偶校驗(yàn)位。奇偶校驗(yàn)用于差錯(cuò)檢測(cè)。如果選擇偶檢驗(yàn),則數(shù)據(jù)位和奇偶位的邏輯“1”的個(gè)數(shù)必須為偶數(shù),

33、相反,如果是奇檢驗(yàn),則數(shù)據(jù)位和奇偶位的邏輯“1”的個(gè)數(shù)為奇數(shù)。(4) 停止位在奇偶位或數(shù)據(jù)位(當(dāng)無(wú)奇偶校驗(yàn)時(shí))之后發(fā)送停止位。停止位表示一個(gè)數(shù)據(jù)的結(jié)束。它可以是12位的低電平。接收端收到停止位后,通信線(xiàn)路便恢復(fù)邏輯“1”的狀態(tài),直到下一個(gè)數(shù)據(jù)的起始位到來(lái)。(5) 波特率通信線(xiàn)路上傳輸?shù)奈唬ùa元)信號(hào)都必須保持一致的信號(hào)持續(xù)時(shí)間,單位時(shí)間內(nèi)傳送碼元的數(shù)目稱(chēng)為波特率。對(duì)大多數(shù)嵌入式設(shè)備來(lái)說(shuō),其波特率都設(shè)置為115200。訪(fǎng)問(wèn)串行口通過(guò)對(duì)設(shè)備文件的訪(fǎng)問(wèn)來(lái)實(shí)現(xiàn),僅需打開(kāi)相應(yīng)的設(shè)備文件。串口的設(shè)置主要是設(shè)置struct termios 結(jié)構(gòu)體中的各成員值。#include<termios.h>

34、;struct termiounsigned short c_iflag; /*輸入模式標(biāo)志*/unsigned short c_oflag; /*輸出模式標(biāo)志*/unsigned short c_cflag; /*控制模式標(biāo)志*/unsigned short c_lflag; /*本地模式標(biāo)志*/unsigned char c_line; /*線(xiàn)路規(guī)范*/unsigned char c_ccNCC; /*控制特征值*/波特率設(shè)置:struct termios option;tcgetattr(fd,&option);cfsetispeed(&option,B115200);/

35、*設(shè)置為115200Bps*/cfsetospeed(&option,B115200);tcsetattr(fd,TCANOW,&option);檢驗(yàn)位設(shè)置:無(wú)校驗(yàn) 8 位:options.c_cflag &=PARENBoptions.c_cflag &=CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS8;奇效驗(yàn)(Odd)7 位:options.c_cflag=PARENB;options.c_cflag &=PARODD;options.c_cflag &=CSTOPB;options

36、.c_cflag &=CSIZE;options.c_cflag=CS7;偶校驗(yàn)(Even)7 位:options.c_cflag &=PARENB;options.c_cflag=OARODD;options.c_cflag &= CSTOPB;options.c_cflag &=CSIZE;options.c_cflag=CS7;Space 校驗(yàn)7 位:options.c_cflag &= PARENB;options.c_cflag &=CSTOPB;options.c_cflag &=&CSIZE;options.c_cf

37、lag=CS8;停止位設(shè)置:1位: options.c_cflag &=CSTOPB;2位: options.c_cflag=CSTOPB;模式設(shè)置:需要注意的是,如果不是開(kāi)發(fā)終端之類(lèi)的,只是串口傳輸數(shù)據(jù),而不需要串口來(lái)處理,那么使用原始模式(Raw Mode)方式來(lái)通訊。options.c_lflag &=(ICANONECHOECHOEISIG);/*Input*/options.c_oflag &=OPOST;/*Output*/3.4 串口讀寫(xiě)在Linux 系統(tǒng)中,對(duì)設(shè)備和目錄的操作都等同于文件的操作,這樣大大簡(jiǎn)化了系統(tǒng)對(duì)不同設(shè)備的處理,提高了效率。在程序中,設(shè)

38、備和文件都是使用文件描述符來(lái)進(jìn)行操作的。文件描述符是一個(gè)非負(fù)的整數(shù),是一個(gè)索引值,并指向內(nèi)核中每個(gè)進(jìn)程打開(kāi)文件的記錄表。當(dāng)打開(kāi)一個(gè)現(xiàn)存的文件或者是創(chuàng)建一個(gè)新文件時(shí),內(nèi)核就向進(jìn)程返回一個(gè)文件描述符;當(dāng)需要讀寫(xiě)時(shí)也需要將文件描述符作為參數(shù)傳遞給相應(yīng)的函數(shù)。在Linux 系統(tǒng)中,所有的設(shè)備文件都位于“/ dev”下,其中串口對(duì)應(yīng)的設(shè)備名為“/ dev/ ttyS0”,因此對(duì)串口的讀寫(xiě)就可以像讀寫(xiě)(“read”和“write”) 普通文件一樣來(lái)讀寫(xiě)設(shè)備文件,所不同的是需要對(duì)串口的其他參數(shù)另做配置。打開(kāi)串口之后,讀寫(xiě)串口就很容易了,把串口當(dāng)作文件讀寫(xiě)就可以了。(1)發(fā)送數(shù)據(jù)char butter1024

39、;int Length=1024;int nByte;nByte=write(fd,buffer,Length);(2)讀取串口數(shù)據(jù)使用文件操作read 函數(shù)讀取,如果設(shè)置為原始模式(Raw Mode)傳輸數(shù)據(jù),那么read 函數(shù)返回的字符數(shù)是實(shí)際串口收到的字符數(shù)。讀取數(shù)據(jù)時(shí)比較需要技巧的。char buff1024;int Len=1024;int rdadByte=read(fd,buff,Len);也可以使用操作文件的函數(shù)來(lái)實(shí)現(xiàn)異步讀取,如fcntl,或者selectt 等來(lái)操作。fd_set rfds;struct timeval tv;int retval;/*下面幾行設(shè)置要監(jiān)視進(jìn)行

40、讀寫(xiě)操作的文件集*/FD-ZERO(&rfds); /文件集清零FD_SET(portsportNo.handle,&rfds); /向集合中添加一個(gè)文件句柄tv.tv_sec=Timeout/1000; /設(shè)置等待的時(shí)間tv.tv_usec=(Timeeout%1000)*1000;retval=select(16,&rfds,NULL,NULL,&tv;) /文件所監(jiān)視的文件集準(zhǔn)備好.if(rdtvel) /文件集中有文件在等待時(shí)間內(nèi)準(zhǔn)備好了.actuaIRead=read(portsportNo.handle,buf,maxCnt); /讀取數(shù)據(jù)下面兩個(gè)實(shí)

41、例給出了串口讀和寫(xiě)兩個(gè)程序部分代碼。寫(xiě)串口的程序?qū)⒃谒拗鳈C(jī)上運(yùn)行,讀串口程序?qū)⒃谀繕?biāo)板上運(yùn)行。寫(xiě)串口部分程序:doprintf(“Input some words(enter quit to exit):”);memset(buff, 0,BUFFER_SIZE);if(fgets(buff,BUFFER_SIZE,stdin)=NULL)perror(“fgets”);break;write(fd,buff,strlen(buff);whie(strncmp(buff,”quit”,4);讀串口部分程序:domemset(buff,0,BUFFER_SIZE);if(read(fd,buff

42、,BUFFER_SIZE)>0)printf(“The received words are:%s”,buff);while(strncmp(buff,”quit”,4);3.5 關(guān)閉串口在Linux 系統(tǒng)中,對(duì)設(shè)備和目錄的操作都等同于文件的操作, 關(guān)閉串口就是關(guān)閉文件,而設(shè)備和文件都是使用文件描述符來(lái)進(jìn)行操作的。文件描述符是一個(gè)索引值,指向內(nèi)核中每個(gè)進(jìn)程打開(kāi)文件的記錄表,因此關(guān)閉文件就只要關(guān)閉文件描述符就可以了。close(fd);四、總結(jié) 本文介紹了一種基于嵌入式的串口通信系統(tǒng),采用S3C2410 芯片作為串口通信的控制核心器件,實(shí)現(xiàn)了在Linux 操作系統(tǒng)下宿主機(jī)與目標(biāo)機(jī)間串口通信

43、的基本功能。在系統(tǒng)的結(jié)構(gòu)實(shí)現(xiàn)上,給出了系統(tǒng)的硬件實(shí)現(xiàn)原理,并詳細(xì)介紹了其軟件實(shí)現(xiàn)過(guò)程,比如設(shè)置串口、讀寫(xiě)串口等。該系統(tǒng)操作方便,實(shí)現(xiàn)容易,在此基礎(chǔ)上進(jìn)一步改進(jìn),可以在基于Linux 操作系統(tǒng)的ARM 平臺(tái)上實(shí)現(xiàn)更多的嵌入式功能。這是我第一次獨(dú)立在Linux系統(tǒng)下進(jìn)行設(shè)計(jì)開(kāi)發(fā),通過(guò)一次次的實(shí)驗(yàn)慢慢進(jìn)步,但是由于設(shè)計(jì)時(shí)間有限,本次設(shè)計(jì)難免有很多不足,需要進(jìn)一步改進(jìn),主要是以下幾個(gè)方面:(1)本次設(shè)計(jì)可以進(jìn)一步完善,可以從其他方面進(jìn)行考慮。(2)本次設(shè)計(jì)只考慮到了單個(gè)串口時(shí)的通信,當(dāng)多個(gè)串口的情況下,這種方法就行不通了。(3)本次設(shè)計(jì)的系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,但是不夠嚴(yán)謹(jǐn),容易造成數(shù)據(jù)通信出錯(cuò)??傊?,通過(guò)這兩

44、個(gè)周的學(xué)習(xí),還是學(xué)到了不少的知識(shí)!不僅糾正了課程學(xué)習(xí)過(guò)程中出現(xiàn)的許多錯(cuò)誤,還在試驗(yàn)中驗(yàn)證了自己的一些猜想。在學(xué)習(xí)的過(guò)程中有失敗,當(dāng)然也有困惑,有成功,當(dāng)然就有喜悅。雖然只是課程設(shè)計(jì),但我拿出了自己的全部精力去對(duì)待,能學(xué)到知識(shí)固然值得驕傲,能認(rèn)識(shí)到自己的過(guò)錯(cuò)和不足不也是一件幸事嗎!做學(xué)問(wèn)也是做人,再作學(xué)問(wèn)的過(guò)程中體味做人的道理不也是一種收獲嗎?記得古語(yǔ)中說(shuō):“學(xué),然后知不足”!希望這次學(xué)習(xí)只是我學(xué)習(xí)PLC的開(kāi)始,也算是啟蒙吧!我必將更加努力的學(xué)習(xí)它完善自己。我想這就是我學(xué)習(xí)這門(mén)課的最大感受吧!275、 致謝 在學(xué)習(xí)中,老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、豐富淵博的知識(shí)、敏銳的學(xué)術(shù)思維、精益求精的工作態(tài)度以及侮人

45、不倦的師者風(fēng)范是我終生學(xué)習(xí)的楷模,老師們的高深精湛的造詣與嚴(yán)謹(jǐn)求實(shí)的治學(xué)精神,將永遠(yuǎn)激勵(lì)著我。這次課設(shè)中還得到眾多老師的關(guān)心支持和幫助。在此,謹(jǐn)向老師們致以衷心的感謝和崇高的敬意!另外,感謝校方給予我這樣一次機(jī)會(huì),能夠獨(dú)立地完成一個(gè)課程設(shè)計(jì),并在這個(gè)過(guò)程當(dāng)中,給予我們各種方便,使我們?cè)谶@學(xué)期快要結(jié)課的時(shí)候,能夠?qū)W(xué)到的只是應(yīng)用到實(shí)踐中,增強(qiáng)了我們實(shí)踐操作和動(dòng)手應(yīng)用能力,提高了獨(dú)立思考的能力。  感謝所有任課老師和所有同學(xué)在這次課設(shè)中給自己的指導(dǎo)和幫助,是他們教會(huì)了我專(zhuān)業(yè)知識(shí),教會(huì)了我如何學(xué)習(xí),教會(huì)了我如何做人。正是由于他們,我才能在各方面取得顯著的進(jìn)步,在此向他們表示我由衷的謝意。&

46、#160;感謝我們一組幾位同學(xué)的共同努力,積極配合。在制作過(guò)程中遇到困難,積極解決。團(tuán)隊(duì)意識(shí)得到提升。  最后,我要向百忙之中抽時(shí)間對(duì)本文進(jìn)行審閱,評(píng)議和參與本人論文答辯的馬維俊和張璽君老師表示真心的感謝。參考文獻(xiàn)1張思民編著.嵌入式系統(tǒng)設(shè)計(jì)與應(yīng)用M. 北京:清華大學(xué)出版社, 2008.2ARM Limited. ARM Developer Suiter (Version 1.2) , Assemble Guide, ARM DUI 0068A, 2000.3熊茂華、楊震倫主編. ARM9嵌入式系統(tǒng)設(shè)計(jì)與開(kāi)發(fā)應(yīng)用M.北京:清華大學(xué)出版社,2008.4劉彥文主編.基于ARM TDMI的

47、S3C44BOX嵌入式微處理器技術(shù)M.北京:清華大學(xué)出版社,2009.5徐磊編著.Linux系統(tǒng)下C程序開(kāi)發(fā)詳解M. 北京:電子工業(yè)出版社,2008.6華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)中心編著. 嵌入式Linux系統(tǒng)開(kāi)發(fā)標(biāo)準(zhǔn)教程(第2版)M. 北京:人民郵電出版社,2009.7羅苑棠編著.嵌入式Linux驅(qū)動(dòng)程序和系統(tǒng)開(kāi)發(fā)實(shí)例精講M.北京:電子工業(yè)出版社,2009.8羅蕾主編. 嵌入式實(shí)時(shí)操作系統(tǒng)及應(yīng)用開(kāi)發(fā)(第2版)M. 北京:北京航空航天大學(xué)出版社,2007.9華清遠(yuǎn)見(jiàn)嵌入式培訓(xùn)中心編著. Linux設(shè)備開(kāi)發(fā)詳解(第2版)M. 北京:人民郵電出版社,2010.10 Advanced Programming

48、 in the UNIX EnvironmentMW.Richard Stevens,2000. 附 錄串口通信程序serial_com.c源代碼:/*serial_com.c*/#include <string.h>#include <unistd.h>#include <fcntl.h>#include <errno.h>#include <termios.h>#include <sys/types.h>#include <sys/stat.h>#include <stdlib.h>#define MODEMDEVICE "/dev/ttyS0"#define _POSIX_SOURCE 1#define FALSE 0#define TRUE 1volatile int STOP=FALSE;main() int fd,n=0,c,BAUDRATE,i,BUFNUMBER=32,READNUMBER=32; char receivebufBUFNUMBER; struct termios oldti

溫馨提示

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

評(píng)論

0/150

提交評(píng)論