文章目錄
K210實戰三-串口收發實驗
一、硬件平台
MAIX Bit開發板
二、軟件平台
MAIXPY IDE
三、程序編寫
K210的uart 模塊主要用於驅動開發板上的異步串口,可以自由對 uart 進行配置。k210 一共有3個 uart,每個 uart 可以進行自由的引腳映射。
3.1 引腳映射 fm.register()
在使用 uart 前,我們需要使用 fm 來對芯片引腳進行映射和管理。如下所示,將 PIN10 設置為 uart2 的發送引腳,PIN11 設置為 uart2 的接收引腳
fm.register(board_info.PIN10,fm.fpioa.UART2_TX)
fm.register(board_info.PIN11,fm.fpioa.UART2_RX)
3.2 初始化函數 machine.UART()
uart = machine.UART(uart,baudrate,bits,parity,stop,timeout, read_buf_len)
通過指定的參數新建一個 UART 對象
參數
uart
UART 號,使用指定的 UART,可以通過machine.UART.
按tab鍵來補全baudrate
: UART 波特率bits
: UART 數據寬度,支持5/6/7/8
(默認的 REPL 使用的串口(UARTHS)只支持 8 位模式), 默認8
parity
: 奇偶校驗位,支持None
,machine.UART.PARITY_ODD
,machine.UART.PARITY_EVEN
(默認的 REPL 使用的串口(UARTHS)只支持 None), 默認None
stop
: 停止位, 支持1
,1.5
,2
, 默認1
timeout
: 串口接收超時時間read_buf_len
: 串口接收緩沖,串口通過中斷來接收數據,如果緩沖滿了,將自動停止數據接收
返回值
- UART對象
3.3 調用API函數
3.3.1 init
用於初始化 uart,一般在構造對象時已經初始化,這里用在重新初始化 uart
uart.init(baudrate,bits,parity,stop,timeout, read_buf_len)
參數
同構造函數,但不需要第一個UART號
3.3.2 read
用於讀取串口緩沖中的數據
uart.read(num)
參數
num
: 讀取字節的數量,一般填入緩沖大小,如果緩沖中數據的數量沒有num
大,那么將只返回緩沖中剩余的數據
返回值
bytes
: 類型的數據
3.3.3 readline
用於讀取串口緩沖數據的一行
uart.readline(num)
num
: 讀取行的數量
返回值
*bytes
類型的數據
3.3.4 write
用於使用串口發送數據
uart.write(buf)
參數
buf
: 需要發送到數據
返回值
- 寫入的數據量
3.3.5 deinit
注銷 UART 硬件,釋放占用的資源
uart.deinit()
3.3.6 repl_uart()
獲取用於 REPL 的串口對象
返回值:
用於 REPL 的串口對象, 默認初始化位 115200 8 N 1
3.4 程序編寫
打開IDE編譯環境新建文件,開發板與電腦連接
點擊IDE右下角連接標志,選擇COM口連接MAIX BIT
連接后我們開始編寫程序,程序基於MicroPython來編寫,需要一定的Python基礎,語法簡單
#調用需要使用到的庫文件
from machine import UART
from Maix import GPIO
from fpioa_manager import fm
import utime
#映射UART2的兩個引腳
fm.register(GPIO.GPIOHS9,fm.fpioa.UART2_TX)
fm.register(GPIO.GPIOHS10,fm.fpioa.UART2_RX)
#初始化串口,返回調用句柄
uart_A = UART(UART.UART2, 115200, 8, None, 1, timeout=1000, read_buf_len=4096)
#定義一個要發送的字符串
write_str = 'get dat\r\n'
#主循環
while(True):
read_str = uart_A.read(10)
print("%s",read_str)
utime.sleep_ms(100)
#判斷接受到后返回信息
if read_str != None:
uart_A.write(write_str)
utime.sleep_ms(100)
四、程序下載
點擊左下角測試運行代碼,觀察現象
現象沒問題點擊工具-選擇保存腳本-等待下載完成,重新上電進行測試
五、實驗現象
連接USB轉TTL與K210的P9和P10 IO口
串口發送數據給K210后,打印在串行終端,K210返回指定的信息