色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 串行通信波特率的一種自動(dòng)檢測方法

          串行通信波特率的一種自動(dòng)檢測方法

          作者: 時(shí)間:2012-06-06 來源:網(wǎng)絡(luò) 收藏

          2 低的檢測
            當(dāng)低于1200波特時(shí),接收端收到的字節(jié)都是0x00,因此只能確定其速率低于12 00波特,而不可能再得到更多的信息。為了解決這個(gè)問題,可以在9600波特的速率下繼續(xù)接 收下一個(gè)字節(jié)信息。為600波特或更低時(shí),一個(gè)位的發(fā)送時(shí)間要大于9600波特時(shí)整 個(gè)字節(jié)的接收時(shí)間。因此,發(fā)送端每一個(gè)從‘1’(終止位)到‘0’(起始位)的跳變都會(huì) 讓接收端認(rèn)為一個(gè)新的字節(jié)開始了。表2所示為600波特或更低的傳輸速率時(shí)接收端回車符的 二進(jìn)制序列(只給出開始的一些位)。

          表2  低回車符的接收方式

          9600波特二進(jìn)制序列

          時(shí)間差
          (周期)

          時(shí)間差
          (實(shí)時(shí)間)

          600

          16 0's 16 1's 16 0's

          32

          3.33ms

          300

          32 0's 32 1's 32 0's

          64

          6.66ms

          150

          64 0's 64 1's 64 0's

          128

          13.33ms

          110

          87 0's 87 1's 87 0's

          174

          18.13ms

          75

          128 0's 128 1's 128 0's

          256

          26.66ms

          50

          192 0's 192 1's 192 0's

          384

          4 0.00ms

            600波特時(shí),第一個(gè)從‘1’到‘0’的跳變?cè)诔跏蓟院蠹纯贪l(fā)生。這個(gè)跳變讓接收端 得到字節(jié)0x00。第二個(gè)跳變?cè)诔跏蓟?16+16)*T9600秒以后發(fā)生,這會(huì)讓接收端認(rèn) 為另外一個(gè)字節(jié)開始接收了。一個(gè)二進(jìn)制位的接收時(shí)間是T9600,所以串行接口電路 會(huì)在第一個(gè)跳變以后10* T9600秒提示第一個(gè)字節(jié)接收完畢,在(16+16+10)* T96 00秒以后提示第二個(gè)字節(jié)接收完畢。因此600波特時(shí),第一個(gè)字節(jié)接收完畢和第二個(gè)字節(jié) 接收完畢的時(shí)間差是(16+16+10-10)* T9600=32* T9600秒。表2的第三列所示 是把這個(gè)時(shí)間差以T9600的個(gè)數(shù)表示。因?yàn)門9600=1/9600秒=104.16毫秒,相 乘可以得到兩個(gè)字節(jié)接收完畢的實(shí)時(shí)間差。不同發(fā)送波特率的時(shí)間差如表2的最后一列所示 。有了這個(gè)時(shí)間差信息,就可以確定低傳輸速率時(shí)的波特率了:測定第一個(gè)和第二個(gè)字節(jié)的 接收時(shí)間差,然后在時(shí)間差常數(shù)表(表2)里查出哪個(gè)波特率下的時(shí)間差與之最相近,對(duì)應(yīng) 的就是終端發(fā)送波特率。即使測定的時(shí)間差有些誤差,一般也可以正確地確定波特率。

          3 實(shí)現(xiàn)方式
            通過以上分析,各種波特率都可以通過回車符的發(fā)送和接收信息來測定,算法實(shí)現(xiàn)的偽 代碼在本文的最后給出。應(yīng)用實(shí)踐證明了這種方法的有效性。
          ; Pseudo code to determine what baud rate a transmitter is at,

          on the b asis of a single

          ; RETURN (0x0D) character received from it.

          Initialise receive baud rate to 9600
          Wait for Byte to be received
          IF Byte = 0x00 THEN
             Start Timer
             REPEAT
             UNTIL (Timer > 50 ms OR New Byte Received)
             CASE Timer IN
              1 ms-4 ms: 600 Baud
              5 ms-10 ms: 300 Baud
                11 ms-15 ms: 150 Baud
                16 ms-22 ms: 110 Baud
                23 ms-32 ms: 75 Baud
                33 ms-49 ms: 50 Baud
                 ELSE: Timed out; reset
            END CASE;
          ELSIF Byte >= 0xF1 THEN
             19200 Baud
          ELSE
            CASE Byte IN
              0x0D: 9600 Baud
              0xE6: 4800 Baud
              0x78: 2400 Baud
            0xE0,0xF0: 1800 Baud
              0x80: 1200 Baud
              ELSE: Line noise; reset
            END CASE
          END IF■

          參考文獻(xiàn):

          [1]趙依軍等. 單片微機(jī)接口技術(shù)[M].北京: 人民郵電出版社,1989.
          [2]劉利. 軟硬件技術(shù)參考大全[M].北京: 學(xué)苑出版社,1993.
          [3]張世一. 數(shù)字信號(hào)處理[M]. 北京:北京工業(yè)學(xué)院出版社,1987


          上一頁 1 2 下一頁

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉