一種串口的軟件自適應(yīng)波特率方法
【專利摘要】本發(fā)明公開了一種串口的軟件自適應(yīng)波特率方法,發(fā)送方先在一個(gè)波特率上間隔重復(fù)發(fā)送預(yù)定的數(shù)據(jù),若接收方在一段時(shí)間內(nèi)沒有收到預(yù)定的數(shù)據(jù),則接收方切換一個(gè)波特率,繼續(xù)在所述一段時(shí)間內(nèi)等待接收預(yù)定的數(shù)據(jù),直至接收方在所述一段時(shí)間內(nèi)收到預(yù)定的數(shù)據(jù)后,回復(fù)握手信號(hào)完成自適應(yīng)波特率的同步,之后雙方使用固定的同步后的波特率進(jìn)行通信。
【專利說明】
一種串口的軟件自適應(yīng)波特率方法
技術(shù)領(lǐng)域
[0001]本發(fā)明涉及一種串口自適應(yīng)波特率的方法,屬于數(shù)據(jù)傳輸領(lǐng)域。【背景技術(shù)】
[0002]波特率是對(duì)信號(hào)傳輸速率的一種度量,通常以“波特”(baud)為單位,由于不同的設(shè)備各自的波特率不同,因此在信號(hào)傳輸過程中需要對(duì)傳輸雙方進(jìn)行波特率的同步。
[0003]目前的波特率同步方法包括:1、通過硬件計(jì)算法來實(shí)現(xiàn),其缺陷在于波特率局限于低速的9600、19200、38400、57600、115200bps,且對(duì)硬件平臺(tái)資源依賴較大;2、采用計(jì)算脈沖寬度的算法,其缺陷在于穩(wěn)定性和適應(yīng)性不足,在一些硬件環(huán)境下無法實(shí)現(xiàn)同步。另夕卜,這種波特率的同步方法需要進(jìn)行重新配置才能更改波特率,使用較為不便。
【發(fā)明內(nèi)容】
[0004]針對(duì)現(xiàn)有技術(shù)存在的上述問題,本發(fā)明的目的是提供一種串口的軟件自適應(yīng)波特率方法。
[0005]為實(shí)現(xiàn)上述目的,本發(fā)明采用的技術(shù)方案如下:
[0006]—種串口的軟件自適應(yīng)波特率方法,發(fā)送方先在一個(gè)波特率上間隔重復(fù)發(fā)送預(yù)定的數(shù)據(jù),若接收方在一段時(shí)間內(nèi)沒有收到預(yù)定的數(shù)據(jù),則接收方切換一個(gè)波特率,繼續(xù)在所述一段時(shí)間內(nèi)等待接收預(yù)定的數(shù)據(jù),直至接收方在所述一段時(shí)間內(nèi)收到預(yù)定的數(shù)據(jù)后,回復(fù)握手信號(hào)完成自適應(yīng)波特率的同步,之后雙方使用固定的同步后的波特率進(jìn)行通信。
[0007]作為一種實(shí)施方式,使用串口的接收引腳電平跳變中斷作為觸發(fā)條件,在中斷觸發(fā)后,啟動(dòng)一個(gè)定時(shí)器,在定時(shí)器到期前如果收到了事先約定好的數(shù)據(jù)則認(rèn)為同步上波特率;如果在定時(shí)器到期時(shí)沒有收到事先約定好的數(shù)據(jù),則停止定時(shí)器,并切換到下一波特率,再次等待電平中斷并接受數(shù)據(jù)。
[0008]作為一種實(shí)施方式,所述定時(shí)器為50ms。
[0009]作為一種實(shí)施方式,所述波特率包括9600,19200,38400,57600以及115200bps。
[0010]作為一種實(shí)施方式,所述預(yù)定的數(shù)據(jù)為一個(gè)或者幾個(gè)字符。
[0011]相較于現(xiàn)有技術(shù),本發(fā)明的有益技術(shù)效果在于:
[0012]本發(fā)明提供的串口的軟件自適應(yīng)波特率方法的優(yōu)點(diǎn)在于:1、采用軟件輪訓(xùn)機(jī)制, 可同步的波特率,不受限于9600、19200、38400、57600、115200bps,可以擴(kuò)展到更高的波特率;2、接收方接收到任意數(shù)據(jù)的第一時(shí)間肯定會(huì)有電平跳變,采用電平跳變作為觸發(fā)條件, 可以確保無論任何硬件環(huán)境都可以同步上,相對(duì)于一些采用計(jì)算脈沖寬度之類算法有較好的穩(wěn)定性和適應(yīng)性;3、采用中斷配合軟件輪訓(xùn)切換波特率的機(jī)制,可以自定義任意的同步字,包括同步字長度,有很好的擴(kuò)展性?!靖綀D說明】
[0013]圖1是本發(fā)明提供的一種串口的軟件自適應(yīng)波特率方法的工作流程圖?!揪唧w實(shí)施方式】
[0014]以下結(jié)合附圖對(duì)本發(fā)明的技術(shù)方案做進(jìn)一步詳細(xì)描述。
[0015]本發(fā)明提供的一種串口的軟件自適應(yīng)波特率方法是基于發(fā)送方先在某一波特率上間隔重復(fù)發(fā)送某一個(gè)或者某幾個(gè)事先約定好的字符,接收方收到事先約定好的字符后, 然后回復(fù)握手信號(hào)完成自適應(yīng)波特率的同步,之后雙方使用固定的同步上的波特率進(jìn)行通信,串口自適應(yīng)波特率可以針對(duì)同一產(chǎn)品,滿足多種不同速率的設(shè)備進(jìn)行對(duì)接,而使用者無需切換波特率就可以進(jìn)行數(shù)據(jù)收發(fā),大大提高產(chǎn)品適用性。
[0016]本方案中使用串口接收引腳(RX引腳)電平跳變中斷作為觸發(fā)條件,在中斷觸發(fā)后,啟動(dòng)一個(gè)定時(shí)器,在定時(shí)器到期前如果收到了事先約定好的字符則進(jìn)行同步波特率;如果在定時(shí)器到來時(shí)沒有收到事先約定好的字符或者沒有收到任何字符,則停止定時(shí)器,并切換到下一波特率,再次等待接收引腳中斷并接收數(shù)據(jù);如此循環(huán)直到收到事先約定好的字符或者字符串為止。[〇〇17]如圖1所示,該方法流程圖如下:
[0018]步驟1:設(shè)備開機(jī),先固定波特率9600 (9600,19200,38400,57600,115200bps ),并打開串口電平跳變中斷。
[0019]步驟2:等待串口上接收引腳電平跳變中斷,如果中斷到來則啟動(dòng)定時(shí)器T1 (50ms)〇
[0020]步驟3:串口收到指定的數(shù)據(jù),則同步上串口回復(fù)指定的數(shù)據(jù)跳到步驟5。如果串口沒有收到數(shù)據(jù)或者收到的數(shù)據(jù)不是約定好的數(shù)據(jù)那么等待T1超時(shí),如果T1超時(shí)則回到步驟4〇[〇〇21]步驟4:重新初始化串口,并且波特率切換到下一波特率19200,并重新開啟接收引腳中斷,回到步驟2。
[0022]步驟5:停止T1,記錄當(dāng)前同步的波特率,即為同步上的波特率,回復(fù)握手信號(hào)完成自適應(yīng)波特率同步。
[0023]本方案中有兩個(gè)對(duì)象,一個(gè)對(duì)象記為模塊A,另一模塊記為模塊B,模塊A開機(jī)后處于自適應(yīng)波特率狀態(tài)等待模塊B同步,具體實(shí)施步驟如下:[〇〇24]1)模塊A上電開機(jī),模塊B上電開機(jī)。
[0025]2)模塊A先設(shè)置固定波特率9600,并打開接收引腳的中斷功能。
[0026]3)模塊A等待串口接收引腳中斷到來。[〇〇27]4)模塊B開機(jī)后開始固定以100MS間隔發(fā)送指定的同步字符或者字符串。
[0028]5)模塊A由于接收引腳上有數(shù)據(jù)過來那么會(huì)引發(fā)中斷,進(jìn)而觸發(fā)中斷,啟動(dòng)定時(shí)器 Tl〇
[0029]6)定時(shí)器T1到期前收到指定字符串,模塊A記錄當(dāng)前使用的波特率為同步波特率并回復(fù)握手信息給模塊B,開始正常工作。進(jìn)入步驟8。
[0030]7 )T1超時(shí),模塊A切換到另一個(gè)波特率,并使能接收引腳的輸入中斷回到步驟3。[0031 ]8)模塊B收到指定字符,完成自適應(yīng)的同步,至此流程結(jié)束。
[0032]最后有必要在此指出的是:以上所述僅為本發(fā)明較佳的【具體實(shí)施方式】,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。
【主權(quán)項(xiàng)】
1.一種串口的軟件自適應(yīng)波特率方法,其特征在于:發(fā)送方先在一個(gè)波特率上間隔重 復(fù)發(fā)送預(yù)定的數(shù)據(jù),若接收方在一段時(shí)間內(nèi)沒有收到預(yù)定的數(shù)據(jù),則接收方切換一個(gè)波特 率,繼續(xù)在所述一段時(shí)間內(nèi)等待接收預(yù)定的數(shù)據(jù),直至接收方在所述一段時(shí)間內(nèi)收到預(yù)定 的數(shù)據(jù)后,回復(fù)握手信號(hào)完成自適應(yīng)波特率的同步,之后雙方使用固定的同步后的波特率 進(jìn)行通{目。2.根據(jù)權(quán)利要求1所述的串口的軟件自適應(yīng)波特率方法,其特征在于:使用串口的接收 引腳電平跳變中斷作為觸發(fā)條件,在中斷觸發(fā)后,啟動(dòng)一個(gè)定時(shí)器,在定時(shí)器到期前如果收 到了事先約定好的數(shù)據(jù)則認(rèn)為同步上波特率;如果在定時(shí)器到期時(shí)沒有收到事先約定好的 數(shù)據(jù),則停止定時(shí)器,并切換到下一波特率,再次等待電平中斷并接受數(shù)據(jù)。3.根據(jù)權(quán)利要求2所述的串口的軟件自適應(yīng)波特率方法,其特征在于:所述定時(shí)器為 50ms 〇4.根據(jù)權(quán)利要求1所述的串口的軟件自適應(yīng)波特率方法,其特征在于:所述波特率包括 9600,19200,38400,57600 以及 115200bps。5.根據(jù)權(quán)利要求1所述的串口的軟件自適應(yīng)波特率方法,其特征在于:所述預(yù)定的數(shù)據(jù) 為一個(gè)或者幾個(gè)字符。
【文檔編號(hào)】G06F13/42GK106095712SQ201610375092
【公開日】2016年11月9日
【申請(qǐng)日】2016年5月31日
【發(fā)明人】白園飛, 高飛, 韋鈺
【申請(qǐng)人】上海工程技術(shù)大學(xué)