USART亦可模擬RS-232通訊。RS-232原本的設計用意,是讓電腦能對數據機、印表機、資料儲存裝置等電腦周邊設備做資料交換。但是RS-232的缺點較多(接孔過大、設備能源消耗太快、資料傳輸速率低),目前的電腦漸漸都淘汰掉這種接孔,並用USB-RS232轉換器做為替代。現今RS232介面則廣泛使用於工業設備、科學儀器及網路設備。
USART使用modem modes時,會變成雙線半雙工通訊(UART)。通訊流控制則由RTS-CTS負責,也因此同時間點只能有一方傳送資料。
利用nCTS跟nRTS控制TX、RX是否再傳送或接收data。 可個別設定USART_CR3的RTSE以及CTSE為1,藉此允許RTS或CTS flow control。
如果開啟RTS flow
control(要把RTSE設為1),nRTS會被拉至低電位,直到USART接收器準備好要接收下一筆資料才會拉高。如果接收器的暫存器滿了,會先把nRTS拉至高電位,告知另外一端的傳送器在傳完這個資料frame之後,應該要停止傳送資料。
如果開啟CTS flow
control(要把CTSE設為1),在傳送器要傳送下一筆資料frame之前,會先去檢查nCTS是否有值輸入。如果nCTS被拉至低電位,那麼下一筆資料會立即被送出(假設資料已經先在Transmit
Data
Register準備好了,也可說成TXE=0),否則不會進行傳送。如果在傳送資料的過程中,nCTS被拉至高電位,那麼會先把剩下該傳的資料先傳完,再停止傳送。
如果CTSE被設定為1,那麼在nCTS有值輸入時,CTSIF狀態會自動地被硬體設立,表示該時間點接收器是否已準備好下一次的通訊。若有開啟USART_CR3的CTSIE(=1),則會產生interrupt。
另外,在開啟CTS flow的情況下,傳送器在送出break時不會去檢查nCTS的狀態。
供參考