漫談傳輸介面-UART


前言

傳輸介面,小至IC中的資料傳輸路徑,大至個人電腦的網路傳輸、擴充插槽,各種傳輸介面有著不同的溝通協定,若是對各種傳輸介面有基本認識,在撰寫程式來控制介面,如Arduino練習,甚至要設計硬體電路,如FPGA練習,都能更容易上手,以下文章只是要讓讀者有個基本認識,用字遣詞沒有足夠嚴謹,請見諒。

要認識一個傳輸介面,先要搞清楚

  1. 主動端(master)的輸入(input)、輸出(output)訊號,和被動端(slave)的輸入、輸出訊號有哪些?
  2. 使用的頻率(clock frequency)多少? 主動端和被動端的clock如何同步?
  3. 溝通機制(handshake protocol)為何?

掌握了上面資訊就能輕鬆對一個傳輸介面有個基本認識


UART簡介

UART(Universal Asynchronous Receiver/Transmitter)是一個最簡單的傳輸介面,最基本的狀況只需要一根訊號線就能建立傳輸,以上面的要項來解說的話:

  1. master有個1 bit output,TX,對應的是slave有個1 bit input,RX。
  2. 使用的頻率在UART稱為鮑率(BAUD rate),可能為9600Hz、19200Hz、 38400Hz、115200Hz...,並沒有同步clock的機制,而是在master和slave約定好使用相同的頻率,舉個例子,如果約好鮑率9600Hz,則master會使用9600Hz的頻率發送TX訊號,slave則預期要收到9600Hz的訊號,便使用4倍以上(38400Hz以上)的頻率去監測RX訊號變化。
  3. 溝通機制因為訊號線只有1 bit,所以都是看這1 bit訊號線的變化
    平時IDLE狀態都維持在訊號為1的狀態

    傳輸時每次傳送8 bits,先有1個clock cycle的0,稱為start bit,再來是8 bits data每bit各佔1 clock cycle,最後再1 clock cycle的1,稱為end bit。

    也許可以看到其他的變形,像是start bit或end bit不只1 cycle,或是傳輸不只8 bits,但只要理解最基本的UART handshake,變形也很容易理解。

今天就先簡單介紹UART,接下來明天要介紹同樣是serial bus的SPI和I2C。

#UART







你可能感興趣的文章

Node.js & RESTful API - Wiki Project

Node.js & RESTful API - Wiki Project

Python Monkey Patch 入門教學

Python Monkey Patch 入門教學

React 我不知道的事 & 下半年期許

React 我不知道的事 & 下半年期許






留言討論