新聞中心

        EEPW首頁 > EDA/PCB > 設計應用 > 單片機在波特率變換器中的應用

        單片機在波特率變換器中的應用

        ——
        作者:作者:北京航天動力研究所 鄭大生 孫文英 翟麗婷 時間:2007-01-26 來源:《EDN電子設計技術》 收藏

        在一些復雜的系統中,系統與分系統、分系統與設備等之間存在數據的傳遞問題,往往采用通信的方式來解決。由于分系統、沒備等通信波特率的不同,特別是一些特殊波特率設備的存在,使得系統中設備間的相互通信不易實現。例如,在一個系統中,上位機接收某一設備的數據,如圖1所示,設備l和設備2采用的是172.8 kbps的波特率,而上位機用vb編程,其通信波特率為115.2 kbps、128 kbps或256 kbps,等,這樣設備之間就不能相互通信,給設計帶來困難。為了解決上述問題,采用雙單片機電路,設計了波特率變換器,將接收波特率為172.8 kbps的數據,轉換成波特率為115.2 kbps的輸出,從而使不同波特率設備之間的通信成為可能。

        本文引用地址:http://www.104case.com/article/21493.htm

        1 波特率變換電路

        波特率變換電路如圖2所示。電路采用2片單片機89c5l作為電路的核心,利用單片機的uart串行口與相關設備通信。單片機u1_l.(接波特率低的設備)與波特率為115.2 kbps的設備通信,單片機u2_h(接波特率高的設備)與波特率為172.8 kbps的設備通信。ul_i,與u2_h的通信采用并行口方式,以加快ul_i。與u2_h之間數據傳遞的速率。u1_l與u2_h的通信可以采用中斷查詢的方式,也可以采用握手查詢的方式進行數據傳遞。

        電路采用2片75176接口驅動芯片組成一個rs-422通信接口。u3和u4組成的通信接口與115.2 kbps的設備相連,u5和u6組成的通信接口與172.8 kbps的設備相連,通信接口采用中斷技術。波特率變換器工作原理如下:u1_i。從串行口收到設備的數據后,從pl口輸出數據,并通知u2_h取數,u2_h取到數據后向設備發出數據,同時通知ul_i.已取走數據,為u1一l下一次輸出數據做準備。當u2_h從串行口收到設備的數據后,查詢u1_i,是否允許接收數據,如允許接收數據,u2_h從p1口輸出數據,并通知ul_l取數,ul_l取到數據后向設備發出數據,同時通知u2_h已取走數據,為u2_h下一次輸出數據做準備;如ul_l不允許接收數據,則u2_h暫緩送數。

        2 波特率變換器的應用

        波特率變換器在應用中,根據使用情況可以分為單向傳送和雙向傳送。兩單片機之間的數據傳遞可以采用中斷方式.也可以采用查詢方式。如采用查詢方式,編程時利用p2口的幾位作為查詢信號,實現單向或雙向傳送。

        2.1 單向傳送

        單向傳送就是通信口的數據流只向一個方向,即從ul_l接收到的數據,從u2_h發送出去,或從u2_h接收到的數據,從ul_l發送出去。用這種方式進行軟件編程比較簡單。現以u1_l只接收外部設備數據,u2_h只向外部設備發送數據,采用查詢方式為例,兩單片機之間數據傳送的流程圖如圖3所示。其中ul_l的p2.2作為向u2_h傳送新數據的查詢信號(u2_h的p2.5),p2.2=“0”表示有新的數據,p2.2=“1”表示沒有新的數據;u2_h的p2.2作為接收u1_l數據的查詢信號(u1_l的p2.5),p2.2=“o”表示可以接收新的數據,p2.2=“1”表示不能接收新的數據。如果采用中斷方式,兩單片機的查詢信號更簡單,只要ul_l查詢u2_h是否可以接收數據的信號就可以,u2_h無需查詢u1_l的查詢信號。

        2.2 雙向傳送

        雙向傳送就是通信口可以同時接收數據和發送數據,數據流是雙向的,ul_l和u2_h既接收數據也發送數據。這種方式軟件編程比較復雜,特別是雙向傳送數據采用查詢方式時。單片機之間的查詢信號就更加復雜了。現以雙向查詢方式為例,兩單片機之間數據傳送的流程圖如圖4所示,u2_h的流程與u1_l一樣。其中u1_l向u2_h傳送數據時的查詢信號與單向傳送的定義一樣,u2_h的p2.3作為向u1_l傳送新數據的查詢信號(u1_l的p2.4),p2.3=“0”表示有新的數據,p2.3=“l”表示沒有新的數據;ul_l的p2.3作為接收u2_h數據的查詢信號(u2_h的p2.4),p2.3=“o”表示可以接收新的數據,p2.3=“1”表示不能接收新的數據。如果采用中斷方式,查詢信號可以減少,編程可以簡化。

        2.3 應用時的注意事項

        兩個單片機之間的握手方式如果采用中斷,由于u2_h向外部發送數據比u1_l接收外部數據快,ul_l向u2_h傳送數據時,無需考慮u2_h的狀態,而u2_h向u1_l傳送數據時,由于u2_h接收外部數據比u1_l向外部發送數據快,u2_h必須查詢ul_l的狀態,即u1_l是否處于接收u2_h數據的狀態,否則,u2_h就不能向ul_l傳送數據。

        若作為rs_485通信接口使用,只需對圖2中的電路稍做改動,增加對75176芯片的讀寫控制,同時兩個單片機中與主通信設備相連的單片機作為主機,通過p2口的一位來協調兩個單片機是接收數據還是發送數據。

        值得注意的是,該波特率變換器在不同的應用中會受到一定的限制,在使用時要注意下面幾點:①波特率很高時,要考慮單片機串行口能否實現;②從波特率高的向波特率低的變換時,要考慮波特率低的單片機能否實現不丟數據的發送;③當雙向變換時,既要考慮上述情況,還有考慮程序的大小,以及執行時間對雙向傳送數據的影響,計算兩個單片機能否實現不丟數據的變換,在時間上要留有余量;④在查詢時,要注意握手信號的關系,不要對同一數據產生重復讀取,以至于數據重復;⑤波特率不同時,單片機可以選用不同的晶振頻率。

        2.4 實例及源程序

        在實際使用中若碰到如圖1所示的情況,需要波特率變換器將坡特率為172.8kbps的通信數據轉換成波特率為115.2kbps,再向上位機傳送。實際使用的電路如圖2所示。在該實例中,為了防止局部時刻接收數據比發送快而丟失數據,再u2_h單片機的程序中,加入了8個數據區作為接收數據存放緩沖區。

        3 結論

        通過長時間的通信實驗和實際應用,設計的波特率變換器方案可行,通信可靠,沒有出現數據丟失的情況。在一些系統中,由于通信波特率特殊,在設備之間通信存在波特率不匹配時,通過波特率變換器,可以實現不同波特率設備之間的通信。通過更改單片機的晶頻振率,可以滿足各種波特率(在單片機允許的范圍內)的轉換。




        關鍵詞:

        評論


        相關推薦

        技術專區

        關閉
        主站蜘蛛池模板: 巫山县| 景宁| 镇雄县| 安泽县| 长沙市| 鸡泽县| 宝清县| 保靖县| 湘西| 岐山县| 彭水| 武定县| 上林县| 武义县| 沙坪坝区| 台中县| 湘潭市| 莫力| 醴陵市| 东乌| 东台市| 长乐市| 岗巴县| 南召县| 南华县| 尖扎县| 柘荣县| 三门峡市| 马公市| 高邑县| 怀柔区| 天长市| 惠州市| 榆林市| 澄城县| 威信县| 桃源县| 虞城县| 宁国市| 双江| 马尔康县|