K210實戰三-串口收發實驗


K210實戰三-串口收發實驗

一、硬件平台

MAIX Bit開發板

在這里插入圖片描述

二、軟件平台

MAIXPY IDE

20210211161417

三、程序編寫

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: 停止位, 支持 11.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編譯環境新建文件,開發板與電腦連接

20210212114301

點擊IDE右下角連接標志,選擇COM口連接MAIX BIT

20210212114420

連接后我們開始編寫程序,程序基於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)

四、程序下載

點擊左下角測試運行代碼,觀察現象

20210523151218

現象沒問題點擊工具-選擇保存腳本-等待下載完成,重新上電進行測試

20210523151256

五、實驗現象

連接USB轉TTL與K210的P9和P10 IO口

在這里插入圖片描述

串口發送數據給K210后,打印在串行終端,K210返回指定的信息

在這里插入圖片描述


免責聲明!

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



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