V831基础-UART

V831基础-串口通讯

UART是Universal Asynchronous Receiver/Transmitter(通用异步收发传输器)的简称,在单片机和嵌入式系统中,串口(UART)一直都 是非常重要的外设。虽然串口的速度并不快,但是因为它使用简单(串口可能是两个芯片之间传输数据最简单的方式),占用软件和硬件资源 少,所以在通信、控制、数据传输、仿真调试等许多方面有非常广泛应用。

测试镜像:v831-m2dock-maixpy3-0.4.0-20220114.img
测试所用maixpy3版本:0.4.0


UART

在 Linux 系统中,串口是以设备的形式存在(/dev/ttyS*),所使用的方式和原来的单片机方式有所不同。这是系统标准的 UART 通讯,和 Linux 系统中的串口操作相似。

对于 MaixII-Dock(v831),不要使用 UART-0 通道来进行串口通讯。这个串口是直连芯片,会有一些其他数据吞吐

定义UART

import serial
ser = serial.Serial("/dev/ttyS1",115200)    # 连接串口
print('serial test start ...')              
ser.write(b"Hello Wrold !!!\n")    #写

serial.Serial属性说明
__init__ ( port=None , baudrate=9600 , bytesize=EIGHTBITS , parity=PARITY_NONE , stopbits=STOPBITS_ONE , timeout=None , xonxoff=False , rtscts=False , write_timeout=None , dsrdtr=False , inter_byte_timeout=None)

看加粗的地方就行

名称 含义
port 读或写端口(设备名称)取决于操作系统。例如 GNU/Linux 上的/dev/ttyUSB0或 Windows 上的COM3
baudrate 波特率
bytesize 数据位数
parity 奇偶校验,PARITY_NONE:无校验,PARITY_EVEN:偶校验,PARITY_ODD:奇校验
stopbits 停止位
timeout 读超时设置
writeTimeout 写超时设置
xonxoff 软件流控
rtscts 硬件流控
dsrdtr 硬件流控
interCharTimeout 字符间隔超时

读取

名称 含义
readline() 读取一行数据,以’\n’结束,没有‘\n’就会一直等待,堵塞。
read() 读取一个字节数据
read(10) 读取10个字节,如果没有设置timeout,一直等到读取完毕。

写入

名称 含义
write() 只能写字符

发送16进制字符时需要转化一下
如命令: 56 ,发送指令如下:
my_serial.write(’\x56’)

例程

主控板:V831

不要看这张图,这张图串口1标识反了!!!
请添加图片描述
看下面说明才对

UART-1 TX (PG6)和 UART-1 RX (PG7) 

将 MaixII-Dock 上 UART-1 TX 和 UART-1 RX 短接即可进行串口通讯测试
在这里插入图片描述
例程:自测

注意:此代码需要在root路径下使用

import serial
#串口1 波特率9600    
ser = serial.Serial("/dev/ttyS1",9600,timeout=1000) 

print('serial test start ...')
for i in range(3):
  ser.write(b"xianyu !!!\n")      # 写
  tmp = ser.readline()            # 读
  print(tmp)                      # 打印

效果

root@sipeed:~# python main.py
serial test start ...
b'xianyu !!!\n'
b'xianyu !!!\n'
b'xianyu !!!\n'

猜你喜欢

转载自blog.csdn.net/weixin_45020839/article/details/123128202
今日推荐