PYB操作-UART操作

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

開發環境

putty、PYB nano

UART使用

串口的基本使用方式是,首先定義使用的串口,再設置串口參數(最主要就是設置波特率),然後通過 write()函數發送緩衝區或者字符串。或者用 any()函數判斷是否接收到數據,再用read()函數讀取數據。
UART的函數如下:
(1)class pyb.UART(bus,…)
bus:1-6,或者‘XA’,‘XB’,‘YA’,‘YB’。

PYB nano對應串口

The physical pins of the UART busses are:
UART(4) is on XA: (TX, RX) = (X1, X2) = (PA0, PA1)
UART(1) is on XB: (TX, RX) = (X9, X10) = (PB6, PB7)
UART(6) is on YA: (TX, RX) = (Y1, Y2) = (PC6, PC7)
UART(3) is on YB: (TX, RX) = (Y9, Y10) = (PB10, PB11)
UART(2) is on: (TX, RX) = (X3, X4) = (PA2, PA3)

UART函數解釋

class pyb.UART(bus, …)
bus: 1-6,或者‘XA’,‘XB’,‘YA’,‘YB’.
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) or 1 (odd)
stop:停止位,1/2
flow:流控,可以是 None, UART.RTS, UART.CTS or UART.RTS | UART.CTS
timeout:讀取一個字節超時時間(ms)
timeout_char:兩個字節之間超時時間
read_buf_len:讀緩存長度
uart.deinit():關閉串口
uart.any():返回緩衝區數據個數,大於0代表有數據
uart.writechar(char):寫入一個字節
uart.read([nbytes]):讀取最多nbytes個字節。如果數據位是9bit,那麼一個數據佔用兩個字節,並且nbytes必須是偶數
uart.readall():讀取所有數據
uart.readchar():讀取一個字節
uart.readinto(buf[, nbytes])
buf:數據緩衝區
nbytes:最大讀取數量
uart.readline():讀取一行
uart.write(buf):寫入緩衝區。在9bits模式下,兩個字節算一個數據
uart.sendbreak():往總線上發送停止狀態,拉低總線13bit時間

測試發送代碼

from pyb import UART
u1 = UART(2, 9600)#設置波特率和串口號
u1.writechar(97)#發送單個字符a
u1.write('123')#發送字符串

測試接收代碼

from pyb import UART
u1 = UART(2, 9600)#設置波特率和串口號
u1.writechar(97)#發送單個字符a
u1.write('123')#發送字符串
while(1):
	buf=u1.readchar()#從緩衝區讀取一個字符
	if(buf==97):
		print("pass")
發佈了163 篇原創文章 · 獲贊 133 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章