一、背景
一直搞不清楚概念人又疏懶,再遇的到時候心里總是慌慌的,這好嗎?這不好。
六合一多功能USB轉UART串口模塊CP2102 usb
TTL
485
232
互轉自恢復
正面:
背面:
模式:
引腳說明:
二、習得
常見的微控制器中,都有了內置的UART(Universally Asynchronous Receiver/Transmitter)。
UART可以用來已串行方式收發數據。
UART是,以固定的某個速率(1200bps,9600bps,115200bps等),一次只能只傳輸一個bit比特位(所以叫做串行傳輸)
這種串行通信的方法,有時候也被叫做TTL(Transistor-Transistor Logic)Serial。
這種串行通信,在TTL級別上來說,對應的物理電平,始終是在0V和Vcc之間,其中常見的Vcc是5V或3.3V。
其中:
邏輯高電平’1’Vcc
邏輯低電平’0’0V
與此相對應的是:
你的(台式機,筆記本等)電腦中的串口,是和RS232(通信標准)所兼容的(所一致的) => 不是和TTL的標准所一致的
RS232的標准中,和你的微控制器中的串行信號所一樣的,有:
也是:一次只傳輸一個bit比特位 -> 表示是serial
也是:也是以某個固定的速率去傳輸的->baudrate
也是:帶或不帶,parity極性->即校驗位
也是:帶或不帶,停止位stop bit(s)
RS232和TTL唯一不同在於硬件:電平表示的邏輯含義不同(相反):
RS232和TTL,唯一的,最根本的不同在於:
** 硬件(機制)不同:**
(1)TTL
邏輯高電平’
1
‘Vcc==
3.3V或5V
邏輯低電平’
0
‘0V==
0V
(3)RS232:
邏輯高電平’
0
‘負電壓== -3V~-15V==常為:
-13V
邏輯低電平’
1
‘正電壓== 3V~15V==常為:
13V
三、為何RS232中要(很奇怪的)用負電壓表示邏輯高電平呢?
按理來說:
TTL用正電壓(3.3V或5V)表示邏輯1,用0電壓表示邏輯0,是相對來說,比較符合人類的邏輯的
但是,為何RS232卻,很奇怪的,用負電壓表示邏輯高電平==1呢?
那是因為:
此設計(用負電壓表示邏輯1,正電壓表示邏輯0)相對來說,更加:
抗(外界的電磁)干擾
抗外界的(電磁信號)噪音干擾
抗(信號的)衰減
使得和同樣的TTL信號相比,RS232信號可以傳輸的更遠
由此使得:
信號傳輸,相對更加穩定和可靠。
四、 RS232和TTL時序圖對比
對於同樣傳輸0b01010101來說,RS232和TTL的時序對比:
五、 RS232和TTL之間的轉換
RS232和TTL之間的轉換,不僅僅是簡單的電平轉換,還要考慮到其他一些因素,比如調節和矯正一些電平(提高或降低對應的電平),確保可能的有害的RS232電壓不會破壞微控制器的串口針腳。
關於如何在RS232和TTL之間轉換,目前已經有很多種解決方案了。
比如:
RS-232 vs. TTL Serial Communication
中的
MAX-232
【參考】
【1】TTL和RS232之間的詳細對比