一種檢測(cè)rs232串口波特率的方法
【技術(shù)領(lǐng)域】
[0001] 本發(fā)明涉及通信領(lǐng)域,尤其涉及一種檢測(cè)RS232串口波特率的方法,本發(fā)明檢測(cè) RS232串口波特率的方法用于采用RS232串口通信的系統(tǒng)。
【背景技術(shù)】
[0002] 常見的采用RS232串口通信的系統(tǒng),其發(fā)送端和接收端必須事先約定傳輸?shù)乃俾?才能實(shí)現(xiàn)正常通信;當(dāng)信號(hào)發(fā)送端的數(shù)據(jù)傳輸速率改變或接收端事先不知道發(fā)送端的傳輸 速率時(shí),即需要檢測(cè)數(shù)據(jù)傳輸?shù)牟ㄌ芈省?br>[0003] 現(xiàn)有檢測(cè)波特率的方法大多需要事先約定檢測(cè)碼,并且只能對(duì)幾個(gè)特定的速率檢 測(cè),缺乏靈活性。
【發(fā)明內(nèi)容】
[0004] 針對(duì)上述問題,本發(fā)明的目的在于提供一種檢測(cè)RS232串口波特率的方法,不 需要檢測(cè)碼即可對(duì)RS232串口波特率進(jìn)行智能檢測(cè),且檢測(cè)的范圍可以涵蓋所有可能的 RS232串口波特率。
[0005] 為達(dá)到上述目的,本發(fā)明的實(shí)施例采用如下技術(shù)方案予以實(shí)現(xiàn)。
[0006] -種檢測(cè)RS232串口波特率的方法,所述RS232用于連接計(jì)算機(jī)和數(shù)字處理芯片, 以使得所述計(jì)算機(jī)和所述數(shù)字處理芯片采用標(biāo)準(zhǔn)ASCII碼進(jìn)行數(shù)據(jù)傳輸,所述方法包括如 下步驟:
[0007] 所述數(shù)字處理芯片采用數(shù)據(jù)線依次接收通過所述RS232串口傳輸?shù)亩鄠€(gè)數(shù)據(jù)字; 每個(gè)數(shù)據(jù)字的比特位依次為1個(gè)比特的起始位,8個(gè)比特的數(shù)據(jù)位,1個(gè)比特的校驗(yàn)位,以及 1個(gè)比特的高電平結(jié)束位;或者所述每個(gè)數(shù)據(jù)字的比特位依次為1個(gè)比特的起始位,8個(gè)比 特的數(shù)據(jù)位,以及1個(gè)比特的高電平結(jié)束位;
[0008] 檢測(cè)任意一個(gè)數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、第一高電平的時(shí)長(zhǎng)、第二低電平的時(shí)長(zhǎng), 所述數(shù)據(jù)字起始位的開始時(shí)刻為所述數(shù)據(jù)字第一低電平的開始時(shí)刻,所述數(shù)據(jù)字第一低電 平的結(jié)束時(shí)刻為所述數(shù)據(jù)字第一高電平的開始時(shí)刻,所述數(shù)據(jù)字第一高電平的結(jié)束時(shí)刻為 所述數(shù)據(jù)字第二低電平的開始時(shí)刻;
[0009] 根據(jù)所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)以及所述數(shù)據(jù) 字第二低電平的時(shí)長(zhǎng),確定所述RS232串口波特率。
[0010] 本發(fā)明的特點(diǎn)和進(jìn)一步的改進(jìn)為:
[0011] (1)在數(shù)字處理芯片采用數(shù)據(jù)線依次接收通過所述RS232串口傳輸?shù)亩鄠€(gè)數(shù)據(jù)字 之前,所述方法還包括:
[0012] 計(jì)算并記錄所述RS232的每個(gè)串口波特率對(duì)應(yīng)傳輸1個(gè)比特位所需時(shí)長(zhǎng)的1倍至 10倍的數(shù)值。
[0013] (2)計(jì)算并記錄所述RS232的每個(gè)串口波特率對(duì)應(yīng)傳輸1個(gè)比特位所需時(shí)長(zhǎng)的1 倍至10倍的數(shù)值,具體包括:
[0014] 以表格的形式記錄所述RS232的每個(gè)串口波特率對(duì)應(yīng)傳輸1個(gè)比特位所需時(shí)長(zhǎng)的 1倍至10倍的數(shù)值,其中,表格的第一列為從小到大排列的所述RS232的各個(gè)串口波特率, 所述表格的第二列至第十一列依次為每個(gè)串口波特率對(duì)應(yīng)傳輸1個(gè)比特位所需時(shí)長(zhǎng)的1倍 至10倍的數(shù)值,所述RS232的串口波特率包括1200波特,2400波特,4800波特,9600波特, 19200波特,38400波特,115200波特,所述每個(gè)串口波特率對(duì)應(yīng)傳輸1個(gè)比特位所需時(shí)長(zhǎng)以 檢測(cè)時(shí)鐘周期為單位進(jìn)行表示,其中所述檢測(cè)時(shí)鐘周期為115200波特率數(shù)據(jù)周期的l/2 n, η為自然數(shù)。
[0015] (3)所述根據(jù)所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)以及 所述數(shù)據(jù)字第二低電平的時(shí)長(zhǎng),確定所述RS232串口波特率,具體包括:
[0016] 若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)為第一波特率傳輸1個(gè)比特位所需時(shí)長(zhǎng)的9倍, 則確定所述RS232串口波特率為所述第一波特率;
[0017] 若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)為第二波特率傳輸1個(gè)比特位所需時(shí)長(zhǎng)的5倍, 或者若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)為第三波特率傳輸1個(gè)比特位所需時(shí)長(zhǎng)的10倍,則確 定所述RS232串口波特率為所述第二波特率或者所述第三波特率,所述第二波特率為所述 第二波特率的兩倍。
[0018] (4)所述確定所述RS232串口波特率為所述第二波特率或者所述第三波特率,具 體包括:
[0019] 采用所述第二波特率接收所述RS232串口傳輸?shù)牡谝粩?shù)據(jù)字,若所述第一數(shù)據(jù)字 滿足起始位為低電平,數(shù)據(jù)位中的最高位為低電平,且結(jié)束位為高電平,則所述第二波特率 為所述RS232串口波特率,否則所述第三波特率為所述RS232串口波特率;
[0020] 或者,采用所述第三波特率接收所述RS232串口傳輸?shù)牡诙?shù)據(jù)字,若所述第二 數(shù)據(jù)字滿足起始位為低電平,數(shù)據(jù)位中的最高位為低電平,且結(jié)束位為高電平,則所述第三 波特率為所述RS232串口波特率,否則所述第二波特率為所述RS232串口波特率。
[0021] (5)所述根據(jù)所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng),所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)以及 所述數(shù)據(jù)字第二低電平的時(shí)長(zhǎng),確定所述RS232串口波特率,還具體包括:
[0022] 若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)和所述數(shù)據(jù)字第 二低電平的時(shí)長(zhǎng)存在公約數(shù)5,則所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)除以公約數(shù)5之后的值即 為所述RS232串口波特率;
[0023] 若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)和所述數(shù)據(jù)字第 二低電平的時(shí)長(zhǎng)存在公約數(shù)7,則所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)除以公約數(shù)7之后的值即 為所述RS232串口波特率;
[0024] 若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)和所述數(shù)據(jù)字第 二低電平的時(shí)長(zhǎng)存在公約數(shù)3,則所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)除以公約數(shù)3之后的值為 第四波特率,所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)除以公約數(shù)3之后的值的兩倍為第五波特率, 確定所述RS232串口波特率為所述第四波特率或者所述第五波特率,所述第四波特率為所 述第五波特率的兩倍;
[0025] 若所述數(shù)據(jù)字第一低電平的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)和所述數(shù)據(jù)字第 二低電平的時(shí)長(zhǎng)不存在公約數(shù)3、公約數(shù)5、公約數(shù)7和公約數(shù)9,則所述數(shù)據(jù)字第一低電平 的時(shí)長(zhǎng)、所述數(shù)據(jù)字第一高電平的時(shí)長(zhǎng)和所述數(shù)據(jù)字第二低電平的時(shí)長(zhǎng)的最大公約數(shù)的值 為第六波特率,所述第六波特率的兩倍為第七波特率,確定所述RS232串口波特率為所述 第六波特率或者所述第七波特率。
[0026] (6)所述確定所述RS232串口波特率為所述第四波特率或者所述第五波特率,具 體包括:
[0027] 采用所述第四波特率接收所述RS232串口傳輸?shù)牡谌龜?shù)據(jù)字,若所述第三數(shù)據(jù)字 滿足起始位為低電平,數(shù)據(jù)位中的最高位為低電平,且結(jié)束位為高電平,則所述第四波特率 為所述RS232串口波特率,否則所述第五波特率為所述RS232串口波特率;
[0028] 或者,采用所述第五波特率接收所述RS232串口傳輸?shù)牡谒臄?shù)據(jù)字,若所述第四 數(shù)據(jù)字滿足起始位為低電平,數(shù)據(jù)位中的最高位為低電平,且結(jié)束位為高電平,則所述第五 波特率為所述RS232串口波特率,否則所述第四波特率為所述RS232串口波特率。
[0029] (7)所述確定所述RS232串口波特率為所述第六波特率或者所述第七波特率,具 體包括:
[0030] 采用所述第六波特率接收所述RS232串口傳輸?shù)牡谖鍞?shù)據(jù)字,若所述第五數(shù)據(jù)字 滿足起始位為低電平,數(shù)據(jù)位中的最高位為低電平,且結(jié)束位為高電平,則所述第六波特率 為所述RS232串口波特率,否則所述第七波特率為所述RS232串口波特率;
[0031] 或者,采用所述第七波特率接收所述RS232串口傳輸?shù)诹鶖?shù)據(jù)字,若所述第六數(shù) 據(jù)字滿足起始位為低電平,數(shù)據(jù)位中的最高位為低電平,且結(jié)束位為高電平,則所述第七波 特率為所述RS232串口波特率,否則所述第六波特率為所述RS232串口波特率。
[0032] (8)若所述數(shù)字處理芯片檢測(cè)到所述數(shù)據(jù)線上高電平的持續(xù)時(shí)長(zhǎng)大于或者等于 10毫秒時(shí),則確定由所述高電平跳變至低電平時(shí)即為所述數(shù)據(jù)字的起始位的開始時(shí)刻。
[0033] 本發(fā)明相對(duì)于現(xiàn)有技術(shù)的優(yōu)點(diǎn)為:對(duì)常見的計(jì)算機(jī)和數(shù)字處理芯片之間通過 RS232進(jìn)行ASCII碼通信時(shí),在接收端數(shù)字處理芯片不知道發(fā)射端計(jì)算機(jī)信號(hào)波特率的情 況下,不需要檢測(cè)碼即可對(duì)RS232串口波特率進(jìn)行智能檢測(cè),檢測(cè)的范圍涵蓋了所有可能 的RS232波特率。
【附圖說明】
[0034] 為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn) 有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯