diff --git a/docs/Advanced_development/zh/QuecPythonSub/UART.md b/docs/Advanced_development/zh/QuecPythonSub/UART.md index 3059374f49c92a1cc9a2300068df3750730bc3d9..acd84697c0eafe752cdbf97b2fc02e352d45a92d 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/UART.md +++ b/docs/Advanced_development/zh/QuecPythonSub/UART.md @@ -1,96 +1,39 @@ -# **QuecPython UART开发使用说明** +## 修订历史 -文档主要基于EC600S介绍如何使用QuecPython_UART,UART作为一种通用串行数据总线,用于异步通信,可实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括监控调试器和其它器件。通过本文你将了解到EC600S\_UART的所有设置参数及使用方法。 +| Version | Date | Author | Change expression | +| ------- | --------- | ------ | ----------------- | +| 1.0 | 2021-9-02 | David | Initial version | +文档主要基于EC600X(包括EC600S、EC600N、EC600U)介绍如何使用QuecPython_UART,UART作为一种通用串行数据总线,用于异步通信,可实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括监控调试器和其它器件。通过本文你将了解到EC600X_UART的所有设置参数及使用方法。 -## 硬件描述 -目前开放共3路UART,各路UART对应模组的PIN脚如下图所示: +## 硬件描述 -![](media/f3263989fb6aaafabf504ceb0d305c5b.png) +针对不同的模组,开放的UART列表如下: -3路UART对应开发板的接口如下图所示: +| module_name | module_UART_name | module_UART_PIN | +| ----------- | ----------------------------------------------------- | ------------------------------------------- | +| EC600S/N | UART0_DEBUG PORT
UART1_BT PORT
UART2_MAIN PORT | PIN71、PIN72
PIN2、PIN3
PIN31、PIN32 | +| EC600U | UART1_BT PORT
UART2_MAIN PORT | PIN123、PIN124
PIN31、32 | -![](media/e6ebd36d248fb439b2fdfb7bca8ec724.png) +对于V1.2和V1.3的QuecPython开发板,具体的UART位置标记如下: -3路串口对应关系列表如下: + -| 串口名 | 模组引脚名 | 模组引脚号 | -|----------|----------------|------------| -| 调试串口 | DBG_RXD | 72 | -| | DBG_TXD | 71 | -| 辅助串口 | GPIO2/SPI_MISO | 2 | -| | GPIO3/SPI_MOSI | 3 | -| 主串口 | MAIN_DTR | 39 | -| | MAIN_RXD | 31 | -| | MAIN_TXD | 32 | -| | MAIN_CTS | 33 | -| | MAIN_RTS | 34 | -| | MAIN_DCD | 48 | -| | MAIN_RI | 40 | +针对其他版本的QuecPython开发板,可以根据上述的PIN脚号和对应版本的原理图在开发板上面找到对应的位置 ## 软件设计 -### 创建UART对象 - -uart = UART(UART.UARTn, buadrate, databits, parity, stopbits,flowctl)。创建UART对象接口参数介绍如下: - -| 参数 | 类型 | 说明 | -|----------|------|-------------------------------------------------------------------------------| -| UARTn | int | 端口号 UART0 - DEBUG PORT UART1 – BT PORT UART2 – MAIN PORT | -| buadrate | int | 波特率,常用波特率都支持,如4800、9600、19200、38400、57600、115200、230400等 | -| databits | int | 数据位(5~8) | -| parity | int | 奇偶校验(0 – NONE,1 – EVEN,2 - ODD) | -| stopbits | int | 停止位(1~2) | -| flowctl | int | 硬件控制流(0 – FC_NONE, 1 – FC_HW | - -### 查询串口未读字节数 - -uart.any():返回接收缓存器中有多少字节的数据未读,无参数。 - -返回值:指令执行成功或者不存在未读数据都返回0,否则返回未读字节数。 - -### 读取数据 - -uart.read(nbytes):从串口读取数据,建议先执行上个命令,查询未读数据的字节数,然后读取数据时加上需要读取的字节数。 - -参数介绍如下: - -| 参数 | 类型 | 说明 | -|--------|------|----------------| -| nbytes | int | 要读取的字节数 | - -返回值:返回读取的数据 - -### 发送数据 - -uart.write(data),用于从模组向外发送数据,参数介绍如下: - -| 参数 | 类型 | 说明 | -|------|--------|------------| -| data | string | 发送的数据 | - -返回值:返回发送的字节数 - -### 关闭串口 - -uart.close():关闭串口,无参数。 - -返回值:成功返回整型0,失败返回整型-1 +软件设计主要参考官网的wiki,地址:[UART_API库](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=uart) ## 交互操作 -使用QPYcom工具和模组进行交互,下面实例是基于UART0,UART1和UART2操作类似。 - -
-![](media/cfdf4c62be36f4910398ee6579cbb633.png) - -
+使用QPYcom工具和模组进行交互,下面实例是基于UART0,对于UART1和UART2的话,操作类似,此处省略。![](media/UART_02.png) 注意: -1. from machine import UART即为让UART模块在当前空间可见。 +1. from machine import UART目的是让UART模块在当前空间可见。 2. 只有from machine import UART模块,才能使用UART内的函数和变量。 @@ -98,6 +41,10 @@ uart.close():关闭串口,无参数。 ## 下载验证 +模组:EC600U_QuecPython开发板 + +串口:UART1 + ### 软件代码 配套demo的参考代码为文档同目录下的example_uart_file.py文件。下载.py文件到模组运行,代码如下: @@ -107,87 +54,74 @@ import _thread # 导入线程模块 import utime # 导入定时模块 import log # 导入log模块 from machine import UART # 导入UART模块 -# 测试该示例代码需要配置uart + # 设置日志输出级别 log.basicConfig(level=log.INFO) uart_log = log.getLogger("UART") -state = 1 +uart = UART(UART.UART1, 115200, 8, 0, 1, 0) + def uartWrite(): + global uart count = 10 - # 配置uart - uart = UART(UART.UART1, 115200, 8, 0, 1, 0) while count: write_msg = "Hello count={}".format(count) - # 发送数据 uart.write(write_msg) uart_log.info("Write msg :{}".format(write_msg)) utime.sleep(1) count -= 1 uart_log.info("uartWrite end!") + + def UartRead(): - global state - uart = UART(UART.UART1, 115200, 8, 0, 1, 0) + global uart while 1: - # 返回是否有可读取的数据长度 msgLen = uart.any() + utime.sleep(0.1) # 当有数据时进行读取 if msgLen: msg = uart.read(msgLen) - # 初始数据是字节类型(bytes),将字节类型数据进行编码 utf8_msg = msg.decode() - # str uart_log.info("UartRead msg: {}".format(utf8_msg)) else: continue - state = 0 + + def run(): - # 创建一个线程来监听接收uart消息 _thread.start_new_thread(UartRead, ()) + _thread.start_new_thread(uartWrite, ()) + if __name__ == "__main__": - uartWrite() run() - while 1: - if state: - pass - else: - break + while True: + utime.sleep(0.5) ``` ### 硬件连接 使用type-c给模块供电,UART与TTL转USB模块的连接如下表(仅供参考): -| 模块UART_pin脚 | TTL转USB模块 | -|----------------|--------------| -| SPI_MISO | Tx | -| SPI_MOSI | Rx | -| GND | GND | +| 开发板上的PIN脚 | TTL转USB模块 | 图中线的颜色 | +| --------------- | ------------ | ------------ | +| J6的12脚 | Tx | 红色 | +| J6的13脚 | Rx | 橘色 | +| GND | GND | 棕色 | 硬件连接展示图如下图所示: - -
-![](media/d5d74b7f74c6fb3c9ccfefd19a145e6f.jpeg) - -
+ ### 运行效果 1. 打开QCOM,连接TTL转USB对应的端口,如下图所示: - -
- ![](media/cca92c331b45112155d3542adaf0ee97.png) - -
- -2. 打开QPYcom运行uart_file.py,可在QCOM查看到UART write数据,现象如下截图红色部分 +![image-20210902135537042](media/UART_04.png) + +2. 打开QPYcom运行example_uart_file.py,可在QCOM查看到UART write数据,现象如下截图红色部分 -3. 然QCOM上写quectel两次,可在QPYcom上查看读取的数据。现象如下截图蓝色部分 +3. 然后QCOM上写QuecPython多次,可在QPYcom上查看读取的数据。现象如下截图蓝色部分 + +![image-20210902135941009](media/UART_05.png) -
-![](media/a89ce52fa9591a2b1252f9d2bb841cdf.png) -
## 配套代码 - - 下载代码 \ No newline at end of file + + 下载代码 \ No newline at end of file diff --git a/docs/Advanced_development/zh/QuecPythonSub/code/uart_file.py b/docs/Advanced_development/zh/QuecPythonSub/code/example_uart_file.py similarity index 62% rename from docs/Advanced_development/zh/QuecPythonSub/code/uart_file.py rename to docs/Advanced_development/zh/QuecPythonSub/code/example_uart_file.py index f04b635416f7975fb21ebd98f080e358f84305d9..f96d4bb74ae947e693612eff68c81cf67f7368fc 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/code/uart_file.py +++ b/docs/Advanced_development/zh/QuecPythonSub/code/example_uart_file.py @@ -3,22 +3,16 @@ import utime # 导入定时模块 import log # 导入log模块 from machine import UART # 导入UART模块 -# 测试该示例代码需要配置uart - # 设置日志输出级别 log.basicConfig(level=log.INFO) uart_log = log.getLogger("UART") - -state = 1 - +uart = UART(UART.UART1, 115200, 8, 0, 1, 0) def uartWrite(): + global uart count = 10 - # 配置uart - uart = UART(UART.UART1, 115200, 8, 0, 1, 0) while count: write_msg = "Hello count={}".format(count) - # 发送数据 uart.write(write_msg) uart_log.info("Write msg :{}".format(write_msg)) utime.sleep(1) @@ -27,33 +21,24 @@ def uartWrite(): def UartRead(): - global state - uart = UART(UART.UART1, 115200, 8, 0, 1, 0) + global uart while 1: - # 返回是否有可读取的数据长度 msgLen = uart.any() + utime.sleep(0.1) # 当有数据时进行读取 if msgLen: msg = uart.read(msgLen) - # 初始数据是字节类型(bytes),将字节类型数据进行编码 utf8_msg = msg.decode() - # str uart_log.info("UartRead msg: {}".format(utf8_msg)) else: continue - state = 0 def run(): - # 创建一个线程来监听接收uart消息 _thread.start_new_thread(UartRead, ()) - + _thread.start_new_thread(uartWrite, ()) if __name__ == "__main__": - uartWrite() run() - while 1: - if state: - pass - else: - break + while True: + utime.sleep(0.5) diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/UART_01.png b/docs/Advanced_development/zh/QuecPythonSub/media/UART_01.png new file mode 100644 index 0000000000000000000000000000000000000000..73e736486a7086971093588ffbd8ac307134d2e9 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/UART_01.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/cfdf4c62be36f4910398ee6579cbb633.png b/docs/Advanced_development/zh/QuecPythonSub/media/UART_02.png similarity index 100% rename from docs/Advanced_development/zh/QuecPythonSub/media/cfdf4c62be36f4910398ee6579cbb633.png rename to docs/Advanced_development/zh/QuecPythonSub/media/UART_02.png diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/UART_03.png b/docs/Advanced_development/zh/QuecPythonSub/media/UART_03.png new file mode 100644 index 0000000000000000000000000000000000000000..cb2e91615c5bb252404fd2bd7793afb70a3c51dd Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/UART_03.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/UART_04.png b/docs/Advanced_development/zh/QuecPythonSub/media/UART_04.png new file mode 100644 index 0000000000000000000000000000000000000000..89ab8c148098d4058fad59e486b007f76ddff3c3 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/UART_04.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/UART_05.png b/docs/Advanced_development/zh/QuecPythonSub/media/UART_05.png new file mode 100644 index 0000000000000000000000000000000000000000..de8e5c88e701dc3074f665aacce35a3ab5afefb9 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/UART_05.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/a89ce52fa9591a2b1252f9d2bb841cdf.png b/docs/Advanced_development/zh/QuecPythonSub/media/a89ce52fa9591a2b1252f9d2bb841cdf.png deleted file mode 100644 index 706a5ef9983d91cf0a80178269d72a9a9c7760fe..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/a89ce52fa9591a2b1252f9d2bb841cdf.png and /dev/null differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/cca92c331b45112155d3542adaf0ee97.png b/docs/Advanced_development/zh/QuecPythonSub/media/cca92c331b45112155d3542adaf0ee97.png deleted file mode 100644 index f90fbcc8baa22b422e2488404e6c7409df3e9998..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/cca92c331b45112155d3542adaf0ee97.png and /dev/null differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/e6ebd36d248fb439b2fdfb7bca8ec724.png b/docs/Advanced_development/zh/QuecPythonSub/media/e6ebd36d248fb439b2fdfb7bca8ec724.png deleted file mode 100644 index 4fa17a4777520b23108d022e5f10ad9b5ce4db23..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/e6ebd36d248fb439b2fdfb7bca8ec724.png and /dev/null differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/f3263989fb6aaafabf504ceb0d305c5b.png b/docs/Advanced_development/zh/QuecPythonSub/media/f3263989fb6aaafabf504ceb0d305c5b.png deleted file mode 100644 index 3d5dc28cb6fb16708aca687b33d57d463e113f8b..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/f3263989fb6aaafabf504ceb0d305c5b.png and /dev/null differ