《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于雙單片機(jī)的波特率變換器設(shè)計(jì)
基于雙單片機(jī)的波特率變換器設(shè)計(jì)
摘要: 本文采用雙單片機(jī)電路,,設(shè)計(jì)了波特率變換器,將接收波特率為172.8kbps的數(shù)據(jù),,轉(zhuǎn)換成波特率為115.2kbps的輸出,,從而使不同波特率設(shè)備之間的通信成為可能,。
Abstract:
Key words :

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

  

 

  1 波特率變換電路

 

  波特率變換電路如圖2所示。電路采用2片單片機(jī)89C5l作為電路的核心,,利用單片機(jī)的UART串行口與相關(guān)設(shè)備通信,。單片機(jī)u1_L.(接波特率低的設(shè)備)與波特率為115.2 kbps的設(shè)備通信,單片機(jī)U2_H(接波特率高的設(shè)備)與波特率為172.8 kbps的設(shè)備通信,。Ul_I,,與U2_H的通信采用并行口方式,以加快Ul_I,。與U2_H之間數(shù)據(jù)傳遞的速率,。U1_L與U2_H的通信可以采用中斷查詢的方式,也可以采用握手查詢的方式進(jìn)行數(shù)據(jù)傳遞,。

 

  

 

  電路采用2片75176接口驅(qū)動(dòng)芯片組成一個(gè)RS-422通信接口,。U3和U4組成的通信接口與115.2 kbps的設(shè)備相連,U5和U6組成的通信接口與172.8 kbps的設(shè)備相連,,通信接口采用中斷技術(shù),。波特率變換器工作原理如下:U1_I。從串行口收到設(shè)備的數(shù)據(jù)后,,從Pl口輸出數(shù)據(jù),,并通知U2_H取數(shù), U2_H取到數(shù)據(jù)后向設(shè)備發(fā)出數(shù)據(jù),,同時(shí)通知Ul_I.已取走數(shù)據(jù),,為U1一L下一次輸出數(shù)據(jù)做準(zhǔn)備,。當(dāng)U2_H從串行口收到設(shè)備的數(shù)據(jù)后,查詢 U1_I,,是否允許接收數(shù)據(jù),,如允許接收數(shù)據(jù),U2_H從P1口輸出數(shù)據(jù),,并通知Ul_L取數(shù),,Ul_L取到數(shù)據(jù)后向設(shè)備發(fā)出數(shù)據(jù),同時(shí)通知U2_H已取走數(shù)據(jù),,為U2_H下一次輸出數(shù)據(jù)做準(zhǔn)備,;如Ul_L不允許接收數(shù)據(jù),則U2_H暫緩送數(shù),。

 

  2 波特率變換器的應(yīng)用

 

  波特率變換器在應(yīng)用中,,根據(jù)使用情況可以分為單向傳送和雙向傳送。兩單片機(jī)之間的數(shù)據(jù)傳遞可以采用中斷方式.也可以采用查詢方式,。如采用查詢方式,,編程時(shí)利用P2口的幾位作為查詢信號(hào),實(shí)現(xiàn)單向或雙向傳送,。

  2.1 單向傳送

  單向傳送就是通信口的數(shù)據(jù)流只向一個(gè)方向,,即從Ul_L接收到的數(shù)據(jù),從U2_H發(fā)送出去,,或從U2_H接收到的數(shù)據(jù),從Ul_L發(fā)送出去,。用這種方式進(jìn)行軟件編程比較簡(jiǎn)單?,F(xiàn)以U1_L只接收外部設(shè)備數(shù)據(jù),U2_H只向外部設(shè)備發(fā)送數(shù)據(jù),,采用查詢方式為例,,兩單片機(jī)之間數(shù)據(jù)傳送的流程圖如圖3所示。其中 Ul_L的P2.2作為向U2_H傳送新數(shù)據(jù)的查詢信號(hào)(U2_H的P2.5),,P2.2=“0”表示有新的數(shù)據(jù),,P2.2=“1”表示沒有新的數(shù)據(jù); U2_H的P2.2作為接收U1_L數(shù)據(jù)的查詢信號(hào)(U1_L的P2.5),,P2.2=“O”表示可以接收新的數(shù)據(jù),,P2.2=“1”表示不能接收新的數(shù)據(jù)。如果采用中斷方式,,兩單片機(jī)的查詢信號(hào)更簡(jiǎn)單,,只要Ul_L查詢U2_H是否可以接收數(shù)據(jù)的信號(hào)就可以,U2_H無需查詢U1_L的查詢信號(hào),。

 

  

 

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

  

 

  1 波特率變換電路

 

  波特率變換電路如圖2所示,。電路采用2片單片機(jī)89C5l作為電路的核心,利用單片機(jī)的UART串行口與相關(guān)設(shè)備通信,。單片機(jī)u1_L.(接波特率低的設(shè)備)與波特率為115.2 kbps的設(shè)備通信,,單片機(jī)U2_H(接波特率高的設(shè)備)與波特率為172.8 kbps的設(shè)備通信。Ul_I,,與U2_H的通信采用并行口方式,,以加快Ul_I。與U2_H之間數(shù)據(jù)傳遞的速率,。U1_L與U2_H的通信可以采用中斷查詢的方式,,也可以采用握手查詢的方式進(jìn)行數(shù)據(jù)傳遞。

 

  

 

  電路采用2片75176接口驅(qū)動(dòng)芯片組成一個(gè)RS-422通信接口,。U3和U4組成的通信接口與115.2 kbps的設(shè)備相連,,U5和U6組成的通信接口與172.8 kbps的設(shè)備相連,通信接口采用中斷技術(shù),。波特率變換器工作原理如下:U1_I,。從串行口收到設(shè)備的數(shù)據(jù)后,,從Pl口輸出數(shù)據(jù),并通知U2_H取數(shù),, U2_H取到數(shù)據(jù)后向設(shè)備發(fā)出數(shù)據(jù),,同時(shí)通知Ul_I.已取走數(shù)據(jù),為U1一L下一次輸出數(shù)據(jù)做準(zhǔn)備,。當(dāng)U2_H從串行口收到設(shè)備的數(shù)據(jù)后,,查詢 U1_I,是否允許接收數(shù)據(jù),,如允許接收數(shù)據(jù),,U2_H從P1口輸出數(shù)據(jù),并通知Ul_L取數(shù),,Ul_L取到數(shù)據(jù)后向設(shè)備發(fā)出數(shù)據(jù),,同時(shí)通知U2_H已取走數(shù)據(jù),為U2_H下一次輸出數(shù)據(jù)做準(zhǔn)備,;如Ul_L不允許接收數(shù)據(jù),,則U2_H暫緩送數(shù)。

 

  2 波特率變換器的應(yīng)用

 

  波特率變換器在應(yīng)用中,,根據(jù)使用情況可以分為單向傳送和雙向傳送,。兩單片機(jī)之間的數(shù)據(jù)傳遞可以采用中斷方式.也可以采用查詢方式。如采用查詢方式,,編程時(shí)利用P2口的幾位作為查詢信號(hào),,實(shí)現(xiàn)單向或雙向傳送。

  2.1 單向傳送

  單向傳送就是通信口的數(shù)據(jù)流只向一個(gè)方向,,即從Ul_L接收到的數(shù)據(jù),,從U2_H發(fā)送出去,或從U2_H接收到的數(shù)據(jù),,從Ul_L發(fā)送出去,。用這種方式進(jìn)行軟件編程比較簡(jiǎn)單?,F(xiàn)以U1_L只接收外部設(shè)備數(shù)據(jù),,U2_H只向外部設(shè)備發(fā)送數(shù)據(jù),采用查詢方式為例,,兩單片機(jī)之間數(shù)據(jù)傳送的流程圖如圖3所示,。其中 Ul_L的P2.2作為向U2_H傳送新數(shù)據(jù)的查詢信號(hào)(U2_H的P2.5),P2.2=“0”表示有新的數(shù)據(jù),,P2.2=“1”表示沒有新的數(shù)據(jù),; U2_H的P2.2作為接收U1_L數(shù)據(jù)的查詢信號(hào)(U1_L的P2.5),P2.2=“O”表示可以接收新的數(shù)據(jù),,P2.2=“1”表示不能接收新的數(shù)據(jù),。如果采用中斷方式,,兩單片機(jī)的查詢信號(hào)更簡(jiǎn)單,只要Ul_L查詢U2_H是否可以接收數(shù)據(jù)的信號(hào)就可以,,U2_H無需查詢U1_L的查詢信號(hào),。

 

  

 

  2.2 雙向傳送

  雙向傳送就是通信口可以同時(shí)接收數(shù)據(jù)和發(fā)送數(shù)據(jù),數(shù)據(jù)流是雙向的,,Ul_L和U2_H既接收數(shù)據(jù)也發(fā)送數(shù)據(jù),。這種方式軟件編程比較復(fù)雜,特別是雙向傳送數(shù)據(jù)采用查詢方式時(shí),。單片機(jī)之間的查詢信號(hào)就更加復(fù)雜了?,F(xiàn)以雙向查詢方式為例,兩單片機(jī)之間數(shù)據(jù)傳送的流程圖如圖4所示,,U2_H的流程與U1_L一樣,。其中U1_L向U2_H傳送數(shù)據(jù)時(shí)的查詢信號(hào)與單向傳送的定義一樣,U2_H的P2.3作為向U1_L傳送新數(shù)據(jù)的查詢信號(hào)(U1_L的P2.4),, P2.3=“0”表示有新的數(shù)據(jù),,P2.3=“l”表示沒有新的數(shù)據(jù);Ul_L的P2.3作為接收U2_H數(shù)據(jù)的查詢信號(hào)(U2_H的P2.4),,P2. 3=“O”表示可以接收新的數(shù)據(jù),,P2.3=“1”表示不能接收新的數(shù)據(jù)。如果采用中斷方式,,查詢信號(hào)可以減少,,編程可以簡(jiǎn)化。

 

  

 

  2.3 應(yīng)用時(shí)的注意事項(xiàng)

  兩個(gè)單片機(jī)之間的握手方式如果采用中斷,,由于U2_H向外部發(fā)送數(shù)據(jù)比U1_L接收外部數(shù)據(jù)快,,Ul_L向U2_H傳送數(shù)據(jù)時(shí),無需考慮U2_H的狀態(tài),,而U2_H向U1_L傳送數(shù)據(jù)時(shí),,由于U2_H接收外部數(shù)據(jù)比U1_L向外部發(fā)送數(shù)據(jù)快,U2_H必須查詢Ul_L的狀態(tài),,即U1_L是否處于接收 U2_H數(shù)據(jù)的狀態(tài),,否則,U2_H就不能向Ul_L傳送數(shù)據(jù),。

  若作為RS_485通信接口使用,,只需對(duì)圖2中的電路稍做改動(dòng),增加對(duì)75176芯片的讀寫控制,,同時(shí)兩個(gè)單片機(jī)中與主通信設(shè)備相連的單片機(jī)作為主機(jī),,通過P2口的一位來協(xié)調(diào)兩個(gè)單片機(jī)是接收數(shù)據(jù)還是發(fā)送數(shù)據(jù)。

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

  2.4 實(shí)例及源程序

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

 

  3 結(jié)論

 

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

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。