- 嵌入式 MCGS 串口通信快速入門及編程實例
- 張輝
- 1311字
- 2019-11-15 19:12:00
第4章 萬能通信之自發自收——單機通信
為什么稱之為萬能通信?因為接下來的六章所介紹的內容是靈活運用串口通信函數、采用各種技巧解決“所有”串口通信問題,一旦通過其他方式無法實現用戶設計的功能,都可以利用這幾章介紹的知識予以解決,這種方法是“萬能的”。自發自收是一種不借助任何儀表、不需要任何外部設備就能實現串口通信的方式,解決了用戶沒有下位機就不能編程的難題。很多讀者在初步操作串口時,認為一定要購置硬件設備,實際上是沒有必要的,而且,硬件設備五花八門,學會了一種,還會有千千萬萬種,本章介紹的技術就是打開這“千千萬萬”種鎖的鑰匙。

學習串口通信前,必須首先掌握串口的基本技能和通信技巧,本章采用串口自發自收程序展示通信過程。前幾章的學習了解了標準RS-232串口中9根針的功能及電壓特性,僅第2引腳與第3引腳具有數據通信功能,也就是說,在這兩根引腳上傳輸的是數據,第3引腳向外送數據,第2引腳從外面接數據,可是這數據送給“誰”了呢?又從“誰”那接收了呢?顯然,這里的“誰”就是外部的設備,包括智能儀表、傳感器、控制器等,但是現在沒有這些硬件,怎么辦?有人提出,準備兩臺電腦,由A發給B,再由B發給A,這種方式當然可以,可是成本比購置一個硬件要高得多,除非具有這種條件,否則仍要準備相應的通信電纜,既麻煩,又不經濟。既然串口具有發和收的功能,為什么不可以自己發自己收呢?當然可以,這一大膽的想法就是本章要講的一個技巧,將標準9針串口的第2引腳與第3引腳用金屬(跳線帽、杜邦線、導線、別針、訂書釘等)相連,通過引腳短路便可實現物理上的發-收功能,電壓信號從第3引腳發出,經短路金屬又回到第2引腳,如圖4-1所示,這是實現自發自收的前提。可參考二維碼視頻講解。

圖4-1 DB-9針串口公頭2引腳(接收)與3引腳(發送)短接圖
標準9針串口通過2、3引腳短路連接實現自發自收,其他的串口如何連接呢?對于TTL,其TxD與RxD用3.3 V或5.0 V表示邏輯1,用0.0 V表示邏輯0,將TxD與RxD短路即可;如果是簡化的RS-232,由于只有三個引腳,即TxD、RxD和GND,與TTL一樣,只要將TxD與RxD短路便可實現自發自收功能,雖然其表示邏輯1和邏輯0的電平與TTL正好相反,并且電壓范圍較高,但由于是自發自收,并不涉及邏輯和電平轉換,因此可以直接使用;RS-485無法實現自發自收功能,這一點大家一定要注意,因為RS-485是通過A+與B-的電壓差發送信號的,也就是差分驅動,需要兩條線路共同完成一次信號傳輸,所以RS-485不具備這一功能。

但是,對于大部分的用戶而言,仍然存在一個問題,因為大家都使用筆記本電腦,在筆記本電腦上沒有標準9針串口,只有USB接口,必須通過USB轉TTL、USB轉RS-232模塊生成串口。這種轉換器在市場上很多,最好購置舊一些的芯片,比如PL2303芯片,可以即插即用;如果采用新的芯片,如CP210x,在很多機器上無法自動識別和安裝,對于一般用戶進行手動安裝又有些困難。因此,建議初學者不采用。USB轉RS-232模塊又分為兩種,一種是轉為標準9針串口,這種轉換模塊與臺式機上的功能一致,如果采用第1、4、6、7、8、9等控制引腳作為輸入輸出,必須購置這類轉換模塊;另一種是只轉為簡化的RS-232,具有TxD、RxD和GND三個引腳,僅能用于數據通信,而沒有輸入輸出控制功能。可參考二維碼視頻講解。