diff --git a/docs/Advanced_development/zh/QuecPythonSub/GPIO.md b/docs/Advanced_development/zh/QuecPythonSub/GPIO.md index 48ce708cb5eebc5d6dd92d3a327315dfcfe85c3e..218833c5849f9fee351eedd68f074eabf11e2b2f 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/GPIO.md +++ b/docs/Advanced_development/zh/QuecPythonSub/GPIO.md @@ -1,167 +1,107 @@ -# EC600S GPIO及IO中断开发 +## 修订历史 -文档主要基于EC600S介绍如何使用QuecPython_GPIO,GPIO通常用于连接驱动LED、蜂鸣器、继电器等等,同样也可以用来读取KEY、开关状态、外部IC的引脚电平状态等等。通过本文你将了解到GPIO的所有设置参数及使用方法。 +| Version | Date | Author | Change expression | +| ------- | ---------- | ------ | ----------------- | +| 1.0 | 2021-09-06 | David | Initial version | -## 硬件描述 +## PIN -目前开放共10个GPIO,其他的GPIO逐渐开放,各个GPIO口连接位置如下表所示: +文档主要基于EC600X(包括EC600S、EC600N、EC600U)先介绍如何使用QuecPython_GPIO,GPIO通常用于连接驱动LED、蜂鸣器、继电器等等,同样也可以用来读取KEY、开关状态、外部IC的引脚电平状态等等。通过本文你将了解到GPIO的所有设置参数及使用方法。 -GPIO1 – 模组的Pin10 -GPIO2 – 模组的Pin11 -GPIO3 – 模组的Pin12 -GPIO4 – 模组的Pin13 -GPIO5 – 模组的Pin14 -GPIO6 – 模组的Pin15 -GPIO7 – 模组的Pin16 -GPIO8 – 模组的Pin39 -GPIO9 – 模组的Pin40 -GPIO10 – 模组的Pin48 +### 硬件设计 -![](media/9351c08c142de93cfa88095688ab7535.png) +对于目前QuecPython支持的GPIO,在官网wiki已经详细列出,具体位置为:[PIN_API库](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pin) -## 软件设计 +### 软件设计 -### 创建gpio对象 +软件设计主要参考官网的wiki,具体位置为:[PIN_API库](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pin) -gpio = Pin(GPIOn, direction, pullMode, level) - -函数原型:Pin(GPIOn, direction, pullMode,level),返回一个pgio对象,用于操作读写IO状态。 - -| 参数 | 类型 | 说明 | -| --------- | ---- | ------------------------------------------------------------ | -| GPIOn | int | GPIO1 – 模组的Pin10 GPIO2 – 模组的Pin11
GPIO3 – 模组的Pin12 GPIO4 – 模组的Pin13
GPIO5 – 模组的Pin14 GPIO6 – 模组的Pin15
GPIO7 – 模组的Pin16 GPIO8 – 模组的Pin39
GPIO9 – 模组的Pin40 GPIO10 – 模组的Pin48 | -| direction | int | IN – 输入模式,OUT – 输出模式 | -| pullMode | int | PULL_DISABLE – 浮空模式
PULL_PU – 上拉模式
PULL_PD – 下拉模式 | -| level | int | 0 - 设置引脚为低电平, 1- 设置引脚为高电平 | - -### 获取Pin脚电平 - -state= gpio.read() - -函数原型:read(),返回对应创建gpio对象的Pin脚输入电平状态。 - -| 参数 | 类型 | 说明 | -|-------|------|------------------| -| state | int | 0低电平,1高电平 | - -### 设置Pin脚电平 - -ret = gpio.Pin.write(value) - -函数原型:write(value),设置对应创建gpio对象的Pin脚输出电平状态,返回设置结果。 - -| 参数 | 类型 | 说明 | -|-------|------|-----------------------------------------------------------------------------------------| -| value | int | 0 -当PIN脚为输出模式时,设置当前Pin脚输出低 1 -当PIN脚为输出模式时,设置当前Pin脚输出高 | -| ret | int | 0成功 -1失败 | - -## 交互操作 +### 交互操作 使用QPYcom工具和模组进行交互,示例如下: -![](media/5c3518e6007b37481d75644bb6fc3659.png) +![](media/GPIO_01.png) 注意: -1. import Pin即为让Pin模块在当前空间可见。 - -2. 只有import Pin模块,才能使用Pin内的函数和变量。 - -## 下载验证 - -下载.py文件到模组运行,代码如下: - -```python -from machine import Pin -gpio1 = Pin(Pin.GPIO1, Pin.OUT, Pin.PULL_DISABLE, 0) -ret = gpio1.write(1) -print(ret) -ret = gpio1.read() -print(ret) -ret = gpio1.write(0) -print(ret) -ret = gpio1.read() -print(ret) -``` +1. from machine import Pin目的是让Pin模块在当前空间可见。 +2. 只有from machine import Pin模块,才能使用Pin内的函数和变量。 - +3. 上述操作没有连接任何外设,仅作为熟悉指令参考 - 下载代码 +### 下载验证 -## 外部中断\_基本概述 +由于GPIO的控制比较简单,可以外接一个三极管等器件自行测试。 -认识了普通的GPIO之后,接着介绍外部中断,普通GPIO可以随时查询Pin引脚的电平状态,但却不能及时发现电平的变化,而外部中断就能完美的解决这个问题。若设定了上升沿触发外部中断时,当电平从低电平上升到高电平瞬间,就会触发外部中断,从而在电平变化时立马执行回调函数。 +## ExtInt -## 软件设计 +GPIO介绍过后,接着介绍外部中断,普通GPIO可以随时查询Pin引脚的电平状态,但却不能及时发现电平的变化,而外部中断就能完美的解决这个问题。若设定了上升沿触发外部中断时,当电平从低电平上升到高电平瞬间,就会触发外部中断,从而在电平变化时立马执行回调函数。 -### 创建extint对象: +### 硬件设计 -extint = ExtInt(GPIOn, mode, pull, callback) +同上 -函数原型:ExtInt(GPIOn, mode, pull,callback),返回一个extint对象,用于使能、禁止中断响应。 +### 软件设计 -| 参数 | 类型 | 说明 | -| -------- | -------- | ------------------------------------------------------------ | -| GPIOn | int | GPIO1 – 模组的Pin10 GPIO2 – 模组的Pin11
GPIO3 – 模组的Pin12 GPIO4 – 模组的Pin13
GPIO5 – 模组的Pin14 GPIO6 – 模组的Pin15
GPIO7 – 模组的Pin16 GPIO8 – 模组的Pin39
GPIO9 – 模组的Pin40 GPIO10 – 模组的Pin48 | -| mode | int | IRQ_RISING – 上升沿触发
IRQ_FALLING – 下降沿触发
IRQ_RISING_FALLING – 上升和下降沿触发 | -| pull | int | PULL_DISABLE – 浮空模式
PULL_PU – 上拉模式
PULL_PD – 下拉模式 | -| callback | function | 中断触发回调函数 | +软件设计主要参考官网的wiki,地址:[ExtInt_API库](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=extint) -### 允许中断 +### 交互操作 -ret = extint.enable() - -函数原型:enable(),设置对应创建extint对象的中断响应,返回设置结果。 - -| 参数 | 类型 | 说明 | -|------|------|--------------| -| ret | int | 0成功 -1失败 | - -### 禁止中断 - -ret = extint.disable() +使用QPYcom工具和模组进行交互,示例如下: -函数原型:disable(),设置对应创建extint对象的中断响应,返回设置结果。 +![](media/GPIO_02.png) -| 参数 | 类型 | 说明 | -|------|------|--------------| -| ret | int | 0成功 -1失败 | +注意: -## 交互操作 +**回调函数fun(args)中的args,是引脚中断后返回的内部GPIO行号,一般用不上,但也要设置。** -使用QPYcom工具和模组进行交互,示例如下: +### 下载验证 -![](media/2d5c069c492cc483e86f32f3fe88480a.png) +模组:EC600N_QuecPython开发板 -注意:回调函数fun(args)中的args,是引脚中断后返回的内部GPIO行号,一般用不上,但也要设置。 +按键触发:KEY1和KEY2 -## 下载验证 +#### 软件代码 -下载.py文件到模组运行,代码如下: +配套demo的参考代码为文档同目录下的example_extint_file.py文件。下载此文件到模组运行,代码如下: -``` +```python from machine import ExtInt import utime def fun1(args): print(args) - print("1111111111111111111111") + print("key1 extint") def fun2(args): print(args) - print("222222222222222222222") -extint1 = ExtInt(ExtInt.GPIO1, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun1) extint1.enable() -extint2 = ExtInt(ExtInt.GPIO2, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun2) extint2.enable() + print("key2 extint") +extint1 = ExtInt(ExtInt.GPIO12, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun1) +extint2 = ExtInt(ExtInt.GPIO13, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun2) +extint1.enable() +extint2.enable() while True: utime.sleep_ms(200) - print("。。。。。。。。。") ``` -注意:回调函数fun(args)中的args,是引脚中断后返回的内部GPIO行号,一般用不上,但必须设置。 +#### 硬件连接 + +对于QuecPython开发板来说,无需另外的硬件连接,开发板正常供电即可 + +#### 运行效果 + +1.打开QPYcom,运行example_extint_file.py,至如下界面: + +image-20210906141407279 + +2.随意按下按键,即可触发对应的回调进行打印,结果如下: + +image-20210906141540171 + - + - 下载代码 + 下载代码 ## 名词解释 diff --git a/docs/Advanced_development/zh/QuecPythonSub/Qp_sub_PWM.md b/docs/Advanced_development/zh/QuecPythonSub/PWM.md old mode 100755 new mode 100644 similarity index 74% rename from docs/Advanced_development/zh/QuecPythonSub/Qp_sub_PWM.md rename to docs/Advanced_development/zh/QuecPythonSub/PWM.md index b1934b52a93244ac47e4e2d510083c5481d78584..c85bae3fb8a1995336889b342019b337d3618cf8 --- a/docs/Advanced_development/zh/QuecPythonSub/Qp_sub_PWM.md +++ b/docs/Advanced_development/zh/QuecPythonSub/PWM.md @@ -1,22 +1,23 @@ -## QuecPython PWM开发 -本文主要简介 QuecPython PWM 库的使用方法, +## 修订历史 -### PWM简介 -PWM是一种对模拟信号电平进行数字编码的方法。根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 +| Version | Date | Author | Change expression | +| ------- | ---------- | ------ | ----------------- | +| 1.0 | 2021-09-06 | David | Initial version | -## 快速开始 +文档主要基于EC600X(包括EC600S、EC600N、EC600U)介绍如何使用 QuecPython_PWM。PWM是一种对模拟信号电平进行数字编码的方法。根据相应载荷的变化来调制晶体管基极或MOS管栅极的偏置,来实现晶体管或MOS管导通时间的改变,从而实现开关稳压电源输出的改变。这种方式能使电源的输出电压在工作条件变化时保持恒定,是利用微处理器的数字信号对模拟电路进行控制的一种非常有效的技术。脉冲宽度调制是利用微处理器的数字输出来对模拟电路进行控制的一种非常有效的技术,广泛应用在从测量、通信到功率控制与变换的许多领域中。 -关于API的信息请参考 [QuecPython wiki PWM 库信息](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pwm) -下面我们使用 EC600S V1.1 版本的硬件, 使用 69号引脚 G1发出PWM 波形。 -![EC600S V1.1 硬件-PWM 引脚连接](media/Qp_Advance_develop_Sub_pwm01.jpg) - -红蓝两根线接到逻辑分析仪上。然后运行下面的代码,即可抓取到波形。 +## 软件设计 +软件设计主要参考官网的wiki,地址:[PWM_API库](https://python.quectel.com/wiki/#/zh-cn/api/QuecPythonClasslib?id=pwm) +## 交互操作 -由于PWM API 接口 分为了 1ms , 10us , 1us三个等级。 +下面我们使用 EC600S V1.1 版本的硬件, 使用 69号引脚 G1发出PWM 波形。 +image-20210906161205040 +红蓝两根线接到逻辑分析仪上。然后运行下面的代码,即可抓取到波形。 +由于PWM API 接口 分为了 1ms , 10us , 1us三个等级。 ```python from misc import PWM @@ -113,11 +114,11 @@ if __name__ == "__main__": test_pwm(fre=100, duty=0.4) ``` -![占空比 0.2 频率为 10K](media/Qp_Advance_develop_Sub_pwm02.jpg) +占空比 0.2 频率为 10K 上面我们展示了使用封装的**PWMclass**直接输出, 1K、10K、100K的波形。 -### 名词解释 +## 名词解释 PWM:脉冲宽度调制 diff --git a/docs/Advanced_development/zh/QuecPythonSub/UART.md b/docs/Advanced_development/zh/QuecPythonSub/UART.md index acd84697c0eafe752cdbf97b2fc02e352d45a92d..7fbd5c8598bd6089419aac8df5055d69cbf7784e 100644 --- a/docs/Advanced_development/zh/QuecPythonSub/UART.md +++ b/docs/Advanced_development/zh/QuecPythonSub/UART.md @@ -1,14 +1,12 @@ ## 修订历史 -| Version | Date | Author | Change expression | -| ------- | --------- | ------ | ----------------- | -| 1.0 | 2021-9-02 | David | Initial version | +| Version | Date | Author | Change expression | +| ------- | ---------- | ------ | ----------------- | +| 1.0 | 2021-09-02 | David | Initial version | 文档主要基于EC600X(包括EC600S、EC600N、EC600U)介绍如何使用QuecPython_UART,UART作为一种通用串行数据总线,用于异步通信,可实现全双工传输和接收。在嵌入式设计中,UART用来与PC进行通信,包括监控调试器和其它器件。通过本文你将了解到EC600X_UART的所有设置参数及使用方法。 - - -## 硬件描述 +## 硬件设计 针对不同的模组,开放的UART列表如下: @@ -21,7 +19,10 @@ -针对其他版本的QuecPython开发板,可以根据上述的PIN脚号和对应版本的原理图在开发板上面找到对应的位置 +备注: + +1. 针对其他版本的QuecPython开发板,可以根据上述的PIN脚号和对应版本的原理图在开发板上面找到对应的位置 +2. 后续wiki对于UART_PIN更新后,可参考wiki里面的说明,忽略上述的表格 ## 软件设计 @@ -47,7 +48,7 @@ ### 软件代码 -配套demo的参考代码为文档同目录下的example_uart_file.py文件。下载.py文件到模组运行,代码如下: +配套demo的参考代码为文档同目录下的example_uart_file.py文件。下载此文件到模组运行,代码如下: ```python import _thread # 导入线程模块 @@ -114,7 +115,7 @@ if __name__ == "__main__": 1. 打开QCOM,连接TTL转USB对应的端口,如下图所示: ![image-20210902135537042](media/UART_04.png) -2. 打开QPYcom运行example_uart_file.py,可在QCOM查看到UART write数据,现象如下截图红色部分 +2. 打开QPYcom,运行example_uart_file.py,可在QCOM查看到UART write数据,现象如下截图红色部分 3. 然后QCOM上写QuecPython多次,可在QPYcom上查看读取的数据。现象如下截图蓝色部分 diff --git a/docs/Advanced_development/zh/QuecPythonSub/code/GPIO.py b/docs/Advanced_development/zh/QuecPythonSub/code/GPIO.py deleted file mode 100644 index 3a285ad636c875ecf8ca96e836d6e24493bd4eb7..0000000000000000000000000000000000000000 --- a/docs/Advanced_development/zh/QuecPythonSub/code/GPIO.py +++ /dev/null @@ -1,12 +0,0 @@ -from machine import Pin - - -gpio1 = Pin(Pin.GPIO1, Pin.OUT, Pin.PULL_DISABLE, 0) -ret = gpio1.write(1) -print(ret) -ret = gpio1.read() -print(ret) -ret = gpio1.write(0) -print(ret) -ret = gpio1.read() -print(ret) diff --git a/docs/Advanced_development/zh/QuecPythonSub/code/example_extint_file.py b/docs/Advanced_development/zh/QuecPythonSub/code/example_extint_file.py new file mode 100644 index 0000000000000000000000000000000000000000..02cebc131606093e2c3ccb8c40606d8cd2427ac1 --- /dev/null +++ b/docs/Advanced_development/zh/QuecPythonSub/code/example_extint_file.py @@ -0,0 +1,15 @@ +from machine import ExtInt +import utime +def fun1(args): + print(args) + print("key1 extint") +def fun2(args): + print(args) + print("key2 extint") +extint1 = ExtInt(ExtInt.GPIO12, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun1) +extint2 = ExtInt(ExtInt.GPIO13, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun2) +extint1.enable() +extint2.enable() +while True: + utime.sleep_ms(200) + diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/9351c08c142de93cfa88095688ab7535.png b/docs/Advanced_development/zh/QuecPythonSub/media/9351c08c142de93cfa88095688ab7535.png deleted file mode 100644 index 47ce5a492863170b88b469b612bf31825087214c..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/9351c08c142de93cfa88095688ab7535.png and /dev/null differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/5c3518e6007b37481d75644bb6fc3659.png b/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_01.png similarity index 100% rename from docs/Advanced_development/zh/QuecPythonSub/media/5c3518e6007b37481d75644bb6fc3659.png rename to docs/Advanced_development/zh/QuecPythonSub/media/GPIO_01.png diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/2d5c069c492cc483e86f32f3fe88480a.png b/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_02.png similarity index 100% rename from docs/Advanced_development/zh/QuecPythonSub/media/2d5c069c492cc483e86f32f3fe88480a.png rename to docs/Advanced_development/zh/QuecPythonSub/media/GPIO_02.png diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_03.png b/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_03.png new file mode 100644 index 0000000000000000000000000000000000000000..ee2a2e6d89eab5f14ffe51e979017077b38fc917 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_03.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_04.png b/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_04.png new file mode 100644 index 0000000000000000000000000000000000000000..be9155dcf8ee41f6d394bb1d75fe294bc6142ea9 Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/GPIO_04.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/PWM_01.png b/docs/Advanced_development/zh/QuecPythonSub/media/PWM_01.png new file mode 100644 index 0000000000000000000000000000000000000000..00f02a84d2a5fb0c6cdd172ab9e5cedf129f6fad Binary files /dev/null and b/docs/Advanced_development/zh/QuecPythonSub/media/PWM_01.png differ diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/Qp_Advance_develop_Sub_pwm02.jpg b/docs/Advanced_development/zh/QuecPythonSub/media/PWM_02.jpg old mode 100755 new mode 100644 similarity index 100% rename from docs/Advanced_development/zh/QuecPythonSub/media/Qp_Advance_develop_Sub_pwm02.jpg rename to docs/Advanced_development/zh/QuecPythonSub/media/PWM_02.jpg diff --git a/docs/Advanced_development/zh/QuecPythonSub/media/Qp_Advance_develop_Sub_pwm01.jpg b/docs/Advanced_development/zh/QuecPythonSub/media/Qp_Advance_develop_Sub_pwm01.jpg deleted file mode 100755 index 87ad83134730a1e452146796034fbb3c4eb7806d..0000000000000000000000000000000000000000 Binary files a/docs/Advanced_development/zh/QuecPythonSub/media/Qp_Advance_develop_Sub_pwm01.jpg and /dev/null differ diff --git a/docs/Advanced_development/zh/sidebar.yaml b/docs/Advanced_development/zh/sidebar.yaml index 905e8a4f756caacd0a675a243c8420c9c1e941dd..5c03744d0de41be2172329c3d793f81feb3ecec1 100644 --- a/docs/Advanced_development/zh/sidebar.yaml +++ b/docs/Advanced_development/zh/sidebar.yaml @@ -10,7 +10,7 @@ items: - label: I2C总线开发 file: QuecPythonSub/I2C.md - label: PWM开发 - file: QuecPythonSub/Qp_sub_PWM.md + file: QuecPythonSub/PWM.md - label: ADC采样开发 file: QuecPythonSub/ADC.md - label: SPI总线开发