[發明專利]基于單片機輸入捕獲功能的波特率自適應方法有效
| 申請號: | 201110221090.3 | 申請日: | 2011-08-03 |
| 公開(公告)號: | CN102306136A | 公開(公告)日: | 2012-01-04 |
| 發明(設計)人: | 鄭堅江;霍斌斌 | 申請(專利權)人: | 寧波三星電氣股份有限公司 |
| 主分類號: | G06F13/42 | 分類號: | G06F13/42 |
| 代理公司: | 寧波市鄞州甬致專利代理事務所 33228 | 代理人: | 代忠炯 |
| 地址: | 315191 浙江省寧*** | 國省代碼: | 浙江;33 |
| 權利要求書: | 查看更多 | 說明書: | 查看更多 |
| 摘要: | |||
| 搜索關鍵詞: | 基于 單片機 輸入 捕獲 功能 波特率 自適應 方法 | ||
技術領域
本發明涉及串行通信領域,特別涉及一種基于單片機輸入捕獲功能的波特率自適應方法。
背景技術
RS485通信與串口通信一樣,是按位(bit)發送和接收字節數據。盡管比按字節(byte)的并行通信慢,但是串口可以在使用一根線發送數據的同時用另一根線接收數據。這之間沒有同步的時鐘線,這就要求發送和接收兩方必須保證通信的速率相同,否則出現錯碼。串口通信最重要的參數是波特率、數據位、停止位和奇偶校驗。對于兩個進行通行的端口,這些參數必須匹配。而實現波特率自適應就是判別上行的波特率,以調整自己的通信波特率,來實現通信速率的匹配。
一般情況下波特率自適應現在采用的方式是標準波特率窮舉法。這種方法要求主機的波特率必須在有限的幾個固定數值之間變化,如300b/s~9.6?kb/s之間的標準值,且從機的工作振蕩頻率已知并穩定。從機啟動通信程序后,逐個嘗試以不同的波特率接收主機發出的特定字符,直到能正確接收為止。因此,該方法的運用具有一定的局限性,握手時間太慢。還有一種是通過計時RXD引腳上一個上升沿和一個下降沿之間的計時寬度來完成波特率的自適應。這種方式對波特率波形要求比較高,必須是標準的UART波形,如果串口的波形不規整,則無法完成自適應,對硬件的環境要求比較高,適用性不高。
發明內容
本發明所要解決的技術問題是:提供一種握手時間快、適用范圍廣,同時在串口的波形不規整的情況下也可以完成自適應的基于單片機輸入捕獲功能的波特率自適應方法。
本發明解決上述問題所采用的技術方案為:提供如下一種基于單片機輸入捕獲功能的波特率自適應方法,其特征在于:通過使用單片機通用GPIO口的下降沿觸發中斷功能和定時器計數功能,捕獲所接收數據產生的兩個下降沿,計時這兩個下降沿之間的時間來求出其最小碼元寬度,并根據求出的最小碼元寬度來確定主機的波特率;
具體實現方法包括以下步驟:
步驟101:對一個定時器的一個輸入捕獲通道進行初始化,同時開啟所述輸入捕獲通道的通用GPIO下降沿輸入中斷,并禁止所述輸入捕獲通道的下降沿輸入捕獲中斷;
步驟102:對最小碼元寬度及與輸入捕獲相關的各個狀態量、標志進行初始化,初始全局捕獲結果標志為沒有捕獲到兩個下降沿,捕獲狀態機為等待捕獲第一個下降沿輸入;
步驟103:等待中斷產生,如果產生GPIO下降沿輸入中斷則進入步驟104,如果產生輸入捕獲通道的下降沿輸入捕獲中斷則進入步驟201;?
步驟104:所述輸入捕獲通道上的GPIO下降沿輸入中斷觸發;
步驟105:判斷所述輸入捕獲通道下降沿輸入捕獲中斷是否完成兩個下降沿捕獲,若是,進入步驟109,不是,則進入步驟106;
步驟106:判斷所述輸入捕獲通道的捕獲狀態機是否只捕獲到了第一個下降沿,若是,回到步驟103,不是,則進入步驟107;
步驟107:由于所述輸入捕獲通道第一個下降沿也沒有捕獲到,判斷所述輸入捕獲通道的下降沿輸入捕獲中斷是否開啟,若是,回到步驟103,不是,則進入步驟108;
步驟108:開啟所述輸入捕獲通道的下降沿輸入捕獲中斷并回到步驟103;
步驟109:判斷捕獲的最小碼元寬度是否是相關波特率的最小碼元寬度,若是,進入步驟110,不是,則回到步驟102;
步驟110:判斷捕獲的最小碼元寬度是否可以確定所接收數據的波特率,若是,進入步驟111,不是,則回到步驟102;
步驟111:對自身波特率進行調整處理;
步驟112:完成一次自適應處理,并禁止所述輸入捕獲通道的下降沿輸入捕獲中斷,通用GPIO下降沿輸入中斷繼續開啟并回到步驟102,等待下一次UART通信的起始位下降沿觸發GPIO下降沿輸入中斷,
步驟201:所述輸入捕獲通道的下降沿輸入捕獲中斷觸發;
步驟202:判斷捕獲狀態機是否是正在等待捕獲第一個下降沿輸入,若是,進入步驟203,不是,則進入步驟204;
步驟203:讀取所述定時器的第一次計數值T1,并保存計數值,初始自己的捕獲狀態機為等待捕獲第二個下降沿輸入中斷并進入步驟210;
步驟204:讀取所述定時器的第二次計數值T2,并判斷所述計時器的計數是否溢出,若是,進入步驟205,不是,則進入步驟206;
步驟205:對計數值T1、T2清零并進入步驟209;
該專利技術資料僅供研究查看技術是否侵權等信息,商用須獲得專利權人授權。該專利全部權利屬于寧波三星電氣股份有限公司,未經寧波三星電氣股份有限公司許可,擅自商用是侵權行為。如果您想購買此專利、獲得商業授權和技術合作,請聯系【客服】
本文鏈接:http://www.szxzyx.cn/pat/books/201110221090.3/2.html,轉載請聲明來源鉆瓜專利網。





