本發(fā)明涉及嵌入式軟件開發(fā)技術(shù)領(lǐng)域,尤其涉及一種建立嵌入式系統(tǒng)和PC主機通信連接的方法。
背景技術(shù):
UART(Universal Asynchronous Receiver and Transmitter)是通用異步收發(fā)器的簡稱(異步串行通信口),是一種通用的數(shù)據(jù)通信協(xié)議,屬于鏈路層的協(xié)議。特點是通信線路簡單,利用簡單的線纜就可實現(xiàn)通信,降低成本,適用于速度慢的應(yīng)用場合。異步通信以一個字符為傳輸單位,通信中兩個字符間的時間間隔是不固定的,但在同一個字符中的鄰位傳送的時間間隔是固定的。數(shù)據(jù)傳送的速率用波特率來表示,就是每秒傳送的二進制位數(shù)。
在嵌入式系統(tǒng)開發(fā)過程中,經(jīng)常需要用UART口來和PC主機通信,例如用串口作為嵌入式系統(tǒng)的控制終端,或者把嵌入式系統(tǒng)的調(diào)試信息通過串口輸出到PC主機上,方便調(diào)試人員調(diào)試程序,或者通過串口來更新嵌入式系統(tǒng)的軟件。在打開PC端的串口工具的時候,需要知道嵌入式系統(tǒng)端的UART的參數(shù)配置,如果雙方的參數(shù)設(shè)置不一致,雙方通信是不可能成功的。如果不是嵌入式系統(tǒng)的開發(fā)人員,可能不知道嵌入式系統(tǒng)UART參數(shù)的配置,如果嘗試去配置這些參數(shù),由于這些參數(shù)有許多種組合,可能需要很長的時間才能找到正確的配置,效率低下。有的嵌入式系統(tǒng)有幾個相同的UART接口,只是用于不同的功能,不清楚到底要用哪個UART接口來和PC串口來連接通信。
因此,有必要提供一種新的建立嵌入式系統(tǒng)和PC主機通信連接的方法來解決上述問題。
技術(shù)實現(xiàn)要素:
本發(fā)明需要解決的技術(shù)問題是提供一種建立嵌入式系統(tǒng)和PC主機通信連接的方法,其不需要預(yù)先知道嵌入式系統(tǒng)端的UART接口參數(shù)配置就可以建立起嵌入式系統(tǒng)和PC主機兩者間的通信連接。
本發(fā)明提供了一種建立嵌入式系統(tǒng)和PC主機通信連接的方法,包括如下步驟:
S1、初始化波特率和數(shù)據(jù)幀格式數(shù)組,用兩個索引來分別表示所述波特率和所述數(shù)據(jù)幀格式;
S2、設(shè)置兩個所述索引的索引值為0;
S3、用索引值為0所對應(yīng)的所述波特率和所述數(shù)據(jù)幀格式的參數(shù)值初始化嵌入式系統(tǒng)的所有UART接口;
S4、接收從PC主機串口發(fā)送的特征數(shù)據(jù);
S5、選擇一個所述UART接口,判斷選擇的所述UART接口是否接收到所述特征數(shù)據(jù),若否,則執(zhí)行步驟S6;若是,則執(zhí)行步驟S8;
S6、循環(huán)切換到下一個所述UART接口;
S7、循環(huán)檢測切換到的所述UART接口是否收到特征數(shù)據(jù),若否,則返回執(zhí)行步驟S6;若是,則執(zhí)行步驟S8;
S8、判斷接收的所述特征數(shù)據(jù)是否是協(xié)議字節(jié),若否,則執(zhí)行步驟S9;若是,則通信建立成功;
S9、修改波特率和數(shù)據(jù)幀格式的參數(shù)值,并返回執(zhí)行步驟S5。
優(yōu)選的,所述數(shù)據(jù)幀格式包括數(shù)據(jù)位、奇偶校驗位及停止位。
優(yōu)選的,所述數(shù)據(jù)位的個數(shù)為5、6、7或8,所述奇偶校驗位為沒有或奇校驗、偶校驗、空,所述停止位是1位、1.5位、2位的高電平。
優(yōu)選的,步驟S2中,所述索引指向所述數(shù)組的第一個單元。
優(yōu)選的,步驟S4中,在接收從PC主機串口發(fā)送的特征數(shù)據(jù)之前還包括開啟計時器。
優(yōu)選的,步驟S5中,還包括判斷所述計時器是否超時,若未超時,則執(zhí)行步驟S6;若超時,則執(zhí)行步驟S51;其中,若所述計時器超時,則包括如下步驟:
S51、將數(shù)據(jù)幀格式索引加1;
S52、判斷數(shù)據(jù)幀格式索引是否達到最大值,若否,則執(zhí)行步驟S521;若是,則執(zhí)行步驟S522;
S521、用數(shù)據(jù)幀格式索引對應(yīng)的索引值設(shè)置所有的所述UART接口,重置所述計時器,然后執(zhí)行步驟S5;
S522、將波特率索引加1;
S523、判斷波特率索引是否到最大值,若否,則執(zhí)行步驟S5231;若是,則通信建立失?。?/p>
S5231、將數(shù)據(jù)幀格式索引的索引值重置為0;
S5232、用索引值為0對應(yīng)的波特率和數(shù)據(jù)幀格式的參數(shù)值設(shè)置所有的所述UART接口,重置所述計時器,然后執(zhí)行步驟S5。
優(yōu)選的,步驟S8中,判斷接收的所述特征數(shù)據(jù)是否是協(xié)議字節(jié)具體包括步驟:
S81、判斷接收的特征數(shù)據(jù)是否是期待的同步字,若否,則執(zhí)行步驟S82;若是,則執(zhí)行步驟S83;
S82、判斷是否是第一個同步字,若否,則執(zhí)行步驟S5;若是,則執(zhí)行步驟S85;
S83、返回回應(yīng)字;
S84、判斷協(xié)議字節(jié)是否全部接收,若否,則執(zhí)行步驟S86;若是,則通信建立成功;
S85、返回回應(yīng)字;
S86、重置所述計時器的時間,接收下個同步字。
優(yōu)選的,步驟S9中,修改波特率和數(shù)據(jù)幀格式的參數(shù)值具體包括步驟:
S91、固定波特率,修改數(shù)據(jù)幀格式參數(shù),直至所有的數(shù)據(jù)幀格式參數(shù)測試完畢;
S92、設(shè)置下一個波特率,重新修改數(shù)據(jù)幀格式參數(shù),直至所有的數(shù)據(jù)幀格式參數(shù)測試完畢。
優(yōu)選的,步驟S92中,數(shù)據(jù)幀格式從數(shù)組的第一個單元開始測試。
與相關(guān)技術(shù)相比,本發(fā)明提供的建立嵌入式系統(tǒng)和PC主機通信連接的方法具有如下有益效果:
1、能自動監(jiān)測PC主機串口的波特率設(shè)置;
2、能自動監(jiān)測PC主機串口的數(shù)據(jù)幀格式設(shè)置;
3、能檢測是哪個UART接口和PC主機串口通信,而不需要事先知道嵌入式系統(tǒng)應(yīng)用哪個UART接口來和PC串口通信;
4、使用計時器的機制,針對不同的參數(shù)值設(shè)置不同的超時時間值;
5、在打開PC主機串口和嵌入式系統(tǒng)的UART接口通信時,不需要知道嵌入式系統(tǒng)的UART接口的波特率配置和數(shù)據(jù)幀格式的設(shè)置。
附圖說明
圖1為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的流程圖;
圖2為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的步驟S5中若所述計時器超時的流程圖;
圖3為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的步驟S8中判斷接收的所述特征數(shù)據(jù)是否是協(xié)議字節(jié)的流程圖;
圖4為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的步驟S9中修改波特率和數(shù)據(jù)幀格式的參數(shù)值的流程圖;
圖5為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的原理圖。
具體實施方式
下面將對本發(fā)明實施例中的技術(shù)方案進行清楚、完整地描述,顯然,所描述的實施例僅是本發(fā)明的一部分實施例,而不是全部的實施例。基于本發(fā)明中的實施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動前提下所獲得的所有其它實施例,都屬于本發(fā)明保護的范圍。
請參閱圖1,圖1為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的流程圖。在嵌入式系統(tǒng)開發(fā)過程中,經(jīng)常需要使用UART接口和PC主機通信,所述UART接口與所述PC主機的串口通信連接,不但需要波特率設(shè)置一樣,數(shù)據(jù)幀格式同樣需要設(shè)置一樣,否則不能正常通信,因此,為了實現(xiàn)所述UART接口與所述PC主機的通信,本發(fā)明提供了一種建立嵌入式系統(tǒng)和PC主機通信連接的方法,包括如下步驟:
S1、初始化波特率和數(shù)據(jù)幀格式數(shù)組,用兩個索引來分別表示所述波特率和所述數(shù)據(jù)幀格式;
所述數(shù)據(jù)幀格式包括數(shù)據(jù)位、奇偶校驗位及停止位。所述數(shù)據(jù)位的個數(shù)為5、6、7或8,所述奇偶校驗位為沒有或奇校驗、偶校驗、空,所述停止位是1位、1.5位、2位的高電平。
S2、設(shè)置兩個所述索引的索引值為0,所述索引指向所述數(shù)組的第一個單元;
S3、用索引值為0所對應(yīng)的所述波特率和所述數(shù)據(jù)幀格式的參數(shù)值初始化嵌入式系統(tǒng)的所有UART接口;
S4、接收從PC主機串口發(fā)送的特征數(shù)據(jù);
在接收從PC主機串口發(fā)送的特征數(shù)據(jù)之前還包括開啟計時器。
S5、選擇一個所述UART接口,判斷選擇的所述UART接口是否接收到所述特征數(shù)據(jù),若否,則執(zhí)行步驟S6;若是,則執(zhí)行步驟S8;
再結(jié)合圖2,圖2為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的步驟S5中所述計時器超時的流程圖。在執(zhí)行步驟S6之前還包括判斷所述計時器是否超時,若未超時,則執(zhí)行步驟S6;若超時,則執(zhí)行步驟S51。若所述計時器超時,則包括如下步驟:
S51、將數(shù)據(jù)幀格式索引加1;
S52、判斷數(shù)據(jù)幀格式索引是否達到最大值,若否,則執(zhí)行步驟S521;若是,則執(zhí)行步驟S522;
S521、用數(shù)據(jù)幀格式索引對應(yīng)的索引值設(shè)置所有的所述UART接口,重置所述計時器,然后執(zhí)行步驟S5;
S522、將波特率索引加1;
S523、判斷波特率索引是否到最大值,若否,則執(zhí)行步驟S5231;若是,則通信建立失??;
S5231、將數(shù)據(jù)幀格式索引的索引值重置為0;
S5232、用索引值為0對應(yīng)的波特率和數(shù)據(jù)幀格式的參數(shù)值設(shè)置所有的所述UART接口,重置所述計時器,然后執(zhí)行步驟S5。
S6、循環(huán)切換到下一個所述UART接口;
S7、循環(huán)檢測切換到的所述UART接口是否收到特征數(shù)據(jù),若否,則返回執(zhí)行步驟S6;若是,則執(zhí)行步驟S8;
S8、判斷接收的所述特征數(shù)據(jù)是否是協(xié)議字節(jié),若否,則執(zhí)行步驟S9;若是,則通信建立成功;
再結(jié)合圖3,圖3為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的步驟S8中判斷接收的所述特征數(shù)據(jù)是否是協(xié)議字節(jié)的流程圖。其中,判斷接收的所述特征數(shù)據(jù)是否是協(xié)議字節(jié)具體包括如下步驟:
S81、判斷接收的特征數(shù)據(jù)是否是期待的同步字,若否,則執(zhí)行步驟S82;若是,則執(zhí)行步驟S83;
S82、判斷是否是第一個同步字,若否,則執(zhí)行步驟S5;若是,則執(zhí)行步驟S85;
S83、返回回應(yīng)字;
S84、判斷協(xié)議字節(jié)是否全部接收,若否,則執(zhí)行步驟S86;若是,則通信建立成功;
S85、返回回應(yīng)字;
S86、重置所述計時器的時間,接收下個同步字。
S9、修改波特率和數(shù)據(jù)幀格式的參數(shù)值,并返回執(zhí)行步驟S5。
其中,所述同步字指的是特征數(shù)據(jù)中由所述PC主機發(fā)出并在嵌入式系統(tǒng)的所述UART接口被接收到的數(shù)據(jù)。所述回應(yīng)字指的是嵌入式系統(tǒng)的所述UART接口接收到同步字后對所述PC主機的一種回應(yīng),表示已接收到數(shù)據(jù)。
再結(jié)合圖4,圖4為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的步驟S9中修改波特率和數(shù)據(jù)幀格式的參數(shù)值的流程圖。其中,修改波特率和數(shù)據(jù)幀格式的參數(shù)值具體包括步驟:
S91、固定波特率,修改數(shù)據(jù)幀格式參數(shù),直至所有的數(shù)據(jù)幀格式參數(shù)測試完畢;
S92、設(shè)置下一個波特率,重新修改數(shù)據(jù)幀格式參數(shù),直至所有的數(shù)據(jù)幀格式參數(shù)測試完畢;
數(shù)據(jù)幀格式從數(shù)組的第一個單元開始測試。
再一起參閱圖5,圖5為本發(fā)明建立嵌入式系統(tǒng)和PC主機通信連接的方法的原理圖。本發(fā)明提供的了建立嵌入式系統(tǒng)和PC主機通信連接的方法的工作原理如下:首先需要初始化一個常用的波特率和數(shù)據(jù)幀格式的數(shù)組,并用兩個索引來分別表示當前正在測試的波特率和數(shù)據(jù)幀格式。將兩個索引的索引值初始化為0,指向數(shù)組的第一個單元。用索引值為0所對應(yīng)的波特率和數(shù)據(jù)幀格式初始化嵌入式系統(tǒng)的所有的UART接口,開啟計時器,準備接收從PC主機串口發(fā)送的特征數(shù)據(jù)。首先選擇一個UART接口,并判斷選擇的該UART接口是否收到數(shù)據(jù),如果沒有收到數(shù)據(jù),則判斷所述計時器是否超時,若沒有超時,就循環(huán)切換到下一個UART口,循環(huán)檢測UART接口是否有收到數(shù)據(jù);如果該選擇的UART接口接收到數(shù)據(jù),說明正在用該UART接口在通信,這樣就可以檢測出正在使用哪個UART接口在和PC主機串口通信。
如果UART口接收到數(shù)據(jù),我們就要判斷接收的數(shù)據(jù)是否是協(xié)議字節(jié),如果不是協(xié)議字節(jié),說明UART接口參數(shù)配置不正確,則需要修改波特率和數(shù)據(jù)幀格式的參數(shù)值,然后需要測試修改后的參數(shù)值,直到所有的協(xié)議字節(jié)都匹配完成,則通信參數(shù)匹配成功。如果所有的參數(shù)配置測試完畢,協(xié)議字節(jié)仍舊沒有匹配成功,則通信參數(shù)匹配不成功。
在發(fā)明中,應(yīng)用了計時器的機制,當修改UART接口的參數(shù)配置后,需要設(shè)置計時器的超時時間。并且對不同的UART接口參數(shù)配置,超時的時間值也是不一樣的。利用計時器機制可以減少每次測試UART接口參數(shù)的時間。
與相關(guān)技術(shù)相比,本發(fā)明提供的建立嵌入式系統(tǒng)和PC主機通信連接的方法具有如下有益效果:
1、能自動監(jiān)測PC主機串口的波特率設(shè)置;
2、能自動監(jiān)測PC主機串口的數(shù)據(jù)幀格式設(shè)置;
3、能檢測是哪個UART接口和PC主機串口通信,而不需要事先知道嵌入式系統(tǒng)應(yīng)用哪個UART接口來和PC串口通信;
4、使用計時器的機制,針對不同的參數(shù)值設(shè)置不同的超時時間值;
5、在打開PC主機串口和嵌入式系統(tǒng)的UART接口通信時,不需要知道嵌入式系統(tǒng)的UART接口的波特率配置和數(shù)據(jù)幀格式的設(shè)置。
以上所述僅為本發(fā)明的實施例,并非因此限制本發(fā)明的專利范圍,凡是利用本發(fā)明說明書及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運用在其它相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專利保護范圍內(nèi)。