單片機(jī)和嵌入式系統(tǒng)編程V課件_第1頁
單片機(jī)和嵌入式系統(tǒng)編程V課件_第2頁
單片機(jī)和嵌入式系統(tǒng)編程V課件_第3頁
單片機(jī)和嵌入式系統(tǒng)編程V課件_第4頁
單片機(jī)和嵌入式系統(tǒng)編程V課件_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、單片機(jī)原理與應(yīng)用2022/7/26第5部分 單片機(jī)和嵌入式系統(tǒng)編程2學(xué)習(xí)內(nèi)容和目標(biāo)從信息交互角度的建立通訊的概念總覽各種通訊方法,及其注意事項建立幀、包、報文等基本概念,以及其使用方法建立通訊中需要注意的問題注意:思維一定要開闊一些,多問為什么。允許不用舉手,并隨時打斷,向我提任何和課程相關(guān)的問題。2022/7/262本節(jié)學(xué)習(xí)目標(biāo)1.1 引言信息交互:發(fā)出和接收信息的過程。通常由6個部分組成:信息源、信息、信息傳遞的通道或網(wǎng)絡(luò)、接收者、反饋、噪音。事實(shí)上,信息交互不僅僅存在于通訊系統(tǒng)中。至少目前的定義,通訊就是信息交互的過程。那么請從信息流的角度看待通訊問題即使對于某個測控系統(tǒng),當(dāng)中傳遞的也是

2、信息(信號只是信息的載體)。2022/7/2631 信息交互與通訊繼續(xù)考慮上述的封閉測控系統(tǒng),可以在任何一個環(huán)節(jié)與環(huán)節(jié)之間采用模擬的或數(shù)字的通訊方式,傳遞信息。2022/7/2641.1 引言(續(xù)1)需要考慮的是如何有效的傳遞信息:采用何種載體如何保證信息在傳遞過程中的正確率請務(wù)必注意:必須依據(jù)信源特性確定載體類型、特征等問題。當(dāng)前來說,信號是目前在工業(yè)中傳遞信息最常用的載體。當(dāng)前,工業(yè)中常用的標(biāo)準(zhǔn)信號規(guī)格可以分為:模擬信號:05V的電壓信號、420mA的電流信號數(shù)字信號:這是目前用的最多的,并且有著多種形式可供選擇。不論傳遞何種信號,必然需要考慮兩個內(nèi)容:確定發(fā)射機(jī)與接收機(jī)之間的物理連接方法

3、;確定發(fā)射機(jī)和接收機(jī)之間對話模式。物理鏈接、對話模式、信號特征三者往往是統(tǒng)一的,必須綜合考慮。另外,在實(shí)現(xiàn)中往往加入其他因素進(jìn)行綜合考慮,例如:環(huán)境狀況、成本問題、工藝問題、保密性問題、對以下2個實(shí)例進(jìn)行分析:為什么使用這種方式?能否使用其他的通訊方式?實(shí)現(xiàn)這些通訊方式的過程中需要注意哪些內(nèi)容?電纜式測井中采用7000m電纜將儀器和HOST PC連接起來。但是在儀器與遙傳短節(jié)之間采用 CAN Bus連接;在一些數(shù)控機(jī)床中,PLC的CPU模塊與其他模塊采用RS232通訊。2022/7/2651.2 信號、信號傳輸與通訊對以下2個實(shí)例進(jìn)行分析:為什么使用這種方式?能否使用其他的通訊方式?實(shí)現(xiàn)這些通

4、訊方式的過程中需要注意哪些內(nèi)容?電纜式測井中采用7000m電纜將儀器和HOST PC連接起來。但是在儀器與遙傳短節(jié)之間采用 CAN Bus連接;在一些數(shù)控機(jī)床中,PLC的CPU模塊與其他模塊采用RS232通訊。2022/7/2661.2 信號、信號傳輸與通訊(續(xù)1)接口:泛指實(shí)體把自己提供給外界的一種抽象化物(可以為另一實(shí)體),用以由內(nèi)部操作分離出外部溝通方法,使其能被修改內(nèi)部而不影響外界其他實(shí)體與其交互的方式。對于目前的信息科學(xué)領(lǐng)域,接口可以分為兩大類:軟件接口:例如,用戶界面、JAVA接口、動態(tài)鏈接庫接口、硬件接口:RS232、Ethernet、I2C、簡單的說接口就是一個契約或者規(guī)范。正

5、如,信號可以分為兩類一樣,接口也可以分為兩類:模擬接口:數(shù)字化接口:不論是模擬或數(shù)字接口,都必須在數(shù)字化控制中考慮以下問題:速度:資源占用:CPU時間、中斷、DMA傳輸距離:差錯控制:供電:其他:2022/7/2671.3 通訊接口引論2.1 引言考慮:在MCU內(nèi)部,所謂總線是否可以歸納到接口的范疇。在這里,若非特別指明,接口均指代系統(tǒng)間的通訊連接。2022/7/2682 數(shù)字化通訊接口大部分的數(shù)字化通訊接口以下圖為基礎(chǔ)進(jìn)行修改,實(shí)現(xiàn)通訊。2022/7/2692.2 數(shù)字化接口電路的構(gòu)成接口的基本功能:數(shù)據(jù)傳送:CPU執(zhí)行輸入/輸出指令與外部設(shè)備交換數(shù)據(jù)。(串行、并行)數(shù)據(jù)緩沖:用于輸入輸出過

6、程中的暫存,對方不能及時接收數(shù)據(jù)時,將數(shù)據(jù)暫存在接口電路中。根據(jù)接口的需要可以是1個或2個字節(jié),或是FIFO存儲器,也可以是數(shù)據(jù)存儲區(qū)。信號變換:完成數(shù)字信號與I/O設(shè)備信號(如模擬信號、開關(guān)信號、計數(shù)脈沖等)的相互轉(zhuǎn)換。中斷:大多數(shù)接口電路有中斷功能,以提高接口程序的效率。接口的高級功能差錯控制:實(shí)現(xiàn)檢錯或糾錯。高層通信協(xié)議:實(shí)現(xiàn)呼叫、數(shù)據(jù)包、流量控制等。即插即用、電源管理、動態(tài)配置等。2022/7/26102.3 通訊接口運(yùn)行概述接口的操作:程序?qū)涌诘脑L問(讀/寫)方式。不同的接口電路支持不同的操作方式。查詢控制方式:在程序的主動控制下,通過讀取狀態(tài)寄存器了解接口的情況,完成相應(yīng)的程序操

7、作。為了及時了解接口的狀態(tài),需要時間密集的查詢操作。CPU效率低。中斷控制方式:當(dāng)接口出現(xiàn)需要程序干預(yù)的事件,通過中斷通知CPU,CPU再讀取狀態(tài)寄存器,確定事件的種類,以便執(zhí)行不同的代碼處理。CPU效率高而且及時。DMA控制方式:CPU與接口的數(shù)據(jù)傳送采用DMA傳送,即傳送的具體過程由硬件(DMA控制器)完成,傳送速度比通過CPU快,尤其是在批量傳送時效率很高。2022/7/26112.3 通訊接口運(yùn)行概述(續(xù)1)通信協(xié)議是指通信雙方對數(shù)據(jù)傳送控制的一種約定,包括對數(shù)據(jù)格式,同步方式,傳送速度,傳送步驟,檢糾錯方式以及控制字符定義等問題做出統(tǒng)一規(guī)定。通信雙方必須共同遵守,它也叫做鏈路控制規(guī)程

8、。由于這些規(guī)格(語言)的規(guī)定都是事先在會議上講好的,一般我們稱之為“協(xié)議”(英文稱為protocol)。協(xié)議主要由以下三個要素組成:語法:“如何講”,數(shù)據(jù)的格式、編碼和信號等級(電平的高低)語義:“講什么”,數(shù)據(jù)內(nèi)容、含義以及控制信息。定時規(guī)則(時序):明確通信的順序、速率匹配和排序。討論接口則必須討論協(xié)議,硬件接口相同,不代表協(xié)議相同;協(xié)議類型相同,不代表編碼方式相同;。正是由于多種不同,使得目前存在各種各樣的通訊方式。例如,同樣是TCP協(xié)議,但是并非一定使用RJ45接頭;同樣電平標(biāo)準(zhǔn)也可以設(shè)定的不同。同樣,對于RS232的串口標(biāo)準(zhǔn),即使按照以前規(guī)定的7位字符位,但是若組成方式不同也會有不同

9、。2022/7/26122.4 數(shù)字通訊協(xié)議可以參考ISO/OSI的7層網(wǎng)絡(luò)架構(gòu)。實(shí)現(xiàn)信息交互/通訊,的最終目標(biāo)是考慮如何讓接收方能夠“理解”發(fā)送方的意圖。2022/7/26132.5 完整的數(shù)字化通訊模型多種多樣、千變?nèi)f化的通訊接口。PC機(jī)常用內(nèi)部總線和接口:ISA、PCI、PCI-E、Compact-PCI、PC104、PXI、PC104 Plus、DDR 3、STAT、STAT 2、SCSI、PC機(jī)常用對外總線和接口:RS232、PS2、VGA、HDMI、USB 2.0、USB3.0、SCSI、PCMCIA、常用無線接口:Blue Tooth、WIFI、CDMA、WCDMA、LTE、芯片

10、之間常用接口:高速串口:SPI、HDMI、PCI-E并口:低速串口:I2C工業(yè)常用接口:早期串行接口:RS232、RS422、RS485、工業(yè)網(wǎng)絡(luò)總線:工業(yè)以太等現(xiàn)場總線:目前比較熱門的接口其他:2022/7/26142.6 常見通訊接口舉例3.1 數(shù)據(jù)傳輸中的報文報文(message)是通訊中交換與傳輸?shù)臄?shù)據(jù)單元,即站點(diǎn)一次性要發(fā)送的數(shù)據(jù)塊。報文包含了將要發(fā)送的完整的數(shù)據(jù)信息,其長短很不一致,長度不限且可變。顯然報文也是網(wǎng)絡(luò)傳輸?shù)膯挝?,傳輸過程中會不斷的封裝成分組、包、幀來傳輸。封裝的方式就是添加一些信息段,那些就是報文頭以一定格式組織起來的數(shù)據(jù)。比如里面有報文類型,報文版本,報文長度,報文

11、實(shí)體等等信息。注意:報文幀;報文是一個完整的內(nèi)容,當(dāng)然可以將一個很長的、很大的報文拆分成幾個小的報文報文不是由硬件完成的,而是由通訊雙發(fā)約定的(協(xié)議)由于為通訊使用,所以報文還必須考慮到便于傳輸、校驗(yàn)、信息說明等內(nèi)容2022/7/26153 報文、包和幀的概念一般在ISO的網(wǎng)絡(luò)層,往往將報文拆分后,根據(jù)各自的通訊協(xié)議進(jìn)行封裝,并下發(fā)到下一層。打包的工作可以分為兩類,一類是需要用戶實(shí)現(xiàn)的,一類則可以依靠硬件驅(qū)動和硬件實(shí)現(xiàn)的。譬如,某網(wǎng)頁的內(nèi)容非常多,不可能僅靠一個報文就夠的。因此可以對報文進(jìn)行拆分。拆分后,依據(jù)網(wǎng)絡(luò)層進(jìn)行打包傳遞。但是將較大的報文進(jìn)行拆分,將面對多的問題(略)。有些工作目前已經(jīng)被

12、整合到驅(qū)動中,有些則需要用戶自己實(shí)現(xiàn)。在有些接口協(xié)議中,幀數(shù)據(jù)就是包數(shù)據(jù)。但是請不要將包和幀等同起來。對于包的理解,在TCP/IP中應(yīng)用的非常多。推薦書籍:TCP/IP詳解(3卷),W.Richard Stevens 著,機(jī)械工業(yè)出版社2022/7/26163.2 數(shù)據(jù)傳輸中的數(shù)據(jù)包(packet)通訊傳輸中,幀是由不同的“位”組成的最小數(shù)據(jù)段。數(shù)據(jù)包往往也會被拆分,按照幀的單位進(jìn)行傳輸。幀由幾部分組成,不同的部分執(zhí)行不同的功能。例如CAN Bus協(xié)議,將幀同報文一樣,分成幀頭、數(shù)據(jù)、幀尾三個部分。幀頭和幀尾往往由協(xié)議自動指定。幀的大小由通訊設(shè)備來確定,對于有些通訊接口而言,幀的大小是固定的,

13、例如RS232、CAN Bus等;但是有些通訊接口的幀大小是在一定范圍內(nèi)浮動的,例如以太網(wǎng)。不僅在通訊接口中,幀的概念在其他很多地方都有使用。例如,目前的有些高清攝像機(jī),實(shí)際保存的是圖片,只不過拍攝這些圖片的時間間隔非常短,連續(xù)起來就像視頻(事實(shí)上視頻也是按照幀進(jìn)行劃分的)。這些圖片往往被稱為幀。幀的結(jié)構(gòu)是由相對應(yīng)的通訊接口進(jìn)行確定的。在很多通訊協(xié)議中(例如RS232、CAN Bus、SPI等),報文被拆分成包或幀。因此對于接收方來說,獲取接收信息,必須按照規(guī)則將幀進(jìn)行整合,從而得到報文。2022/7/26173.3 幀(Frame)雖然協(xié)議,或者接口,均帶有編碼和解碼的概念,但是并不是我們說

14、采用何種通訊接口,就可以實(shí)現(xiàn)通訊。在當(dāng)前的很多工業(yè)通訊中,接口并未定義應(yīng)用層和表示層的協(xié)議。換句話說,這些接口只能夠告訴你報文的0、1組成方式,而不能告訴你報文所代表的具體含義。編碼往往具有兩種范疇:將對象數(shù)據(jù)采用約定的協(xié)議(往往自定義),切分成由0、1組成的數(shù)據(jù)段;在通信理論中,編碼是對原始信息符號按一定的數(shù)學(xué)規(guī)則所進(jìn)行的變換。編碼的目的是要使信息能夠在保證一定質(zhì)量的條件下盡可能迅速地傳輸至信宿。事實(shí)上,在應(yīng)用中這兩種范疇都使用到了。解碼則是編碼的逆過程。2022/7/26184 編碼(Code)和解碼(Decode)某設(shè)備中,采用以太網(wǎng)傳輸采樣數(shù)據(jù)、控制命令、狀態(tài)信息等內(nèi)容。2022/7/

15、26195 報文編碼和解碼示例1考慮:如何來保證接收方能夠接收到來自發(fā)送方的數(shù)據(jù)和指令?必須保證不能丟數(shù)據(jù);必須保證能夠正確的理解數(shù)據(jù)背后的含義;顯然需要分析對象特征從而確定以下內(nèi)容分析應(yīng)用環(huán)境,以保證可靠性分析數(shù)據(jù)流量和傳輸特征,來確定傳輸速率、帶寬分析交互方法,從而確定通訊協(xié)議分析數(shù)據(jù)類型,劃分報文分析傳遞的信息內(nèi)容,確定報文編碼、解碼方式其他;以上內(nèi)容并非各自獨(dú)立,確定使用何種通訊協(xié)議必須綜合考慮所有因素,有時因素之間存在矛盾的問題,因此需要根據(jù)對象特性進(jìn)行平衡。如果經(jīng)過綜合分析和論證,選定了通訊協(xié)議和接口,那么報文的編碼和解碼方式則可以開始。2022/7/26205 報文編碼和解碼示例

16、1(續(xù)1)在這里,我們將所有的報文分為三個部分:報文頭、報文正文、報文尾。 報文結(jié)構(gòu) 報文頭結(jié)構(gòu) 報文尾結(jié)構(gòu) 2022/7/26215 報文編碼和解碼示例1(續(xù)2)b0 b7 b15報文起始標(biāo)識符:0 x55aa報文總長度(報文頭報文正文填充字段)發(fā)送方標(biāo)識報文類型標(biāo)識時戳(內(nèi)容不定)b0 b7 b15報文校驗(yàn)和報文結(jié)束標(biāo)志符: 0 xff00在報文頭中:報文起始標(biāo)志:0 x55AA是常用的標(biāo)志由于存在多種報文,每種報文長度并不確定,為了方便將幀數(shù)據(jù)組裝成報文,則需要給出報文長度發(fā)送方標(biāo)識:由于具有多個設(shè)備,每個設(shè)備均可以做發(fā)送方,并且每個發(fā)送方數(shù)據(jù)的含義不同,因此為了方便解碼必須指定發(fā)送方,

17、從而使用對應(yīng)的編碼方式。(當(dāng)然還有其他原因,略)報文類型:有時候一個個發(fā)送方會發(fā)送多種報文,為了區(qū)別這種來自單個設(shè)備的多個報文。(問:如果這樣為啥還用發(fā)送方標(biāo)識)時戳:當(dāng)前報文發(fā)送和接收到的時間。報文尾的主要目的在于:如何確定報文結(jié)束;如何確定報文接收的正確性;如何保證幀組裝和解碼時,不會出錯。2022/7/26225 報文編碼和解碼示例1(續(xù)3)在報文頭中的“發(fā)送方標(biāo)識”和“報文類型”已經(jīng)具有編碼的概念了,例如用0 x0801 表示“動力系統(tǒng)集中監(jiān)控臺”,用0 x0001表示該報文類型。但是在報文正文中,各個數(shù)據(jù)的定義則涉及到較多的內(nèi)容,并非像報文頭那樣簡單指定。報文正文涉及到以下內(nèi)容:數(shù)據(jù)

18、內(nèi)容:例如發(fā)送哪些數(shù)據(jù);數(shù)據(jù)類型:這些數(shù)據(jù)時開關(guān)量、數(shù)值量(浮點(diǎn)、定點(diǎn)、正負(fù))數(shù)據(jù)長度:有些數(shù)據(jù)位32bit,有些為8bit;數(shù)據(jù)的取值范圍:數(shù)據(jù)的單位:數(shù)值量往往有其物理含義,例如表征壓力、電流等發(fā)送數(shù)據(jù)的先后順序:哪個數(shù)據(jù)先發(fā)送,哪個后發(fā)送;編碼和解碼方式:如何使用數(shù)字量表示這些浮點(diǎn)、定點(diǎn)、正負(fù)數(shù)值,并且接收方如何針對數(shù)據(jù)進(jìn)行解碼。對于其中的一些報文請參見文檔:2022/7/26235 報文編碼和解碼示例1(續(xù)4)由于報文是一個組裝起來的數(shù)據(jù)段,因此可以使用封裝包的方法來進(jìn)行編程。目前多種語言提供了這種封裝方法,例如C/C+的結(jié)構(gòu)體、C+的類、Delphi的類、JAVA的類。事實(shí)上封裝的方

19、法很多,例如:方法1:采用結(jié)構(gòu)體嵌套的方式,能夠較清楚的反映報文大致結(jié)構(gòu)。每個被嵌套的結(jié)構(gòu)體采用各自的字段進(jìn)行編寫。方法2:使用完整的結(jié)構(gòu)體表示一個報文的具體結(jié)構(gòu)。2022/7/26246 報文編碼和解碼的編程/ C示例:方法1struct _tagMsg_XXX /名稱 struct 報文頭結(jié)構(gòu)體; struct 報文正文結(jié)構(gòu)體; struct 報文尾 結(jié)構(gòu)體; 其他字段;typedef struct _tagMsg_XXX SSMSG_XXX, *PSSMSG_XXX;方法1和方法2的本質(zhì)是一樣的,但是在報文正文中存在多種定義字段的方式。例如,按幀流的方式定義、或者按照數(shù)據(jù)內(nèi)容的方式定義字

20、段。2022/7/26256 報文編碼和解碼的編程(續(xù)1)/方法1:報文頭的定義(C示例)typedef struct _tagMsgBody_XXX /名稱 UINT16 msg_tag; /報文起始標(biāo)志符 UINT16 msg_len; /報文長度 UINT16 msg_id; /發(fā)送方標(biāo)識 UINT16 msg_type; /報文類型標(biāo)識 UINT32 msg_time; /時戳 MSG_HEADERINFO, *LP_MSG_HEADERINFO;/方法1:采用數(shù)據(jù)內(nèi)容定義報文正文typedef struct _tagMsgBody_XXX /名稱 數(shù)據(jù)類型 數(shù)據(jù)名稱; /第1個字段 數(shù)據(jù)類型 數(shù)據(jù)名稱; /第2個字段 數(shù)據(jù)類型 數(shù)據(jù)名稱; /第n個字段 SS

溫馨提示

  • 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論