class UART - 串口通信
该类提供uart串口数据传输功能。
构造函数
machine.UART
class machine.UART(UART.UARTn, baudrate, databits, parity, stopbits, flowctl)
参数描述:
-
UARTn
- UART编号,int类型,UARTn说明如下:
UART0
- DEBUG PORT
UART1
- BT PORT
UART2
- MAIN PORT
UART3
- USB CDC PORT
UART4
- STDOUT PORT
-
baudratec
- 波特率,int类型,支持常用波特率,如4800
、9600
、19200
、38400
、57600
、115200
、230400
等;
-
databits
- 数据位仅支持8位,int类型。
-
parity
- 奇偶校验(0 – NONE,1 – EVEN,2 – ODD),int类型。
-
stopbits
- 停止位[1 ~ 2],int类型。
-
flowctl
- 硬件控制流(0 – FC_NONE, 1 – FC_HW),int类型。
class machine.UART(UART.UARTn, baudrate, databits, parity, stopbits, flowctl)
参数描述:
-
UARTn
- UART编号,int类型,UARTn说明如下:
UART0
- DEBUG PORT
UART1
- BT PORT
UART2
- MAIN PORT
UART3
- USB CDC PORT
UART4
- STDOUT PORT
-
baudratec
- 波特率,int类型,支持常用波特率,如4800
、9600
、19200
、38400
、57600
、115200
、230400
等;
-
databits
- 数据位[5 ~ 8],int类型。
-
parity
- 奇偶校验(0 – NONE,1 – EVEN,2 – ODD),int类型。
-
stopbits
- 停止位[1 ~ 2],int类型。
-
flowctl
- 硬件控制流(0 – FC_NONE, 1 – FC_HW),int类型。
class machine.UART(UART.UARTn, baudrate, databits, parity, stopbits, flowctl)
参数描述:
-
UARTn
- UART编号,int类型,UARTn说明如下:
UART0
- DEBUG PORT
UART1
- BT PORT
UART2
- MAIN PORT
UART3
- USB CDC PORT
-
baudratec
- 波特率,int类型,支持常用波特率,如4800
、9600
、19200
、38400
、57600
、115200
、230400
等;
-
databits
- 数据位仅支持8位,int类型。
-
parity
- 奇偶校验(0 – NONE,1 – EVEN,2 – ODD),int类型。
-
stopbits
- 停止位[1 ~ 2],int类型。
-
flowctl
- 硬件控制流(0 – FC_NONE, 1 – FC_HW),int类型。
class machine.UART(UART.UARTn, baudrate, databits, parity, stopbits, flowctl)
参数描述:
-
UARTn
- UART编号,int类型,UARTn说明如下:
UART0
- DEBUG PORT
UART1
- BT PORT
UART2
- MAIN PORT
UART3
- USB CDC PORT
-
baudratec
- 波特率,int类型,支持常用波特率,如4800
、9600
、19200
、38400
、57600
、115200
、230400
等;
-
databits
- 数据位[5 ~ 8],int类型。
-
parity
- 奇偶校验(0 – NONE,1 – EVEN,2 – ODD),int类型。
-
stopbits
- 停止位[1 ~ 2],int类型。
-
flowctl
- 硬件控制流(0 – FC_NONE, 1 – FC_HW),int类型。
class machine.UART(UART.UARTn, baudrate, databits, parity, stopbits, flowctl)
参数描述:
-
UARTn
- UART编号,int类型,UARTn说明如下:
UART0
- DEBUG PORT
UART1
- BT PORT
UART2
- MAIN PORT
UART3
- USB CDC PORT (不支持BG95M3)
-
baudratec
- 波特率,int类型,支持常用波特率,如4800
、9600
、19200
、38400
、57600
、115200
、230400
等;
-
databits
- 数据位[5 ~ 8],int类型。
-
parity
- 奇偶校验(0 – NONE,1 – EVEN,2 – ODD),int类型。
-
stopbits
- 停止位[1 ~ 2],int类型。
-
flowctl
- 硬件控制流(0 – FC_NONE, 1 – FC_HW),int类型。
UART引脚对应关系 :
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号124 | 引脚号123 | NULL | NULL |
uart2 | 引脚号32 | 引脚号31 | 引脚号34 | 引脚号33 |
uart4 | 引脚号103 | 引脚号104 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号138 | 引脚号137 | NULL | NULL |
uart2 | 引脚号67 | 引脚号68 | 引脚号65 | 引脚号64 |
uart4 | 引脚号82 | 引脚号81 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号12 | 引脚号11 | NULL | NULL |
uart1 | 引脚号63 | 引脚号66 | NULL | NULL |
uart2 | 引脚号67 | 引脚号68 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号12 | 引脚号11 | NULL | NULL |
uart1 | 引脚号63 | 引脚号66 | NULL | NULL |
uart2 | 引脚号67 | 引脚号68 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1 | 引脚号50 | 引脚号51 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号29 | 引脚号28 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号23 | 引脚号22 | NULL | NULL |
uart1 | 引脚号27 | 引脚号28 | NULL | NULL |
uart2 | 引脚号64 | 引脚号65 | NULL | NULL |
uart4 | 引脚号35 | 引脚号34 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号71 | 引脚号72 | NULL | NULL |
uart1(flowctl = 0) | 引脚号3 | 引脚号2 | NULL | NULL |
uart1(flowctl = 1) | 引脚号33 | 引脚号34 | NULL | NULL |
uart2 | 引脚号32 | 引脚号31 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号27 | 引脚号28 | NULL | NULL |
uart2 | 引脚号35 | 引脚号34 | 引脚号37 | 引脚号36 |
uart4 | 引脚号19 | 引脚号18 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1(flowctl = 0) | 引脚号50 | 引脚号51 | NULL | NULL |
uart1(flowctl = 1) | 引脚号22 | 引脚号23 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart4 | 引脚号29 | 引脚号28 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1(flowctl = 0) | 引脚号50 | 引脚号51 | NULL | NULL |
uart1(flowctl = 1) | 引脚号22 | 引脚号23 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart4 | 引脚号29 | 引脚号28 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号23 | 引脚号22 | NULL | NULL |
uart1(flowctl = 0) | 引脚号27 | 引脚号28 | NULL | NULL |
uart1(flowctl = 1) | 引脚号36 | 引脚号37 | NULL | NULL |
uart2 | 引脚号35 | 引脚号34 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号71 | 引脚号72 | NULL | NULL |
uart1 | 引脚号70 | 引脚号69 | NULL | NULL |
uart2 | 引脚号32 | 引脚号31 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1 | 引脚号29 | 引脚号28 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号124 | 引脚号123 | NULL | NULL |
uart2 | 引脚号32 | 引脚号31 | 引脚34 | 引脚33 |
uart4 | 引脚号116 | 引脚号9 | NULL | NULL |
uart5 | 引脚号125 | 引脚号126 | NULL | NULL |
uart6 | 引脚号106 | 引脚号105 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号29 | 引脚号28 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart5 | 引脚号23 | 引脚号22 | NULL | NULL |
uart6 | 引脚号86 | 引脚号83 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号27 | 引脚号28 | NULL | NULL |
uart2 | 引脚号35 | 引脚号34 | 引脚号37 | 引脚号36 |
uart4 | 引脚号19 | 引脚号18 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号71 | 引脚号72 | NULL | NULL |
uart1(flowctl = 0) | 引脚号3 | 引脚号2 | NULL | NULL |
uart1(flowctl = 1) | 引脚号33 | 引脚号34 | NULL | NULL |
uart2 | 引脚号32 | 引脚号31 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1(flowctl = 0) | 引脚号50 | 引脚号51 | NULL | NULL |
uart1(flowctl = 1) | 引脚号22 | 引脚号23 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1(flowctl = 0) | 引脚号50 | 引脚号51 | NULL | NULL |
uart1(flowctl = 1) | 引脚号22 | 引脚号23 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1 | 引脚号22 | 引脚号23 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | 引脚23 | 引脚22 |
uart3 | 引脚号29 | 引脚号28 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号27 | 引脚号26 | NULL | NULL |
uart1 | 引脚号20 | 引脚号19 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart1 | 引脚号35 | 引脚号34 | NULL | NULL |
uart2 | 引脚号28 | 引脚号27 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号21 | 引脚号22 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号22 | 引脚号21 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号23 | 引脚号22 | NULL | NULL |
uart1 | 引脚号27 | 引脚号28 | NULL | NULL |
uart2 | 引脚号35 | 引脚号34 | 引脚号36 | 引脚号37 |
uart4 | 引脚号36 | 引脚号37 | NULL | NULL |
uart编号 | TX引脚 | RX引脚 | RTS引脚 | CTS引脚 |
---|---|---|---|---|
uart0 | 引脚号39 | 引脚号38 | NULL | NULL |
uart1 | 引脚号29 | 引脚号28 | NULL | NULL |
uart2 | 引脚号18 | 引脚号17 | NULL | NULL |
注意:
uart0不建议使用
EC200ACN_LA模组uart1引脚号与其他型号不同:
TX:引脚号26
RX:引脚号27
注意:
uart0不建议使用
注意:
EC800MCNGA 、CNGB、CNGD模块的uart1 不可用
注意:
EG810MCNGA、CNGB模块的uart1 不可用
注意:
EG800KCN模块的uart1不可用
注意:
EG915NEU_AG模块的uart4不可用
注意:
EC200UXXAA模组uart4不可用
注意:
EC600ECN_LE&LQ模组uart1不可用
注意:
EG912UGL_AA模组uart4不可用
使用UART4需要先调用modem.main_uart_enable_set(1)使能UART4,重启生效,如下
import modem
#获取Main_UART使能状态 1-使能,0-不使能
modem.main_uart_enable_get()
#设置Main_UART使能状态 1-使能,0-不使能,重启生效
modem.main_uart_enable_set(1)
uart1在flowctl = 1时,仅将uart1映射到不同的引脚,未开启流控功能。
UART2被初始化后交互口将无法使用,需要在代码中执行uart2.close()或者重启模组才可继续使用交互口。
UART1被初始化后交互口将无法使用,需要在代码中执行uart1.close()或者重启模组才可继续使用交互口。
示例:
>>> # 创建uart对象
>>> from machine import UART
>>> uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0)
方法
uart.any
uart.any()
该方法用于获取接收缓存未读数据大小。
返回值描述:
返回接收缓存器中有多少字节的数据未读。
示例:
>>> uart1.any()
20 #表示接收缓冲区中有20字节数据未读
uart.read
uart.read(nbytes)
该方法用于从串口读取数据。
参数描述:
-
nbytes
- 要读取的字节数,int类型。
返回值描述:
返回读取的数据。
uart.write
uart.write(data)
该方法用于发送数据到串口。
参数描述:
-
data
- 发送的数据,bytes类型。
返回值描述:
返回发送的字节数。
uart.close
uart.close()
该方法用于关闭串口。
返回值描述:
成功返回整型值
0
,失败返回整型值
-1
。
uart.control_485
uart.control_485(UART.GPIOn, direction)
该方法用于控制485通信方向,串口发送数据之前和之后进行拉高拉低指定GPIO,用来指示485通信的方向。
参数描述:
-
GPIOn
- 需要控制的GPIO引脚号,参照[Pin模块](machine.Pin.html)的引脚定义,int类型。
-
direction
- 引脚电平变化,int类型,说明如下:
1
表示引脚电平变化为:串口发送数据之前由低拉高、发送数据之后再由高拉低
0
表示引脚电平变化为:串口发送数据之前由高拉低、发送数据之后再由低拉高
返回值描述:
成功返回整型值
0
,失败返回整型值
-1
。
示例:
from machine import UART
uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0)
art1.control_485(UART.GPIO24, 1)
uart.control_485
该型号不支持此API
uart.set_callback
uart.set_callback(fun)
该方法用于设置串口数据回调,串口收到数据后,会执行该回调。
参数描述:
-
fun
- 串口回调函数,回调函数原型:fun(result_list)
回调函数参数描述:
-
result_list[0]
:接收是否成功(0:成功,其它:失败) -
result_list[1]
:接收端口 -
result_list[2]
:返回有多少数据
-
返回值描述:
成功返回整型值
0
,失败返回整型值
-1
。
示例:
>>> from machine import UART
>>> uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0)
>>>
>>> def uart_call(para):
>>> print(para)
>>> uart1.set_callback(uart_call)
使用示例:
"""
运行本例程,需要通过串口线连接开发板的 MAIN 口和PC,在PC上通过串口工具
打开 MAIN 口,并向该端口发送数据,即可看到 PC 发送过来的消息。
"""
import _thread
import utime
import log
from machine import UART
'''
* 参数1:端口
注:EC100YCN平台与EC600SCN平台,UARTn作用如下
UART0 - DEBUG PORT
UART1 – BT PORT
UART2 – MAIN PORT
UART3 – USB CDC PORT
* 参数2:波特率
* 参数3:data bits (5~8)
* 参数4:Parity (0:NONE 1:EVEN 2:ODD)
* 参数5:stop bits (1~2)
* 参数6:flow control (0: FC_NONE 1:FC_HW)
'''
# 设置日志输出级别
log.basicConfig(level=log.INFO)
uart_log = log.getLogger("UART")
class Example_uart(object):
def __init__(self, no=UART.UART2, bate=115200, data_bits=8, parity=0, stop_bits=1, flow_control=0):
self.uart = UART(no, bate, data_bits, parity, stop_bits, flow_control)
self.uart.set_callback(self.callback)
def callback(self, para):
uart_log.info("call para:{}".format(para))
if(0 == para[0]):
self.uartRead(para[2])
def uartWrite(self, msg):
uart_log.info("write msg:{}".format(msg))
self.uart.write(msg)
def uartRead(self, len):
msg = self.uart.read(len)
utf8_msg = msg.decode()
uart_log.info("UartRead msg: {}".format(utf8_msg))
return utf8_msg
def uartWrite_test(self):
for i in range(10):
write_msg = "Hello count={}".format(i)
self.uartWrite(write_msg)
utime.sleep(1)
if __name__ == "__main__":
uart_test = Example_uart()
uart_test.uartWrite_test()
# 运行结果示例
'''
INFO:UART:write msg:Hello count=0
INFO:UART:write msg:Hello count=1
INFO:UART:write msg:Hello count=2
INFO:UART:write msg:Hello count=3
INFO:UART:write msg:Hello count=4
INFO:UART:write msg:Hello count=5
INFO:UART:write msg:Hello count=6
INFO:UART:write msg:Hello count=7
INFO:UART:write msg:Hello count=8
INFO:UART:write msg:Hello count=9
INFO:UART:call para:[0, 2, 15]
INFO:UART:UartRead msg: my name is XXX
'''
常量
常量 | 说明 |
---|---|
UART.UART0 | UART0 |
UART.UART1 | UART1 |
UART.UART2 | UART2 |
UART.UART3 | UART3 |
UART.UART4 | UART4 |