Skip to content

UART API

Tom Lin edited this page Feb 13, 2020 · 2 revisions

class UART

UART 英文與中文全名為 Universal Asynchronous Receiver/Trasnsmitter / 通用非 同步收發傳輸器 UART是通用異步收發器其包RS232、RS449、RS422和RS485等埠標準規範。

所謂同步,在介面中都依據同一條時脈線路的信號動作如I2C、SPI ,所謂的非同步在資料傳輸線路有自己的 傳輸步調,不依靠獨立的時脈線路,通常是將時脈信號藏著封包資料,以規律性的每隔一段時間傳輸資訊。 所以在UART介面中是由兩條線所組成,分為 RXTX ,其通訊單位為一個字元,它可以8或9 位元寬。 UART_timing_diagram svg

位元可以是7、8或9長度。Parity可以設為 NoneEven (0),ODD (1),Stop可以1或2 位元。當 Parity = None ,只可以支援8或9數元長度,當 Parity 啟動用 EvenODD 校驗後,僅支援7或8數元長度。

Constructors

class machine.UART(id,..)

在創建UART物件給定id值,取決於硬體規劃因此在MT7697提所提供兩個組UART埠為 UART0UART1 ,因而在id設定為0或1,主要 UART0 一開始被UART USB所占用,用於 REPL 訊息傳送。

UART 實際接腳為:

  • id = 0:UART0_RX = Pin0, UART0_TX = Pin1。
  • id = 1:UART1_RX = Pin7, UART1_TX = Pin6。

Methods

UART.init(baudrate=9600, bits=8, parity=None, stop=1, *, ...)

初始UART參數度設定

  • baudrate:是鮑率設定,可設定值110,300, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400, 460800, 921600,預設值為9600 。
  • bits:為每個字元數為5,6,7,8,預設值為8。
  • parity:可以設定值為 None, 0(Even)或1(odd),預設值為 None
  • stop:stop的位元數可以為1或2,預設值為1。
  • flow:設為流量控制為RTS/CTS用於RS232用半雙工模式方向切換,MT7697無提供初值為 false
  • timeout:等待第一個字節時間(以毫秒為單位)。
  • rxbuf:指是RX緩衝區字節長度。
  • read_buf_len:是讀取緩衝區的字節長度(關閉為0)。
UART.deinit()

關閉UART匯流排

UART.any()

他回傳一個整數數值,該數值為計數可以無阻塞讀取的字節。如果沒有可以讀取字節,將會回傳為 0 有多個字節可讀取將回傳正數。

UART.read([nbytes])

讀字節, 如果快達到超時,將回傳值為讀入的字節。如果回傳值為 None 為超時無讀入任何字節。

  • nbytes:最多讀取那麼多字節,否則讀取盡可能多的數據。
UART.readchar()

接收1個字節,其回傳值為單1字節,當逾時回傳為-1。

UART.readline()

讀取字節直到換行字節則立即回傳,如果逾時則將回傳可己讀取到所有字節數資料。逾時回傳值為None,表示無讀 取到任何值。

UART.readinto(buf[, nbytes])
  • buf:使用都宣告一個bytes array,當讀取bytes存入buf。
  • nbytes:如果指定nbytes,為最多讀取字節。如果沒有為讀取len(buf)個字節。

回傳值:讀取並存儲到buf中的字節數,或在超時為None。

UART.write(buf)

將設定 bytesbuf 寫入UART匯流排

UART.writechar(char)

在匯流排上寫入字節,char是為ASCII整數

Example

from machine import UART
uart = UART(1, 9600)
uart.read(10)
uart.read()
uart.readline()
buf = bytearray(10)
uart.readinto(buf)
uart.write('abc')
uart.readchar()
uart.writechar(62)

Clone this wiki locally