序列程式設計/MAX232 驅動接收器
序列程式設計: 介紹和 OSI 網路模型 -- RS-232 接線和連線 -- 典型 RS232 硬體配置 -- 8250 UART -- DOS -- MAX232 驅動/接收器系列 -- Windows 中的 TAPI 通訊 -- Linux 和 Unix -- Java -- Hayes 相容調變解調器和 AT 命令 -- 通用序列匯流排 (USB) -- 形成資料包 -- 糾錯方法 -- 雙向通訊 -- 資料包恢復方法 -- 序列資料網路 -- 實際應用開發 -- 序列連線上的 IP

此模組主要針對那些用 RS-232 介面構建自己電子裝置的人。帶有 RS-232 介面的現成計算機已經包含了必要的電子元件,因此無需新增此處所述的電路。
序列 RS-232 (V.24) 通訊使用電壓(-15 V ... -3 V 用於傳輸二進位制 '1',+3 V ... +15 V 用於傳輸二進位制 '0'),這些電壓與當今的計算機邏輯電壓不相容。另一方面,經典的 TTL 計算機邏輯工作在 0 V ... +5 V 之間(大約 0 V ... +0.8 V 被稱為二進位制 '0' 的低電平,+2 V ... +5 V 稱為二進位制 '1' 的高電平)。現代低功耗邏輯工作在 0 V ... +3.3 V 甚至更低的範圍內。
因此,最大 RS-232 訊號電平對於當今的計算機邏輯電子器件來說太高了,而計算機邏輯根本無法產生負 RS-232 電壓。因此,要接收來自 RS-232 介面的序列資料,必須降低電壓,並將0 和1 電壓電平反轉。在另一個方向(將資料從某個邏輯傳送到 RS-232)上,必須“提升”低邏輯電壓,並同時產生負電壓。
RS-232 TTL Logic ----------------------------------------------- -15 V ... -3 V <-> +2 V ... +5 V <-> 1 (idle state) +3 V ... +15 V <-> 0 V ... +0.8 V <-> 0 (start bit)
所有這些都可以透過傳統的類比電子器件實現,例如特定的電源和一對 電晶體,或者曾經很流行的 MC1488(發射器)和 MC1489(接收器)積體電路。然而,十多年來,在業餘電子領域,使用 MAX232 系列的積體電路(通常是 MAX232A 或其克隆)進行必要的訊號電平轉換已經成為標準做法。事實上,很難在業餘電子領域找到沒有 MAX232A 或其克隆的 RS-232 電路。
我們將在本書的後面部分更詳細地討論 訊號位。

MAX232 是 Maxim 推出的第一個積體電路,它在一個封裝中包含了必要的驅動器(兩個)和接收器(也是兩個),用於將 RS-232 訊號電平適配到 TTL 邏輯。它之所以流行,是因為它只需要一個電壓 (+5 V),並在內部產生必要的 RS-232 電壓電平(約 -10 V 和 +10 V)。這極大地簡化了電路設計。電路設計師不再需要設計和製造具有三個電壓(例如 -12 V、+5 V 和 +12 V)的電源,而只需提供一個 +5 V 電源,例如透過使用簡單的 78x05 電壓調節器。
MAX232 有一個繼任者,MAX232A。這兩個積體電路幾乎完全相同,然而,MAX232A 比原始的 MAX232 使用得更廣泛(也更容易獲得),並且 MAX232A 只需要外部電容是原始 MAX232 所需電容的十分之一。
應該注意的是,MAX232(A) 只是一個驅動器/接收器。它不會生成具有正確時序的必要的 RS-232 標記和空格序列,它不會解碼 RS-232 訊號,它不會提供序列/並行轉換。它只做訊號電平轉換。生成具有正確時序的序列資料和解碼序列資料必須由額外的電路完成,例如由 16550 UART 或越來越流行的小型微控制器(例如 Atmel AVR、Microchip PIC)完成。
MAX232 和 MAX232A 曾經是相當昂貴的積體電路,但今天已經很便宜了。許多公司現在生產克隆產品(例如 Sipex)也起到了一定的作用。這些克隆有時需要不同的外部電路,例如外部電容的容量會有所不同。建議檢視特定製造商的積體電路資料手冊,而不是依賴 Maxim 的原始資料手冊。
原始製造商(以及現在一些克隆製造商)提供了一系列類似的積體電路,它們具有不同的接收器和驅動器數量、電壓、內建或外部電容等。例如,MAX232 和 MAX232A 需要外部電容用於內部電壓倍增器,而 MAX233 則內建了這些電容。MAX233 在電子商店中的價格也比 MAX232A 高出三到十倍,因為它的內部電容。MAX233 也比常見的 MAX232A 更難獲得。
如今,MAX3232 這種類似的積體電路可用於低功耗 3 V 邏輯。
- MAX232(A) DIP 封裝
| 編號 | 名稱 | 用途 | 訊號電壓 | MAX232 電容值 | MAX232A 電容值 |
| 1 | C1+ | 電容 C1 的 + 端聯結器 | 電容應至少承受 16 V | 1 µF | 100 nF |
| 2 | V+ | 電壓倍增器的輸出 | +10 V,電容應至少承受 16 V | 1 µF 至 VCC | 100 nF 至 VCC |
| 3 | C1- | 電容 C1 的 - 端聯結器 | 電容應至少承受 16 V | 1 µF | 100 nF |
| 4 | C2+ | 電容 C2 的 + 端聯結器 | 電容應至少承受 16 V | 1 µF | 100 nF |
| 5 | C2- | 電容 C2 的 - 端聯結器 | 電容應至少承受 16 V | 1 µF | 100 nF |
| 6 | V- | 電壓倍增器/反相器的輸出 | -10 V,電容應至少承受 16 V | 1 µF 至 GND | 100 nF 至 GND |
| 7 | T2out | 驅動器 2 輸出 | RS-232 | ||
| 8 | R2in | 接收器 2 輸入 | RS-232 | ||
| 9 | R2out | 接收器 2 輸出 | TTL | ||
| 10 | T2in | 驅動器 2 輸入 | TTL | ||
| 11 | T1in | 驅動器 1 輸入 | TTL | ||
| 12 | R1out | 接收器 1 輸出 | TTL | ||
| 13 | R1in | 接收器 1 輸入 | RS-232 | ||
| 14 | T1out | 驅動器 1 輸出 | RS-232 | ||
| 15 | GND | 接地 | 0 V | 1 µF 至 VCC | 100 nF 至 VCC |
| 16 | VCC | 電源 | +5 V | 見上文 | 見上文 |
V+(2) 也透過一個電容 (C3) 連線到 VCC。V-(6) 透過一個電容 (C4) 連線到 GND。GND(15) 和 VCC(16) 也透過一個電容 (C5) 連線,儘可能靠近引腳。

MAX232(A) 具有兩個接收器(將 RS-232 轉換為 TTL 電壓電平)和兩個驅動器(將 TTL 邏輯轉換為 RS-232 電壓電平)。這意味著每個方向只能轉換兩個 RS-232 訊號。舊的 MC1488/1489 組合提供了四個驅動器和接收器。
通常使用一對 MAX232 的傳送器/接收器來實現
- TX 和 RX
另一個用於
- CTS 和 RTS。
MAX232 中沒有足夠的傳送器/接收器來連線 DTR、DSR 和 DCD 訊號。通常在例如與 PC 的序列介面通訊時可以省略這些訊號。如果 DTE 確實需要這些訊號,則需要第二個 MAX232,或者可以使用 MAX232 家族中的其他 IC(如果在消費電子商店中能找到)。下面還給出了 DTR/DSR 的另一種替代方案。
Maxim 的資料手冊詳細解釋了 MAX232 家族,包括引腳配置以及如何將此類 IC 連線到外部電路。此資訊可以在自己的設計中按原樣使用,以獲得可工作的 RS-232 介面。Maxim 的資料只缺少一個關鍵資訊:如何將 RS-232 訊號精確地連線到 IC。因此,這裡有一個可能的示例
| MAX232 引腳編號 | MAX232 引腳名稱 | 訊號 | 電壓 | DE9 引腳 |
| 7 | T2out | RTS | RS-232 | 8 |
| 8 | R2in | CTS | RS-232 | 7 |
| 9 | R2out | CTS | TTL | n/a |
| 10 | T2in | RTS | TTL | n/a |
| 11 | T1in | TX | TTL | n/a |
| 12 | R1out | RX | TTL | n/a |
| 13 | R1in | TX | RS-232 | 3 |
| 14 | T1out | RX | RS-232 | 2 |
| 15 | GND | GND | 0 | 5 |
此外,可以將 DTR(DE9 引腳 4)直接連線到 DSR(DE9 引腳 6),而無需經過任何電路。這將自動(無腦)DSR 確認傳入的 DTR 訊號。
有時,MAX232 的引腳 6 會硬連線到 DCD(DE9 引腳 1)。不建議這樣做。引腳 6 是用於 -10 V 電壓的電壓泵和反相器的原始輸出。從引腳中汲取電流會導致電壓快速擊穿,並導致兩個 RS-232 傳送器的輸出電壓擊穿。最好使用不關心 DCD 的軟體,但僅透過 CTS/RTS 進行硬體握手。
該電路透過將五個電容器連線到 IC 來完成。MAX232 需要 1.0 µF 電容器,MAX232A 需要 0.1 µF 電容器。MAX232 克隆顯示出類似的差異。建議查閱相應的資料手冊。應使用至少 16 V 的電容器型別。如果使用電解電容器或鉭電容器,則必須注意極性。下表中列出的第一個引腳始終是電容器的正極應連線到的位置。
| 電容器 | + 引腳 | - 引腳 | 備註 |
| C1 | 1 | 3 | |
| C2 | 4 | 5 | |
| C3 | 2 | 16 | |
| C4 | GND | 6 | 這看起來不直觀,但由於引腳 6 在 -10 V 上,GND 獲取 + 聯結器,而不是 - |
| C5 | 16 | GND |
5 V 電源連線到
- +5 V:引腳 16
- GND:引腳 15
替代方案
[edit | edit source]資料線纜
[edit | edit source]隨著行動電話的興起,用於這些手機的所謂的資料線也變得流行起來。這些是將手機連線到計算機序列介面的線纜[1]。有趣的是,現代行動電話在資料匯流排上使用 3.3 V 邏輯,而舊款手機使用 5 V 邏輯。因此,這些資料線必須將手機邏輯電壓電平轉換為 RS232 電壓電平,反之亦然。
無名資料線已經變得相當便宜(與原始手機品牌資料線相比)。具有電壓轉換器的廉價線纜可以用作自制 MAX232 基電路的替代方案。優點是線纜佔用空間更小(轉換器通常位於 RS232 插頭內部)。這種線纜還可以節省焊接電路板的麻煩。另一個優點是,它也可能是這種資料線的缺點,即它們通常從 RS232 聯結器獲取電源。這節省了外部電源,但也可能導致問題,因為 RS232 介面並非設計用來為某些邏輯供電,並且 DTE 可能無法提供足夠的電源[2]。另一個缺點是,許多這種線纜只支援 RX 和 TX(一個接收器,一個傳送器),而不是像 MAX232 那樣有兩個傳送器/接收器。因此,不可能進行硬體握手。最後,在使用這種線纜時,應確保它們轉換到所需的電壓(3.3 V 或 5 V)。
(濫)用 USB <-> RS-232 轉換器
[edit | edit source]USB 轉序列介面線纜通常有兩個元件:一個輸出序列資料的 USB 收發器;以及一個電壓轉換器,用於生成符合標準的 RS-232 電壓。通常可以丟棄(忽略、拆焊、切除)這些線纜的 USB 部分,連線外部 5 V 電源(或濫用 RS-232 介面)來代替來自 USB 匯流排的電源,並僅使用 RS-232 電平轉換器。所有這些可能與使用 MAX232A 一樣多,儘管您可以免費獲得一個 RS-232 聯結器。
如果您考慮使用 USB 線纜,那麼也值得考慮直接使用 USB,而不是 RS-232。許多 USB 收發器晶片可以直接整合到電路中,從而消除了對電壓轉換元件的需求。諸如 FTDI FT232BM 之類的部件甚至具有一個輸入,允許設計人員選擇 5 V 或 3.3 V 輸出電平。大多數這種 USB 收發器晶片僅作為表面貼裝器件提供。但一些供應商提供 DIP 尺寸的預組裝模組,通常價格具有競爭力,並且通常帶有免費或廉價的驅動程式或驅動程式開發環境。
有關 USB 硬體、與 USB 裝置介面以及 USB 裝置程式設計的更多資訊,請參閱 Serial Programming:Universal Serial Bus。
MAX232N
[edit | edit source]德州儀器 MAX232(不是 A) 的第二來源。N 表示封裝(塑膠 DIP),而不是任何特殊的電氣特性。這是一個非 A MAX232,因此它需要至少 1µF 電容器。有時可以找到它非常便宜。TI 還提供 MAX3232 和一些其他 RS-232 傳送器/接收器,例如 MC148x。
線性技術 LT1181A
[edit | edit source]來自線性技術的 LT1181A 與 MAX232A 非常相似。它具有完全相同的引腳佈局,也使用 0.1µF 電容器,通常可以替代 MAX232A。然而,對於業餘愛好者來說,通常更難獲得這種 IC,而且它們往往比原裝 Maxim MAX232A 貴一些。
Intersil HIN202
[edit | edit source]Intersil HIN202 是另一個與 MAX232A 非常相似的 IC。它也具有相同的引腳佈局(DIL 封裝),使用 0.1 µF 電容器,可以替代 MAX232A。HIN202 尤其適合需要更多 I/O 線(四對)的情況,因為製造商規定兩個 HIN202 可以共享一個 V+ 和一個 V- 電容器。因此,生成的電路可以節省兩個電容器。
MC1488 和 MC1489
[edit | edit source]MC1488/MC1489 IC 已經提到過。然而,它們現在並不是 MAX232 的真正替代品。這些 IC 的組合具有兩倍的傳送器/接收器,但 MC1488 傳送器需要 +12 V、-12 V 電源,而 MC1489 接收器需要 +5 V 電源。這意味著需要三個電源,而 MAX232 只需要一個。除非電路中已經存在所需的 ±12 V 電源線,否則建議使用兩個 MAX232 或一個 MAX238。
外部連結
[edit | edit source]- MAX232 (MAX220 到 MAX249) 產品網頁 - Maxim - (5 伏)
- MAX3232 (MAX3222 到 MAX3241) 產品網頁 - Maxim - (3.3 或 5 伏)
- MAX3232E (MAX3222E 到 MAX3246E) 產品網頁 - Maxim - (3.3 或 5 伏)
- MC1488 產品網頁 - Texas Instruments - (+12 和 -12 伏)
- MC1489 產品網頁 - Texas Instruments - (5 伏)
- MAX232:構造、操作、型別和應用
序列程式設計: 介紹和 OSI 網路模型 -- RS-232 接線和連線 -- 典型 RS232 硬體配置 -- 8250 UART -- DOS -- MAX232 驅動/接收器系列 -- Windows 中的 TAPI 通訊 -- Linux 和 Unix -- Java -- Hayes 相容調變解調器和 AT 命令 -- 通用序列匯流排 (USB) -- 形成資料包 -- 糾錯方法 -- 雙向通訊 -- 資料包恢復方法 -- 序列資料網路 -- 實際應用開發 -- 序列連線上的 IP