Pyboard基本功能---UART


UART

UART(通用異步收發傳輸器)的簡稱,在單片機和嵌入式系統中,串口(UART)一直都是非常重要的外設。雖然串口的速度並不快,但是因為它使用簡單(串口可能是兩個芯片之間傳輸數據最簡單的方式),占用軟件和硬件資源少,所以在通信、控制、數據傳輸、仿真調試等許多方面有非常廣泛應用。很多設備或者模塊甚至都會提供專用的串口接口用於通信和控制,如GPRS模塊、藍牙/WiFi透傳模塊等。UART使用一個GPIO做發送,一個GPIO做接收,沒有單獨的時鍾信號。收發雙方需要先約定好相同的波特率、數據位、校驗位、停止位等參數才能正常通信,所以也叫做異步串行總線。

1.獲取UART類的方法

>>> from pyb import UART
>>> help(pyb.UART)
object <class 'UART'> is of type type
  init -- <function>
  deinit -- <function>
  any -- <function>
  read -- <function>
  readline -- <function>
  readinto -- <function>
  write -- <function>
  irq -- <function>
  writechar -- <function>
  readchar -- <function>
  sendbreak -- <function>
  RTS -- 256
  CTS -- 512
  IRQ_RXIDLE -- 16
>>>

 2. 在MicroPython中,操作串口和使用GPIO一樣簡單。我們先看看串口的常用函數,從這里就可以看出串口的基本使用方法。

串口的基本使用方式是,首先定義使用的串口,再設置串口參數(最主要就是設置波特率),然后通過 write()函數發送緩沖區或者字符串。或者用 any()函數判斷是否接收到數據,再用read()函數讀取數據。

UART的函數如下:

(1)class pyb.UART(bus,...)

bus:1-6,或者‘XA’,‘XB’,‘YA’,‘YB’。

在PYB V10上,串口對應的GPIO是:

 

(2)uart.init(baudrate,bits=8,parity=None,stop=1,timeout=1000,flow=None,timeout_char=0,read_buf_len=64)

串口初始化。

◆baudrate:波特率

◆bits:數據位,可以是7/8/9

◆parity:奇偶校驗位,可以設置為None,0 (even)或1 (odd),默認無校驗

◆stop:停止位,1/2

◆flow:流量控制,可以是None,UART.RTS,UART.CTS或UART.RTS|UART.CTS,默認None(無流量控制)

◆timeout:讀取一個字節的超時時間(ms)

◆timeout_char:讀或寫時兩個字節之間的等待時間

◆read_buf_len:讀緩存的長度,0代表禁用緩沖區

(3)uart.deinit()

關閉串口。

(4)uart.any()

返回緩沖區數據個數,大於0代表收到數據。

(5)uart.writechar(char)

寫入一個字節。

(6)uart.read([nbytes])

讀取最多nbytes個字節。如果數據位是9bits,那么一個數據占用兩個字節,並且nbytes必須是偶數。

(7)uart.readall()

讀取所有數據。

(8)uart.readchar()

讀取一個字節。

(9)uart.readinto(buf[,nbytes])

buf:數據緩沖區;

nbytes:最大讀取數量。

(10)uart.readline()

讀取一行。

(11)uart.write(buf)

寫入緩沖區。在9bits模式下,兩個字節算一個數據。

(12)uart.sendbreak()

往總線上發送停止狀態,拉低總線13bits時間。

 注:

當設置波特率時,如果波特率的誤差超過5%,將引起一個異常。

當無奇偶校驗時,數據位可以設置為8或9位;而使用奇偶校驗時,數據位只能設置成7或8位。

在9位數據位模式下,無論讀或寫,一個數據都占用2個字節。

目前在MicroPython中,串口還不支持回調函數(中斷),只能通過查詢的方式(any()函數)來判斷是否收到了數據。考慮到串口通信的速度不是太快,在大部分情況下這種方式是能夠滿足性能上的要求的。

在PYB V10上,只有串口2和3支持流量控制功能。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM