From 50bf22971b5f466854daa468a5f7a533003384f0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhardt=20Peng=28=E5=BD=AD=E6=88=90=E5=90=8D=29?= Date: Sat, 18 Feb 2023 21:05:27 +0800 Subject: [PATCH 1/3] check wiki --- .../machine.ExtInt.md" | 121 +++++ .../machine.I2C.md" | 135 +++++ .../machine.I2C_simulation.md" | 183 +++++++ .../machine.KeyPad.md" | 119 ++++ .../machine.LCD.md" | 506 ++++++++++++++++++ .../machine.Pin.md" | 251 +++++++-- .../machine.RTC.md" | 147 +++++ .../machine.SPI.md" | 136 +++++ .../machine.Timer.md" | 133 +++++ .../machine.Uart.md" | 270 ++++++++++ .../machine.WDT.md" | 83 +++ .../machine.md" | 138 +---- docs/API_reference/zh/sidebar.yaml | 3 + 13 files changed, 2058 insertions(+), 167 deletions(-) create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C_simulation.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.KeyPad.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.RTC.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" create mode 100644 "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.WDT.md" diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" new file mode 100644 index 00000000..31e28801 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" @@ -0,0 +1,121 @@ +# `class ExtInt` - 外部中断 + +类功能:用于配置I/O引脚在发生外部事件时中断。 + +## 构造函数 + +### `machine.ExtInt` + +```python +class machine.ExtInt(GPIOn, mode, pull, callback) +``` + +**参数:** + +- `GPIOn` - 需要控制的GPIO引脚号,int类型,参照[Pin模块](./machine.Pin.md)的引脚定义(除BG95M3外),点此查看BG95M3平台引脚对应关系 + +- `mode` - 触发方式,int类型,说明如下:
`IRQ_RISING` – 上升沿触发
`IRQ_FALLING` – 下降沿触发
`IRQ_RISING_FALLING` – 上升和下降沿触发 + +- `pull` - 上下拉模式,int类型,说明如下:
`PULL_PU` – 上拉模式
`PULL_PD` – 下拉模式
`PULL_DISABLE` – 浮空模式 + +- `callback` - 中断触发回调函数,int类型,说明如下:
返回参数为长度为2的元组
args[0]: gpio号
args[1]: 触发沿(0:上升沿 1:下降沿) + +
+ BG95M3平台引脚对应关系
+GPIO2 – 引脚号5
GPIO3 – 引脚号6
GPIO6 – 引脚号19
GPIO7 – 引脚号22
GPIO8 – 引脚号23
GPIO9 – 引脚号25
GPIO11 – 引脚号27
GPIO12 – 引脚号28
GPIO14 – 引脚号41
GPIO16 – 引脚号65
GPIO17 – 引脚号66
GPIO18 – 引脚号85
GPIO19 – 引脚号86
GPIO20 – 引脚号87
GPIO21 – 引脚号88 +
+**示例:** + +```python +>>> # 创建ExtInt对象 +>>> from machine import ExtInt +>>> def fun(args): + print('### interrupt {} ###'.format(args)) # args[0]:gpio号 args[1]:上升沿或下降沿 +>>> extint = ExtInt(ExtInt.GPIO1, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun) +``` + +## 方法 + +### `extint.enable` + +``` +extint.enable() +``` + +该方法用于使能中断,使能extint对象外部中断,当中断引脚收到上升沿或者下降沿信号时,会调用callback执行。 + +**返回值:** + +使能成功返回整型值`0`,使能失败返回整型值`-1`。 + +### `extint.disable` + +``` +extint.disable() +``` + +该方法用于关闭中断,禁用与extint对象关联的中断 。 + +**返回值:** + +使能成功返回整型值`0`,使能失败返回整型值`-1`。 + +### `extint.line` + +``` +extint.line() +``` + +该方法用于读取引脚映射行号。 + +**返回值:** + +返回引脚映射的行号。 + +**示例:** + +```python +>>> extint = ExtInt(ExtInt.GPIO1, ExtInt.IRQ_FALLING, ExtInt.PULL_PU, fun) +>>> extint.line() +1 +``` + +### `extint.read_count` + +``` +extint.read_count(is_reset) +``` + +该方法用于返回触发中断的次数。 + +**参数:** + +- `is_reset` - 读取后是否重置计数,int类型,`0`表示不重置,`1`表示重置。 + +**返回值:** + +返回列表 `[rising_count, falling_count]`
`rising_count`:上升沿触发次数
`falling_count`:下降沿触发次数 + +### `extint.count_reset` + +``` +extint.count_reset() +``` + +该方法用于清空触发中断的次数。 + +**返回值:** + +返回`0`表示成功,返回其他表示失败。 + +### `extint.read_level` + +``` +extint.read_level() +``` + +该方法用于读取当前引脚电平。 + +**返回值:** + +返回引脚电平,`0`表示获取到的引脚电平为低,`1` 表示获取到的引脚电平为高。 \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C.md" new file mode 100644 index 00000000..12c909a2 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C.md" @@ -0,0 +1,135 @@ +# class I2C – I2C通信 + +类功能:用于设备之间通信的双线协议。 + +## 构造函数 + +### `machine.I2C` + +```python +class machine.I2C(I2Cn, MODE) +``` + +**参数说明:** + +- `I2Cn` - i2c 通路索引号,int类型,说明如下:
I2C.I2C0 : 0
I2C.I2C1 : 1
I2C.I2C2 : 2
点此查看I2C引脚对应关系 + +- `MODE` - i2c 的工作模式,int类型,说明如下:
I2C.STANDARD_MODE : `0` - 标准模式
I2C.FAST_MODE :`1` - 快速模式 + +**示例:** + +```python +from machine import I2C +# 创建I2C对象 +i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE) # 返回i2c对象 +``` + +**引脚对应关系:** + +| 平台 | | +| ------------- | ------------------------------------------------------------ | +| EC600U | I2C0:
SCL: 引脚号11
SDA: 引脚号12
I2C1:
SCL:引脚号57
SDA:引脚号56 | +| EC200U | I2C0:
SCL: 引脚号41
SDA: 引脚号42
I2C1:
SCL:引脚号141
SDA:引脚号142 | +| EC200A | I2C0:
SCL: 引脚号41
SDA: 引脚号42 | +| EC600S/EC600N | I2C1:
SCL:引脚号57
SDA:引脚号56 | +| EC100Y | I2C0:
SCL:引脚号57
SDA:引脚号56 | +| BC25PA | I2C0:
SCL: 引脚号23
SDA: 引脚号22
I2C1:
SCL:引脚号20
SDA:引脚号21 | +| EC800N | I2C0:
SCL:引脚号67
SDA:引脚号66 | +| BG95M3 | I2C0:
SCL: 引脚号18
SDA: 引脚号19
I2C1:
SCL:引脚号40
SDA:引脚号41
I2C2:
SCL:引脚号26
SDA:引脚号25 | +| EC600M | I2C0:
SCL: 引脚号9
SDA: 引脚号64
I2C1:
SCL:引脚号57
SDA:引脚号56
I2C2:
SCL:引脚号67
SDA:引脚号65 | +| EG915U | I2C0:
SCL: 引脚号103
SDA: 引脚号114
I2C1:
SCL:引脚号40
SDA:引脚号41 | +| EC800M | I2C0:
SCL: 引脚号67
SDA: 引脚号66
I2C2:
SCL:引脚号68
SDA:引脚号69 | +| EG912N | I2C1:
SCL: 引脚号40
SDA: 引脚号41 | + +## 方法 + +### `I2C.read` + +```python +I2C.read(slaveaddress, addr,addr_len, r_data, datalen, delay) +``` + +该方法用于从 I2C 总线中读取数据。 + +**参数说明:** + +- `slaveaddress` - i2c 设备地址,int类型。 +- `addr` - i2c 寄存器地址,bytearray类型。 +- `addr_len` - 寄存器地址长度,int类型。 +- `r_data` - 接收数据的字节数组,bytearray类型 +- `datalen` - 字节数组的长度,int类型。 +- `delay` - 延时,数据转换缓冲时间(单位ms),int类型。 + +**返回值:** + +成功返回整型值`0`,失败返回整型值`-1`。 + +### `I2C.write` + +```python +I2C.write(slaveaddress, addr, addr_len, data, datalen) +``` + +该方法用于从 I2C 总线中写入数据。 + +**参数说明:** + +- `slaveaddress` - i2c 设备地址,int类型。 +- `addr` - i2c 寄存器地址,bytearray类型。 +- `addr_len` - 寄存器地址长度,int类型。 +- `data` - 写入的数据,bytearray类型。 +- `datalen` - 写入数据的长度,int类型。 + +**返回值:** + +成功返回整型值`0`,失败返回整型值`-1`。 + +**使用示例:** + +> 注意:需要连接设备使用! + +```python +import log +from machine import I2C +import utime + + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_I2C_example" +PROJECT_VERSION = "1.0.0" + +''' +I2C使用示例 +''' + +# 设置日志输出级别 +log.basicConfig(level=log.INFO) +i2c_log = log.getLogger("I2C") + + +if __name__ == '__main__': + I2C_SLAVE_ADDR = 0x1B # i2c 设备地址 + WHO_AM_I = bytearray([0x02, 0]) # i2c 寄存器地址,以buff的方式传入,取第一个值,计算一个值的长度 + + data = bytearray([0x12, 0]) # 输入对应指令 + i2c_obj = I2C(I2C.I2C0, I2C.STANDARD_MODE) # 返回i2c对象 + i2c_obj.write(I2C_SLAVE_ADDR, WHO_AM_I, 1, data, 2) # 写入data + + r_data = bytearray(2) # 创建长度为2的字节数组接收 + i2c_obj.read(I2C_SLAVE_ADDR, WHO_AM_I, 1, r_data, 2, 0) # read + i2c_log.info(r_data[0]) + i2c_log.info(r_data[1]) + +``` + +# 常量 + +| 常量 | | 适用平台 | +| ----------------- | ----------------- | ------------------------------------------------------------ | +| I2C.I2C0 | i2c 通路索引号: 0 | EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M | +| I2C.I2C1 | i2c 通路索引号: 1 | EC600S/EC600N/EC600U/EC200U/BC25PA/BG95M3/EC600M/EG915U/EC800M/EG912N | +| I2C.I2C2 | i2c 通路索引号: 2 | BG95M3/EC600M | +| I2C.STANDARD_MODE | 标准模式 | | +| I2C.FAST_MODE | 快速模式 | | \ No newline at end of file diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C_simulation.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C_simulation.md" new file mode 100644 index 00000000..213fc4b7 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.I2C_simulation.md" @@ -0,0 +1,183 @@ +# class I2C_simulation - 模拟I2C通信 + +类功能:用于gpio模拟标准i2c协议。除了创建对象外,其它的操作(读写)均与I2C通信一致。 + +## 构造函数 + +### `machine.I2C`_simulation + +```python +class machin.I2C_simulation(GPIO_clk, GPIO_sda, CLK) +``` + +**参数说明:** + +- `GPIO_clk` - i2c的CLK引脚(需要控制的GPIO引脚号,参照Pin模块的定义),int类型。 +- `GPIO_sda` - i2c的SDA引脚(需要控制的GPIO引脚号,参照Pin模块的定义),int类型。 +- `CLK` - i2c的频率,范围:(0,1000000Hz],int类型。 + +**示例:** + +```python +from machine import I2C_simulation +# 创建I2C_simulation对象 +i2c_obj = I2C_simulation(I2C_simulation.GPIO10, I2C_simulation.GPIO11, 300) # 返回i2c对象 +``` + +## 方法 + +### `I2C_simulation.read` + +```python +I2C_simulation.read(slaveaddress, addr,addr_len, r_data, datalen, delay) +``` + +该方法用于从 I2C 总线中读取数据。 + +**参数说明:** + +- `slaveaddress` - i2c 设备地址,int类型。 +- `addr` - i2c 寄存器地址,bytearray类型。 +- `addr_len` - 寄存器地址长度,int类型。 +- `r_data` - 接收数据的字节数组,bytearray类型 +- `datalen` - 字节数组的长度,int类型。 +- `delay` - 延时,数据转换缓冲时间(单位ms),int类型。 + +**返回值:** + +成功返回整型值`0`,失败返回整型值`-1`。 + +### `I2C_simulation.write` + +```python +I2C_simulation.write(slaveaddress, addr, addr_len, data, datalen) +``` + +该方法用于从 I2C 总线中写入数据。 + +**参数说明:** + +- `slaveaddress` - i2c 设备地址,int类型。 +- `addr` - i2c 寄存器地址,bytearray类型。 +- `addr_len` - 寄存器地址长度,int类型。 +- `data` - 写入的数据,bytearray类型。 +- `datalen` - 写入数据的长度,int类型。 + +**返回值:** + +成功返回整型值`0`,失败返回整型值`-1`。 + +**使用示例:** + +该示例是驱动AHT10获取温湿度。 + +```python +import log +#from machine import I2C +from machine import I2C_simulation +import utime as time +""" +1. calibration +2. Trigger measurement +3. read data +""" + +# API 手册 http://qpy.quectel.com/wiki/#/zh-cn/api/?id=i2c +# AHT10 说明书 +# https://server4.eca.ir/eshop/AHT10/Aosong_AHT10_en_draft_0c.pdf + + +class aht10class(): + i2c_log = None + i2c_dev = None + i2c_addre = None + + # Initialization command + AHT10_CALIBRATION_CMD = 0xE1 + # Trigger measurement + AHT10_START_MEASURMENT_CMD = 0xAC + # reset + AHT10_RESET_CMD = 0xBA + + def write_data(self, data): + self.i2c_dev.write(self.i2c_addre, + bytearray(0x00), 0, + bytearray(data), len(data)) + pass + + def read_data(self, length): + print("read_data start") + r_data = [0x00 for i in range(length)] + r_data = bytearray(r_data) + print("read_data start1") + ret = self.i2c_dev.read(self.i2c_addre, + bytearray(0x00), 0, + r_data, length, + 0) + print("read_data start2") + print('ret',ret) + print('r_data:',r_data) + return list(r_data) + + def aht10_init(self, addre=0x38, Alise="Ath10"): + self.i2c_log = log.getLogger(Alise) + self.i2c_dev = I2C_simulation(I2C_simulation.GPIO10, I2C_simulation.GPIO11, 300) + self.i2c_addre = addre + self.sensor_init() + pass + + def aht10_transformation_temperature(self, data): + r_data = data + # 根据数据手册的描述来转化温度 + humidity = (r_data[0] << 12) | ( + r_data[1] << 4) | ((r_data[2] & 0xF0) >> 4) + humidity = (humidity/(1 << 20)) * 100.0 + print("current humidity is {0}%".format(humidity)) + temperature = ((r_data[2] & 0xf) << 16) | ( + r_data[3] << 8) | r_data[4] + temperature = (temperature * 200.0 / (1 << 20)) - 50 + print("current temperature is {0}°C".format(temperature)) + + + def sensor_init(self): + # calibration + self.write_data([self.AHT10_CALIBRATION_CMD, 0x08, 0x00]) + time.sleep_ms(300) # at last 300ms + pass + + + def ath10_reset(self): + self.write_data([self.AHT10_RESET_CMD]) + time.sleep_ms(20) # at last 20ms + + def Trigger_measurement(self): + # Trigger data conversion + self.write_data([self.AHT10_START_MEASURMENT_CMD, 0x33, 0x00]) + time.sleep_ms(200) # at last delay 75ms + # check has success + r_data = self.read_data(6) + # check bit7 + if (r_data[0] >> 7) != 0x0: + print("Conversion has error") + else: + self.aht10_transformation_temperature(r_data[1:6]) + +ath_dev = None + +def i2c_aht10_test(): + global ath_dev + ath_dev = aht10class() + ath_dev.aht10_init() + + # 测试十次 + for i in range(5): + ath_dev.Trigger_measurement() + time.sleep(1) + + +if __name__ == "__main__": + print('start') + i2c_aht10_test() + + +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.KeyPad.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.KeyPad.md" new file mode 100644 index 00000000..0ed5173d --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.KeyPad.md" @@ -0,0 +1,119 @@ +# class KeyPad - 矩阵键盘 + +模块功能:提供矩阵键盘接口。 + +> 支持平台:EC600SCN_LB/ EC800NCN_LA/ EC600NCN_LC/ EC200UCN_LB/ EC600UCN_LB/ EC600MCN_LA/ EC800MCN_LA/ EC800MCN_GA/ EG912NEN_AA +> +> EC200U最大支持4X3,EC600U最大支持6X6。 + +## 构造函数 + +### `machine.KeyPad` + +```python +class machine.KeyPad(row,col) +``` + +**参数:** + +- row - 行号,int类型,大于0,不超过平台支持最大值 +- col - 列号,int类型,大于0,不超过平台支持最大值 + +> 注意:如果row和col均不设置,默认为4X4. + +| 平台 | 最大行 | 最大列 | +| ------------- | ------ | ------ | +| EC800N/EC600N | 4 | 4 | +| EC600S | 5 | 5 | +| EC200U | 4 | 3 | +| EC600U | 6 | 6 | +| EC600M | 5 | 5 | +| EC800M | 5 | 5 | +| EG912N | 3 | 3 | + +**引脚说明:** + +> 注意:当不使用全部引脚时,接线按行列号从小到大顺序接线,比如EC600M使用2x2矩阵键盘时,硬件使用49、51和48、50引脚。 + +| 平台 | 引脚 | +| ------ | ------------------------------------------------------------ | +| EC600M | 行号(输出)对应引脚如下:
行号0 – 引脚号49
行号1 – 引脚号51
行号2 – 引脚号53
行号3 – 引脚号55
行号4 – 引脚号56
列号(输入)对应引脚如下:
列号0 – 引脚号48
列号1 – 引脚号50
列号2 – 引脚号52
列号3 – 引脚号54
列号4 – 引脚号57 | +| EC800M | 行号(输出)对应引脚如下:
行号0 – 引脚号86
行号1 – 引脚号76
行号2 – 引脚号85
行号3 – 引脚号82
行号4 – 引脚号74
列号(输入)对应引脚如下:
列号0 – 引脚号87
列号1 – 引脚号77
列号2 – 引脚号84
列号3 – 引脚号83
列号4 – 引脚号75 | +| EG912N | 行号(输出)对应引脚如下:
行号1 – 引脚号20
行号2 – 引脚号16
行号3 – 引脚号116
列号(输入)对应引脚如下:
列号2 – 引脚号105
列号3 – 引脚号21
列号4 – 引脚号1 | + +**示例:** + +```python +>>># 创建keypad对象 +>>>import machine +>>>keypad=machine.KeyPad(2,3) # 矩阵键盘设置为2行3列矩阵键盘 +>>>keypad=machine.KeyPad() # 不设置,默认设置为4行4列矩阵键盘 +>>>keypad=machine.KeyPad(2) # 行值设置为2,不设置列值,列值默认为4,2行4列矩阵键盘 +``` + +## 方法 + +### `keypad.init` + +```python +keypad.init() +``` + +该方法用于初始化keypad设置。 + +**返回值:** + +成功返回`0`,失败返回`-1`。 + +### `keypad.set_callback` + +```python +keypad.set_callback(usrFun) +``` + +该方法用于设置回调函数,按键接入模组后,按放按键后触发回调函数设置。 + +**参数:** + +- usrFun - 回调函数,functio类型,说明如下:
当外接键盘按键按放会触发此函数。
usrFun参数为list数据类型,list包含三个参数。
其含义如下:
list[0]: 1表示按下,0表示抬起
list[1] : row
list[2] : col + + +**返回值:** + +成功返回`0`。 + +### `keypad.deinit` + +```python +keypad.deinit() +``` + +该方法用于解除初始化,释放初始化的资源和回调函数设置。 + +**返回值:** + +成功返回`0`,失败返回`-1`。 + +**使用示例:** + +```python +import machine +import utime +is_loop = 1 +keypad=machine.KeyPad() +keypad.init() +def userfun(l_list): + global is_loop + if l_list[0] != 1 : + is_loop = 0 + print('will exit') + print(l_list) +keypad.set_callback(userfun) +loop_num = 0 +while is_loop == 1 and loop_num < 10: + utime.sleep(5) + loop_num = loop_num +1 + print(" running..... ",is_loop,loop_num) +keypad.deinit() +print('exit!') +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" new file mode 100644 index 00000000..2d05550f --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" @@ -0,0 +1,506 @@ +# class LCD - LCD显示屏 + +类功能:该模块提供对LCD显示屏的控制 + +适配版本:EC100Y(V0009)及以上;EC600S(V0002)及以上。 + +> 注意:BC25PA平台不支持此模块功能。 + +## 构造函数 + +### `machine.LCD` + +```python +class machine.lcd = LCD() +``` + +**示例:** + +```python +from machine import LCD +lcd = LCD() # 创建lcd对象 +``` + +## 方法 + +### `lcd.lcd_init` + +该方法用于初始化LCD。 + +#### **接口1:设备接模块LCM接口** + +```python +lcd.lcd_init(lcd_init_data, lcd_width, lcd_hight, lcd_clk, data_line, line_num, lcd_type, lcd_invalid, lcd_display_on, lcd_display_off, lcd_set_brightness) +``` + +**参数描述:** + +| 参数 | 类型 | 说明 | +| ------------------ | --------- | ------------------------------------------------------------ | +| lcd_init_data | bytearray | LCD 的初始化配置命令 | +| lcd_width | int | LCD 屏幕的宽度。宽度不超过 500 | +| lcd_hight | int | LCD 屏幕的高度。高度不超过 500 | +| lcd_clk | int | LCD SPI 时钟。SPI 时钟为 6.5K/13K/26K/52K | +| data_line | int | 数据线数。参数值为 1 和 2。 | +| line_num | int | 线的数量。参数值为 3 和 4。 | +| lcd_type | int | 屏幕类型。0:rgb;1:fstn | +| lcd_invalid | bytearray | LCD 区域设置的配置命令 | +| lcd_display_on | bytearray | LCD 屏亮的配置命令 | +| lcd_display_off | bytearray | LCD 屏灭的配置命令 | +| lcd_set_brightness | bytearray | LCD屏亮度的配置命令。
设置为 None表示由 LCD_BL_K 控制亮度(有些屏幕是由寄存器控制屏幕亮度,有些是通过 LCD_BL_K 控制屏幕亮度) | + +**返回值描述:** + +`0` 表示成功 + +`-1`表示已经初始化 + +`-2` 表示参数错误,为空或过大(大于 1000 像素点) + +`-3`表示缓存申请失败 + +`-5`表示配置参数错误 + +#### **接口2:设备接模块SPI接口** + +```python +lcd.lcd_init(lcd_init_data, lcd_width, lcd_hight, lcd_clk, data_line, line_num, lcd_type, lcd_invalid, lcd_display_on, lcd_display_off, lcd_set_brightness, lcd_interface, spi_port, spi_mode, cs_pin, dc_pin, rst_pin) +``` + +**参数描述:** + +| 参数 | 类型 | 说明 | +| ------------------ | --------- | ------------------------------------------------------------ | +| lcd_init_data | bytearray | LCD 的配置命令 | +| lcd_width | int | LCD 屏幕的宽度。宽度不超过 500 | +| lcd_hight | int | LCD 屏幕的高度。高度不超过 500 | +| lcd_clk | int | SPI 时钟。见machine SPI 创建SPI对象参数说明clk | +| data_line | int | 数据线数。参数值为 1 和 2。 | +| line_num | int | 线的数量。参数值为 3 和 4。 | +| lcd_type | int | 屏幕类型。0:rgb;1:fstn | +| lcd_invalid | bytearray | LCD 区域设置的配置命令 | +| lcd_display_on | bytearray | LCD 屏亮的配置命令 | +| lcd_display_off | bytearray | LCD 屏灭的配置命令 | +| lcd_set_brightness | bytearray | LCD屏亮度的配置命令。设置为 None表示由 LCD_BL_K 控制亮度(有些屏幕是由寄存器控制屏幕亮度,有 些是通过 LCD_BL_K 控制屏幕亮度) | +| lcd_interface | int | LCD接口类型。0:LCM接口;1:SPI接口 | +| spi_port | int | 通道选择[0,1],参照SPI部分 | +| spi_mode | int | SPI 的工作模式(模式0最常用):
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2: CPOL=1, CPHA=0
3: CPOL=1, CPHA=1 | +| cs_pin | int | CS引脚,见machine.Pin常量说明 | +| dc_pin | int | DC引脚,见machine.Pin常量说明 | +| rst_pin | int | RST引脚,见machine.Pin常量说明 | + +**返回值描述:** + +`0` 表示成功 + +`-1`表示屏幕已经初始化 + +`-2` 表示参数错误,为空或过大(大于 1000 像素点) + +`-3`表示缓存申请失败 + +`-5`表示配置参数错误 + + +### `lcd.mipi_init` + +```python +lcd.mipi_init(initbuf,**kwargs) +``` + +该方法用于初始化MIPI,按键值对传参,请根据屏厂提供的初始化参数填写。 + +> 注意: +> +> 1.仅支持EC200U系列和EC600U系列 +> +> 2.参数列表中,initbuf为必传参数;后面参数与缺省值不同时传入。 + +**参数描述:** + +| 参数 | 类型 | 说明 | +| ----------- | --------- | ------------------------------------------------------------ | +| initbuf | bytearray | 必传,传入 MIPI 的配置命令 | +| width | int | 缺省值:480,屏幕的宽度,示例:width=400 | +| hight | int | 缺省值:854,屏幕的高度,示例:hight=800 | +| bpp | int | 缺省值:16,像素深度 | +| DataLane | int | 缺省值:2,数据通道 | +| MipiMode | int | 缺省值:0,模式:
0:DSI_VIDEO_MODE;
1:DSI_CMD_MODE | +| PixelFormat | int | 缺省值:0,像素格式:
0:RGB_PIX_FMT_RGB565;
16:RGB_PIX_FMT_RGB888
32:RGB_PIX_FMT_XRGB888
48:RGB_PIX_FMT_RGBX888 | +| DsiFormat | int | 缺省值:0,DSI格式:
0:DSI_FMT_RGB565;
1:DSI_FMT_RGB666;
2:DSI_FMT_RGB666L;
3:DSI_FMT_RGB888 | +| TransMode | int | 缺省值:3,转换模式:
0:DSI_CMD;
1:DSI_PULSE;
2:DSI_EVENT;
3:DSI_BURST | +| RgbOrder | int | 缺省值:8,RGB顺序:
0:RGB;
8:BGR | +| BllpEnable | bool | 缺省值:true,blank low power 模式使能 | +| HSync | int | 缺省值:10,水平同步 | +| HBP | int | 缺省值:10,水平后肩 | +| HFP | int | 缺省值:10,水平前肩 | +| VSync | int | 缺省值:4,垂直同步 | +| VBP | int | 缺省值:10,垂直后肩 | +| VFP | int | 缺省值:14,垂直前肩 | +| FrameRate | int | 缺省值:60,帧率 | +| TESel | bool | 缺省值:false,TE选择 | +| RstPolarity | int | 缺省值:1,reset极性 | + +**返回值描述:** + + +成功则返回`0`, 失败则报错。 + +**mipi屏引脚说明:** + +| 引脚名 | EC600U系列 | EC200U系列 | +| ------ | ---------- | ---------- | +| CKN | PIN61 | PIN27 | +| CKP | PIN58 | PIN26 | +| D1N | PIN59 | PIN4 | +| D1P | PIN60 | PIN25 | +| D0N | PIN69 | PIN13 | +| D0P | PIN70 | PIN135 | +| FMARK | PIN62 | PIN119 | +| RESET | PIN64 | PIN120 | + +**使用示例:** + +```python +init_480X854 = ( +0x11,0,0, +0xFF,120,5,0x77,0x01,0x00,0x00,0x10, +0xC0,0,2,0xE9,0x03, +0xC1,0,2,0x11,0x02, +0xC2,0,2,0x31,0x08, +0xCC,0,1,0x10, +0xB0,0,16,0x00,0x0D,0x14,0x0D,0x10,0x05,0x02,0x08,0x08,0x1E,0x05,0x13,0x11,0xA3,0x29,0x18, +0xB1,0,16,0x00,0x0C,0x14,0x0C,0x10,0x05,0x03,0x08,0x07,0x20,0x05,0x13,0x11,0xA4,0x29,0x18, +0xFF,0,5,0x77,0x01,0x00,0x00,0x11, +0xB0,0,1,0x6C, +0xB1,0,1,0x43, +0xB2,0,1,0x07, +0xB3,0,1,0x80, +0xB5,0,1,0x47, +0xB7,0,1,0x85, +0xB8,0,1,0x20, +0xB9,0,1,0x10, +0xC1,0,1,0x78, +0xC2,0,1,0x78, +0xD0,0,1,0x88, +0xE0,100,3,0x00,0x00,0x02, +0xE1,0,11,0x08,0x00,0x0A,0x00,0x07,0x00,0x09,0x00,0x00,0x33,0x33, +0xE2,0,13,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, +0xE3,0,4,0x00,0x00,0x33,0x33, +0xE4,0,2,0x44,0x44, +0xE5,0,16,0x0E,0x60,0xA0,0xA0,0x10,0x60,0xA0,0xA0,0x0A,0x60,0xA0,0xA0,0x0C,0x60,0xA0,0xA0, +0xE6,0,4,0x00,0x00,0x33,0x33, +0xE7,0,2,0x44,0x44, +0xE8,0,16,0x0D,0x60,0xA0,0xA0,0x0F,0x60,0xA0,0xA0,0x09,0x60,0xA0,0xA0,0x0B,0x60,0xA0,0xA0, +0xEB,0,7,0x02,0x01,0xE4,0xE4,0x44,0x00,0x40, +0xEC,0,2,0x02,0x01, +0xED,0,16,0xAB,0x89,0x76,0x54,0x01,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0x10,0x45,0x67,0x98,0xBA, +0xFF,0,5,0x77,0x01,0x00,0x00,0x00, +0x3A,0,1,0x77, +0x36,0,1,0x00, +0x35,0,1,0x00, +0x29,0,0 +) +from machine import LCD +mipilcd = LCD() +mipilcd.mipi_init(initbuf=bytearray(init_480X854), TransMode=1) +``` + +### `lcd.lcd_clear` + +``` +lcd.lcd_clear(color) +``` + +该方法用于清除屏幕。 + +**参数描述:** + +- `color` - 需要刷屏的颜色值,16进制。 + +**返回值描述:** + +成功返回`0`, 失败返回`-1`。 + +### `lcd.lcd_write` + +``` +lcd.lcd_write(color_buffer,start_x,start_y,end_x,end_y) +``` + +该方法用于区域写屏。 + +**参数描述:** + +- `Color_buffer` - 屏幕的颜色值缓存,bytearray类型。 +- `start_x` - 起始 x 坐标,int类型。 +- `start_y` - 起始 y 坐标,int类型。 +- `end_x` - 结束 x 坐标,int类型。 +- `end_y` - 结束 y 坐标,int类型。 + +**返回值描述:** + +`0` 表示成功; + +`-1`表示屏幕未初始化; + +`-2` 表示宽度和高度设置错误; + +`-3`表示数据缓存为空。 + +### `lcd.lcd_brightness` + +``` +lcd.lcd_brightness(level) +``` + +该方法用于设置屏幕亮度等级。 + +**参数描述:** + +- `level` - 亮度等级,int类型 ,说明如下:
此处会调用 lcd.lcd_init()中的 lcd_set_brightness回调。若该参数为 None,亮度调节则由背光亮度调节引脚来控制,范围[0,5]。 + +**返回值描述:** + +成功返回`0`, 失败返回`-1`。 + +### `lcd.lcd_display_on` + +``` +lcd.lcd_display_on() +``` + +该方法用于打开屏显 。调用此接口后调用 lcd.lcd_init()中的 lcd_display_on 回调。 + +**返回值描述:** + +成功返回`0`, 失败返回`-1`。 + +### `lcd.lcd_display_off` + +```python +**lcd.lcd_display_off()** +``` + +该方法用于关闭屏显 。调用此接口后调用 lcd.lcd_init()中的 lcd_display_off 回调。 + +**返回值描述:** + +成功返回`0`, 失败返回`-1`。 + +### `lcd.lcd_write_cmd` + +``` +lcd.lcd_write_cmd(cmd_value, cmd_value_len) +``` + +该方法用于写入命令。 + +**参数描述:** + +- `cmd_value` - 命令值 ,16进制 。 +- `cmd_value_len` - 命令值长度,int类型。 + +**返回值描述:** + +成功返回`0`, 失败返回其他值。 + +### `lcd.lcd_write_data` + +```python +lcd.lcd_write_data(data_value, data_value_len) +``` + +该方法用于写入数据。 + +**参数描述:** + +- `data_value` - 数据值,16进制。 +- `data_value_len` - 数据值长度,int类型。 + +**返回值描述:** + +成功返回`0`, 失败返回其他值。 + +### `lcd.lcd_show` + +``` +lcd.lcd_show(file_name, start_x,start_y,width,hight) +``` + +该方法用于采用读文件方式,显示图片。 + +> 注意:该文件是由Image2Lcd工具生成的bin文件。若勾选包含图像头文件,则width和hight无需填写,也可以是jpeg格式图片 + +**参数描述:** + +- `file_name ` - 需要显示的图片名,str类型。 +- `start_x` - 起始x坐标,int类型。 +- `start_y` - 起始y坐标,int类型。 +- `width` - 图片宽度(若图片文件包含的头信息,则该处不填,jpeg格式也不需要填),int类型。 +- `hight` - 图片高度(若图片文件包含的头信息,则该处不填,jpeg格式也不需要填),int类型。 + +**返回值描述:** + +成功返回`0`, 失败返回其他值。 + +### `lcd.lcd_show_jpg` + +```python +lcd.lcd_show_jpg( file_name, start_x,start_y) +``` + +该方法用于采用读文件方式,显示jpeg图片。 + +**参数描述:** + +- `file_name ` - 需要显示的图片名,str类型。 +- `start_x` - 起始x坐标,int类型。 +- `start_y` - 起始y坐标,int类型。 + +**返回值描述:** + +成功返回`0`, 失败返回其他值。 + +**使用示例:** + +> 注意:需要配合LCD屏使用,如下代码以st7789为例! + +```python +from machine import LCD + +# 根据LCD商家给出的相应的初始化示例来填写 +# 第一行:2, 0, 120, 2表示sleep命令,中间恒为0,120表示sleep的毫秒数。收到此行数据,LCD将sleep 120ms +# 第二行:0, 0, 0x11, 0表示写入寄存器地址命令,中间数字表示后续需要写入的DATA长度,0表示没有要写入的数据,0x11是寄存器地址 +# 第三行:0, 1, 0x36, 0表示写入寄存器地址命令,中间数字表示后续需要写入的DATA长度,1表示要写入一字节数据,0x36是寄存器地址 +# 第四行:1, 1, 0x00, 1表示写入数据命令,中间数字表示写入的数据长度,0x00是数据 +# 后面按照前四行的格式将初始化示例填入即可 +init_data = (2, 0, 120, + 0, 0, 0x11, + 0, 1, 0x36, + 1, 1, 0x00, + 0, 1, 0x3A, + 1, 1, 0x05, + 0, 0, 0x21, + 0, 5, 0xB2, + 1, 1, 0x05, + 1, 1, 0x05, + 1, 1, 0x00, + 1, 1, 0x33, + 1, 1, 0x33, + 0, 1, 0xB7, + 1, 1, 0x23, + 0, 1, 0xBB, + 1, 1, 0x22, + 0, 1, 0xC0, + 1, 1, 0x2C, + 0, 1, 0xC2, + 1, 1, 0x01, + 0, 1, 0xC3, + 1, 1, 0x13, + 0, 1, 0xC4, + 1, 1, 0x20, + 0, 1, 0xC6, + 1, 1, 0x0F, + 0, 2, 0xD0, + 1, 1, 0xA4, + 1, 1, 0xA1, + 0, 1, 0xD6, + 1, 1, 0xA1, + 0, 14, 0xE0, + 1, 1, 0x70, + 1, 1, 0x06, + 1, 1, 0x0C, + 1, 1, 0x08, + 1, 1, 0x09, + 1, 1, 0x27, + 1, 1, 0x2E, + 1, 1, 0x34, + 1, 1, 0x46, + 1, 1, 0x37, + 1, 1, 0x13, + 1, 1, 0x13, + 1, 1, 0x25, + 1, 1, 0x2A, + 0, 14, 0xE1, + 1, 1, 0x70, + 1, 1, 0x04, + 1, 1, 0x08, + 1, 1, 0x09, + 1, 1, 0x07, + 1, 1, 0x03, + 1, 1, 0x2C, + 1, 1, 0x42, + 1, 1, 0x42, + 1, 1, 0x38, + 1, 1, 0x14, + 1, 1, 0x14, + 1, 1, 0x27, + 1, 1, 0x2C, + 0, 0, 0x29, + 0, 1, 0x36, + 1, 1, 0x00, + 0, 4, 0x2a, + 1, 1, 0x00, + 1, 1, 0x00, + 1, 1, 0x00, + 1, 1, 0xef, + 0, 4, 0x2b, + 1, 1, 0x00, + 1, 1, 0x00, + 1, 1, 0x00, + 1, 1, 0xef, + 0, 0, 0x2c,) + +display_on_data = ( + 0, 0, 0x11, + 2, 0, 20, + 0, 0, 0x29, +) +display_off_data = ( + 0, 0, 0x28, + 2, 0, 120, + 0, 0, 0x10, +) +# 设置区域参数 +XSTART_H = 0xf0 +XSTART_L = 0xf1 +YSTART_H = 0xf2 +YSTART_L = 0xf3 +XEND_H = 0xE0 +XEND_L = 0xE1 +YEND_H = 0xE2 +YEND_L = 0xE3 +invalid_data = ( + 0, 4, 0x2a, + 1, 1, XSTART_H, + 1, 1, XSTART_L, + 1, 1, XEND_H, + 1, 1, XEND_L, + 0, 4, 0x2b, + 1, 1, YSTART_H, + 1, 1, YSTART_L, + 1, 1, YEND_H, + 1, 1, YEND_L, + 0, 0, 0x2c, +) + +lcd = LCD() +init_list = bytearray(init_data) +display_on_list = bytearray(display_on_data) +display_off_list = bytearray(display_off_data) +invalid_list = bytearray(invalid_data) + + +lcd.lcd_init(init_list, 240,240,13000,1,4,0,invalid_list,display_on_list,display_off_list,None) + +Color_buffer =(0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f, 0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00,0x1f,0x00, 0x1f) + +Color_buffer = bytearray(Color_buffer) + +lcd.lcd_write(Color_buffer,10,10,20,20) +lcd.lcd_clear(0xf800) # 红色 + +lcd.lcd_show("lcd_test.bin",0,0) #该lcd_test.bin 中包含图像头数据 +lcd.lcd_show("lcd_test1.bin",0,0,126,220) #该lcd_test1.bin 中没有包含图像头数据 +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" index 284e9f2f..7ebfa61f 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" @@ -1,32 +1,28 @@ -# class Pin - I/O引脚控制 +# `class Pin` - 控制I/O引脚 -Pin对象用来控制I/O引脚(以GPIO为大家所熟知)。Pin对象一般与一个物理引脚关联,可以驱动输出电平或读取电平。Pin类提供方法来设置引脚的模式、设置或获取引脚逻辑电平。对模拟引脚的控制,参考[ADC](http://docs.micropython.org/en/latest/esp32/quickref.html#ADC)类。 - -Pin对象是通过制定具体I/O引脚的标识符来构造的。这个标识符可能是与端口或引脚编号相关的整数、字符串或元组。 +类功能:GPIO读写操作。引脚是控制I/O引脚的基本对象,它有设置引脚的模式(输入,输出等)、获取和设置数字逻辑电平的方法。 **示例:** ```python from machine import Pin -# create an output pin on pin #0 -p0 = Pin(0, Pin.OUT) - -# set the value low then high -p0.value(0) -p0.value(1) +# 创建gpio对象 +gpio1 = Pin(Pin.GPIO1, Pin.OUT, Pin.PULL_DISABLE, 0) -# create an input pin on pin #2, with a pull up resistor -p2 = Pin(2, Pin.IN, Pin.PULL_UP) +# 获取引脚电平 +gpio1.read() -# read and print the pin value -print(p2.value()) +# 设置引脚电平 +gpio1.write(0) +gpio1.write(1) -# reconfigure pin #0 in input mode with a pull down resistor -p0.init(p0.IN, p0.PULL_DOWN) +# 设置输入输出模式 +gpio1.set_dir(Pin.IN) +gpio1.set_dir(Pin.OUT) -# configure an irq callback -p0.irq(lambda p:print(p)) +# 获取输入输出模式 +gpio1.get_dir() ``` ## 构造函数 @@ -34,58 +30,225 @@ p0.irq(lambda p:print(p)) ### `machine.Pin` ```python -class machine.Pin(id, mode=- 1, pull=- 1, *, value=None, drive=0, alt=- 1) +class machine.Pin(GPIOn, direction, pullMode, level) ``` -创建Pin对象,以访问关联给定`id`的引脚外设。若额外的参数被传入构造函数,则用于初始化该引脚。任何没有指定的参数,将保持之前的状态。 - **参数描述:** -- `id` - 引脚标识,int型表示引脚编号,str型表示引脚名称,tuple型表示([port, pin],);点此查看引脚编号与物理引脚的映射关系。 -- `mode` - 引脚输入输出模式,`Pin.IN`:输入模式,`Pin.OUT`:输出模式。 +- `GPIOn` - GPIO号,int类型,点此查看引脚编号与物理引脚的映射关系。 +- `direction` - 输入输出模式,int类型,`IN` - 输入模式,`OUT` - 输出模式。 +- `pullMode` - 上下拉模式,int类型,说明如下:
`PULL_DISABLE` - 浮空模式
`PULL_PU` - 上拉模式
`PULL_PD` - 下拉模式 - 引脚编号与物理引脚的映射关系: +- `level` - 引脚电平,int类型,`0` - 设置引脚为低电平, `1`- 设置引脚为高电平。 + +**示例:** - |引脚编号|引脚名称|物理引脚脚序| - |---|---|---| - |`Pin.GPIO0`|`"gpio0"`|`10`| - |`Pin.GPIO0`|`"gpio0"`|`10`| - |`Pin.GPIO0`|`"gpio0"`|`10`| +```python +>>> from machine import Pin +>>> # 创建gpio对象 +>>> gpio1 = Pin(Pin.GPIO1, Pin.OUT, Pin.PULL_DISABLE, 0) +``` +**引脚编号与物理引脚的映射关系:** + +> GPIO对应引脚号说明:文档中提供的GPIO引脚号对应的为模块外部的引脚编号,例如EC100YCN下GPIO1对应引脚号22,这里的引脚号22为模块外部的引脚编号。可参考提供的硬件资料查看模块外部的引脚编号。 + +
+ EC100Y平台引脚对应关系
+GPIO1 – 引脚号22
GPIO2 – 引脚号23
GPIO3 – 引脚号38
GPIO4 – 引脚号53
GPIO5 – 引脚号54
GPIO6 – 引脚号104
GPIO7 – 引脚号105
GPIO8 – 引脚号106
GPIO9 – 引脚号107
GPIO10 – 引脚号178
GPIO11 – 引脚号195
GPIO12 – 引脚号196
GPIO13 – 引脚号197
GPIO14 – 引脚号198
GPIO15 – 引脚号199
GPIO16 – 引脚号203
GPIO17 – 引脚号204
GPIO18 – 引脚号214
GPIO19 – 引脚号215
+
+ +
+ EC600S/EC600N平台引脚对应关系 +GPIO1 – 引脚号10
GPIO2 – 引脚号11
GPIO3 – 引脚号12
GPIO4 – 引脚号13
GPIO5 – 引脚号14
GPIO6 – 引脚号15
GPIO7 – 引脚号16
GPIO8 – 引脚号39
GPIO9 – 引脚号40
GPIO10 – 引脚号48
GPIO11 – 引脚号58
GPIO12 – 引脚号59
GPIO13 – 引脚号60
GPIO14 – 引脚号61
GPIO15 – 引脚号62
GPIO16 – 引脚号63
GPIO17 – 引脚号69
GPIO18 – 引脚号70
GPIO19 – 引脚号1
GPIO20 – 引脚号3
GPIO21 – 引脚号49
GPIO22 – 引脚号50
GPIO23 – 引脚号51
GPIO24 – 引脚号52
GPIO25 – 引脚号53
GPIO26 – 引脚号54
GPIO27 – 引脚号55
GPIO28 – 引脚号56
GPIO29 – 引脚号57
GPIO30 – 引脚号2
GPIO31 – 引脚号66
GPIO32 – 引脚号65
GPIO33 – 引脚号67
GPIO34 – 引脚号64
GPIO35 – 引脚号4
GPIO36 – 引脚号31
GPIO37 – 引脚号32
GPIO38 – 引脚号33
GPIO39 – 引脚号34
GPIO40 – 引脚号71
GPIO41 – 引脚号72
+
+ +
+ EC600M平台引脚对应关系 +GPIO1 – 引脚号10
GPIO2 – 引脚号11
GPIO3 – 引脚号12
GPIO4 – 引脚号13
GPIO5 – 引脚号14
GPIO6 – 引脚号15
GPIO7 – 引脚号16
GPIO8 – 引脚号39
GPIO9 – 引脚号40
GPIO10 – 引脚号48
GPIO11 – 引脚号58
GPIO12 – 引脚号59
GPIO13 – 引脚号60
GPIO14 – 引脚号61
GPIO15 – 引脚号62
GPIO16 – 引脚号63
GPIO17 – 引脚号69
GPIO18 – 引脚号70
GPIO19 – 引脚号1
GPIO20 – 引脚号3
GPIO21 – 引脚号49
GPIO22 – 引脚号50
GPIO23 – 引脚号51
GPIO24 – 引脚号52
GPIO25 – 引脚号53
GPIO26 – 引脚号54
GPIO27 – 引脚号55
GPIO28 – 引脚号56
GPIO29 – 引脚号57
GPIO30 – 引脚号2
GPIO31 – 引脚号66
GPIO32 – 引脚号65
GPIO33 – 引脚号67
GPIO34 – 引脚号64
GPIO35 – 引脚号4
GPIO36 – 引脚号31
GPIO37 – 引脚号32
GPIO38 – 引脚号33
GPIO39 – 引脚号34
GPIO40 – 引脚号71
GPIO41 – 引脚号72
GPIO42 – 引脚号109
GPIO43 – 引脚号110
GPIO44 – 引脚号112
GPIO45 – 引脚号111
+
+ +
+ EC600U平台引脚对应关系 +GPIO1 – 引脚号61(不可与GPIO31同时为gpio)
GPIO2 – 引脚号58(不可与GPIO32同时为gpio)
GPIO3 – 引脚号34(不可与GPIO41同时为gpio)
GPIO4 – 引脚号60(不可与GPIO34同时为gpio)
GPIO5 – 引脚号69(不可与GPIO35同时为gpio)
GPIO6 – 引脚号70(不可与GPIO36同时为gpio)
GPIO7 – 引脚号123(不可与GPIO43同时为gpio)
GPIO8 – 引脚号118
GPIO9 – 引脚号9
GPIO10 – 引脚号1(不可与GPIO37同时为gpio)
GPIO11 – 引脚号4(不可与GPIO38同时为gpio)
GPIO12 – 引脚号3(不可与GPIO39同时为gpio)
GPIO13 – 引脚号2(不可与GPIO40同时为gpio)
GPIO14 – 引脚号54
GPIO15 – 引脚号57
GPIO16 – 引脚号56
GPIO17 – 引脚号12
GPIO18 – 引脚号33(不可与GPIO42同时为gpio)
GPIO19 – 引脚号124(不可与GPIO44同时为gpio)
GPIO20 – 引脚号122(不可与GPIO45同时为gpio)
GPIO21 – 引脚号121(不可与GPIO46同时为gpio)
GPIO22 – 引脚号48
GPIO23 – 引脚号39
GPIO24 – 引脚号40
GPIO25 – 引脚号49
GPIO26 – 引脚号50
GPIO27 – 引脚号53
GPIO28 – 引脚号52
GPIO29 – 引脚号51
GPIO30 – 引脚号59(不可与GPIO33同时为gpio)
GPIO31 – 引脚号66(不可与GPIO1同时为gpio)
GPIO32 – 引脚号63(不可与GPIO2同时为gpio)
GPIO33 – 引脚号67(不可与GPIO30同时为gpio)
GPIO34 – 引脚号65(不可与GPIO4同时为gpio)
GPIO35 – 引脚号137(不可与GPIO5同时为gpio)
GPIO36 – 引脚号62(不可与GPIO6同时为gpio)
GPIO37 – 引脚号98(不可与GPIO10同时为gpio)
GPIO38 – 引脚号95(不可与GPIO11同时为gpio)
GPIO39 – 引脚号119(不可与GPIO12同时为gpio)
GPIO40 – 引脚号100(不可与GPIO13同时为gpio)
GPIO41 – 引脚号120(不可与GPIO3同时为gpio)
GPIO42 – 引脚号16(不可与GPIO18同时为gpio)
GPIO43 – 引脚号10(不可与GPIO7同时为gpio)
GPIO44 – 引脚号14(不可与GPIO19同时为gpio)
GPIO45 – 引脚号15(不可与GPIO20同时为gpio)
GPIO46 – 引脚号13(不可与GPIO21同时为gpio)
+
+ +
+ EC200U平台引脚对应关系 +GPIO1 – 引脚号27(不可与GPIO31同时为gpio)
GPIO2 – 引脚号26(不可与GPIO32同时为gpio)
GPIO3 – 引脚号24(不可与GPIO33同时为gpio)
GPIO4 – 引脚号25(不可与GPIO34同时为gpio)
GPIO5 – 引脚号13(不可与GPIO17同时为gpio)
GPIO6 – 引脚号135(不可与GPIO36同时为gpio)
GPIO7 – 引脚号136(不可与GPIO44同时为gpio)
GPIO8 – 引脚号133
GPIO9 – 引脚号3(不可与GPIO37同时为gpio)
GPIO10 – 引脚号40(不可与GPIO38同时为gpio)
GPIO11 – 引脚号37(不可与GPIO39同时为gpio)
GPIO12 – 引脚号38(不可与GPIO40同时为gpio)
GPIO13 – 引脚号39(不可与GPIO41同时为gpio)
GPIO14 – 引脚号5
GPIO15 – 引脚号141
GPIO16 – 引脚号142
GPIO17 – 引脚号121(不可与GPIO5同时为gpio)
GPIO18 – 引脚号65(不可与GPIO42同时为gpio)
GPIO19 – 引脚号64(不可与GPIO43同时为gpio)
GPIO20 – 引脚号139(不可与GPIO45同时为gpio)
GPIO21 – 引脚号126(不可与GPIO46同时为gpio)
GPIO22 – 引脚号127(不可与GPIO47同时为gpio)
GPIO23 – 引脚号33
GPIO24– 引脚号31
GPIO25 – 引脚号30
GPIO26 – 引脚号29
GPIO27 – 引脚号28
GPIO28 – 引脚号1
GPIO29 – 引脚号2
GPIO30 – 引脚号4
GPIO31 – 引脚号125(不可与GPIO1同时为gpio)
GPIO32 – 引脚号124(不可与GPIO2同时为gpio)
GPIO33 – 引脚号123(不可与GPIO3同时为gpio)
GPIO34 – 引脚号122(不可与GPIO4同时为gpio)
GPIO35 – 引脚号42
GPIO36 – 引脚号119(不可与GPIO6同时为gpio)
GPIO37 – 引脚号134(不可与GPIO9同时为gpio)
GPIO38– 引脚号132(不可与GPIO10同时为gpio)
GPIO39 – 引脚号131(不可与GPIO11同时为gpio)
GPIO40 – 引脚号130(不可与GPIO12同时为gpio)
GPIO41 – 引脚号129(不可与GPIO13同时为gpio)
GPIO42 – 引脚号61(不可与GPIO18同时为gpio)
GPIO43 – 引脚号62(不可与GPIO19同时为gpio)
GPIO44 – 引脚号63(不可与GPIO7同时为gpio)
GPIO45 – 引脚号66(不可与GPIO20同时为gpio)
GPIO46 – 引脚号6(不可与GPIO21同时为gpio)
GPIO47 – 引脚号23(不可与GPIO22同时为gpio)
+
+ +
+ EC200A平台引脚对应关系 +GPIO1 – 引脚号27
GPIO2 – 引脚号26
GPIO3 – 引脚号24
GPIO4 – 引脚号25
GPIO5 – 引脚号5
GPIO6 – 引脚号135
GPIO7 – 引脚号136
GPIO9 – 引脚号3
GPIO10 – 引脚号40
GPIO11 – 引脚号37
GPIO12 – 引脚号38
GPIO13 – 引脚号39
GPIO18 – 引脚号65
GPIO19 – 引脚号64
GPIO20 – 引脚号139
GPIO22 – 引脚号127
GPIO28 – 引脚号1
GPIO29 – 引脚号2
GPIO30 – 引脚号4
GPIO35 – 引脚号42
GPIO36 – 引脚号119
GPIO43 – 引脚号62
GPIO44 – 引脚号63
GPIO45 – 引脚号66
GPIO46 – 引脚号6
GPIO47 – 引脚号23
+
+ +
+ EC800N平台引脚对应关系 +GPIO1 – 引脚号30
GPIO2 – 引脚号31
GPIO3 – 引脚号32
GPIO4 – 引脚号33
GPIO5 – 引脚号49
GPIO6 – 引脚号50
GPIO7 – 引脚号51
GPIO8 – 引脚号52
GPIO9 – 引脚号53
GPIO10 – 引脚号54
GPIO11 – 引脚号55
GPIO12 – 引脚号56
GPIO13 – 引脚号57
GPIO14 – 引脚号58
GPIO15 – 引脚号80
GPIO16 – 引脚号81
GPIO17 – 引脚号76
GPIO18 – 引脚号77
GPIO19 – 引脚号82
GPIO20 – 引脚号83
GPIO21 – 引脚号86
GPIO22 – 引脚号87
GPIO23 – 引脚号66
GPIO24 – 引脚号67
GPIO25 – 引脚号17
GPIO26 – 引脚号18
GPIO27 – 引脚号19
GPIO28 – 引脚号20
GPIO29 – 引脚号21
GPIO30 – 引脚号22
GPIO31 – 引脚号23
GPIO32 – 引脚号28
GPIO33 – 引脚号29
GPIO34 – 引脚号38
GPIO35 – 引脚号39
GPIO36 – 引脚号16
GPIO37 – 引脚号78
+
+ +
+ BC25PA平台引脚对应关系 +GPIO1 – 引脚号3
GPIO2 – 引脚号4
GPIO3 – 引脚号5
GPIO4 – 引脚号6
GPIO5 – 引脚号16
GPIO6 – 引脚号20
GPIO7 – 引脚号21
GPIO8 – 引脚号22
GPIO9 – 引脚号23
GPIO10 – 引脚号25
GPIO11 – 引脚号28
GPIO12 – 引脚号29
GPIO13 – 引脚号30
GPIO14 – 引脚号31
GPIO15 – 引脚号32
GPIO16 – 引脚号33
GPIO17 – 引脚号2
GPIO18 – 引脚号8
+
+ +
+ BG95M3平台引脚对应关系 +GPIO1 – 引脚号4
GPIO2 – 引脚号5
GPIO3 – 引脚号6
GPIO4 – 引脚号7
GPIO5 – 引脚号18
GPIO6 – 引脚号19
GPIO7 – 引脚号22
GPIO8 – 引脚号23
GPIO9 – 引脚号25
GPIO10 – 引脚号26
GPIO11 – 引脚号27
GPIO12 – 引脚号28
GPIO13 – 引脚号40
GPIO14 – 引脚号41
GPIO15 – 引脚号64
GPIO16 – 引脚号65
GPIO17 – 引脚号66
GPIO18 – 引脚号85
GPIO19 – 引脚号86
GPIO20 – 引脚号87
GPIO21 – 引脚号88
+
+ +
+ EG915U平台引脚对应关系 +GPIO1 – 引脚号4(不可与GPIO41同时为gpio)
GPIO2 – 引脚号5(不可与GPIO36同时为gpio)
GPIO3 – 引脚号6(不可与GPIO35同时为gpio)
GPIO4 – 引脚号7(不可与GPIO24同时为gpio)
GPIO5 – 引脚号18
GPIO6 – 引脚号19
GPIO7 – 引脚号1(不可与GPIO37同时为gpio)
GPIO8 – 引脚号38
GPIO9 – 引脚号25
GPIO10 – 引脚号26
GPIO11 – 引脚号27(不可与GPIO32同时为gpio)
GPIO12 – 引脚号28(不可与GPIO31同时为gpio)
GPIO13 – 引脚号40
GPIO14 – 引脚号41
GPIO15 – 引脚号64
GPIO16 – 引脚号20(不可与GPIO30同时为gpio)
GPIO17 – 引脚号21
GPIO18 – 引脚号85
GPIO19 – 引脚号86
GPIO20 – 引脚号30
GPIO21 – 引脚号88
GPIO22 – 引脚号36(不可与GPIO40同时为gpio)
GPIO23 – 引脚号37(不可与GPIO38同时为gpio)
GPIO24 – 引脚号16(不可与GPIO4同时为gpio)
GPIO25 – 引脚号39
GPIO26 – 引脚号42(不可与GPIO27同时为gpio)
GPIO27 – 引脚号78(不可与GPIO26同时为gpio)
GPIO28 – 引脚号83(不可与GPIO33同时为gpio)
GPIO29 – 引脚号84
GPIO30 – 引脚号92(不可与GPIO16同时为gpio)
GPIO31 – 引脚号95(不可与GPIO12同时为gpio)
GPIO32 – 引脚号97(不可与GPIO11同时为gpio)
GPIO33 – 引脚号98(不可与GPIO28同时为gpio)
GPIO34 – 引脚号104
GPIO35 – 引脚号105(不可与GPIO3同时为gpio)
GPIO36 – 引脚号106(不可与GPIO2同时为gpio)
GPIO37 – 引脚号108(不可与GPIO4同时为gpio)
GPIO38 – 引脚号111(不可与GPIO23同时为gpio)
GPIO39 – 引脚号114
GPIO40 – 引脚号115(不可与GPIO22同时为gpio)
GPIO41 – 引脚号116(不可与GPIO1同时为gpio)
+
+ +
+ EC800M平台引脚对应关系 +GPIO1 – 引脚号30
GPIO2 – 引脚号31
GPIO3 – 引脚号32
GPIO4 – 引脚号33
GPIO5 – 引脚号49
GPIO6 – 引脚号50
GPIO7 – 引脚号51
GPIO8 – 引脚号52
GPIO9 – 引脚号53
GPIO10 – 引脚号54
GPIO11 – 引脚号55
GPIO12 – 引脚号56
GPIO13 – 引脚号57
GPIO14 – 引脚号58
GPIO15 – 引脚号80
GPIO16 – 引脚号81
GPIO17 – 引脚号76
GPIO18 – 引脚号77
GPIO19 – 引脚号82
GPIO20 – 引脚号83
GPIO21 – 引脚号86
GPIO22 – 引脚号87
GPIO23 – 引脚号66
GPIO24 – 引脚号67
GPIO25 – 引脚号17
GPIO26 – 引脚号18
GPIO27 – 引脚号19
GPIO28 – 引脚号20
GPIO29 – 引脚号21
GPIO30 – 引脚号22
GPIO31 – 引脚号23
GPIO32 – 引脚号28
GPIO33 – 引脚号29
GPIO34 – 引脚号38
GPIO35 – 引脚号39
GPIO36 – 引脚号16
GPIO37 – 引脚号78
GPIO38 – 引脚号68
GPIO39 – 引脚号69
GPIO40 – 引脚号74
GPIO41 – 引脚号75
GPIO42 – 引脚号84
GPIO43 – 引脚号85
GPIO44 – 引脚号25
+
+ +
+ EG912N平台引脚对应关系 +GPIO1 – 引脚号4
GPIO2 – 引脚号5
GPIO3 – 引脚号6
GPIO4 – 引脚号7
GPIO5 – 引脚号18
GPIO6 – 引脚号19
GPIO7 – 引脚号1
GPIO8 – 引脚号16
GPIO9 – 引脚号25
GPIO10 – 引脚号26
GPIO11 – 引脚号27
GPIO12 – 引脚号28
GPIO13 – 引脚号40
GPIO14 – 引脚号41
GPIO15 – 引脚号64
GPIO16 – 引脚号20
GPIO17 – 引脚号21
GPIO18 – 引脚号30
GPIO19 – 引脚号34
GPIO20 – 引脚号35
GPIO21 – 引脚号36
GPIO22 – 引脚号37
GPIO23 – 引脚号38
GPIO24 – 引脚号39
GPIO25 – 引脚号42
GPIO26 – 引脚号78
GPIO27 – 引脚号83
GPIO28 – 引脚号92
GPIO29 – 引脚号95
GPIO30 – 引脚号96
GPIO31 – 引脚号97
GPIO32 – 引脚号98
GPIO33 – 引脚号103
GPIO34 – 引脚号104
GPIO35 – 引脚号105
GPIO36 – 引脚号106
GPIO37 – 引脚号107
GPIO38 – 引脚号114
GPIO39 – 引脚号115
GPIO40 – 引脚号116 +
## 方法 -### `Pin.value` +### `Pin.read` ```python -Pin.value([x]) +Pin.read() +``` + +该方法用于读取PIN脚电平。 + +**返回值描述:** + +返回引脚电平,`0`表示获取到的引脚电平为低,`1` 表示获取到的引脚电平为高。 + +### `Pin.write` + +``` +Pin.write(value) ``` -该方法用于设置或读取引脚电平,取决于参数`x`是否提供。 +该方法用于设置PIN脚电平。 + +> 注意:设置高低电平前需要保证引脚为输出模式。 **参数描述:** -- `x` - 提供该参数,用于设置引脚电平;`1` 表示设置引脚电平为高,`0`表示设置引脚电平为低。 +- `value` - 引脚电平,int类型,`0`表示设置当前PIN脚输出低 ,`1`表示设置当前PIN脚输出高 **返回值描述:** -当参数`x`没有提供时,返回引脚电平;`1` 表示获取到的引脚电平为高,`0`表示获取到的引脚电平为低。 +设置成功返回整型值`0`,设置失败返回整型值`-1`。 -## 属性 +**示例:** -### `Pin.attr1` +```python +>>> from machine import Pin +>>> gpio1 = Pin(Pin.GPIO1, Pin.OUT, Pin.PULL_DISABLE, 0) +>>> gpio1.write(1) +0 +>>> gpio1.read() +1 +``` -此处添加属性功能描述。 +### `Pin.set_dir` -### `Pin.attr2` +```python +Pin.set_dir(value) +``` -此处添加属性功能描述。 +该方法用于设置PIN脚GPIO的输入输出模式。 -## 常量 +**参数描述:** + +- `value` - 引脚电平,int类型,`0`表示设置当前PIN脚输出低 ,`1`表示设置当前PIN脚输出高 + +**返回值描述:** + +设置成功返回整型值`0`,设置失败返回其它。 + +### `Pin.get_dir` -### `Pin.IN` +```python +Pin.get_dir() +``` -此处添加常量功能描述。 +该方法用于获取PIN脚GPIO的输入输出模式。 -### `Pin.OUT` +**返回值描述:** + +返回PIN脚输入输出模式,`0`表示输入模式,`1` 表示输出模式。 + +**示例:** + +```python +>>> from machine import Pin +>>> gpio1 = Pin(Pin.GPIO1, Pin.OUT, Pin.PULL_DISABLE, 0) +>>> gpio1.get_dir() +1 +>>> gpio1.set_dir(Pin.IN) +0 +>>> gpio1.get_dir() +0 +``` + +## 常量 -此处添加常量功能描述。 +| 常量 | 适配平台 | 说明 | +| ---------------- | ------------------------------------------------------------ | -------- | +| Pin.GPIO1 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO1 | +| Pin.GPIO2 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO2 | +| Pin.GPIO3 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO3 | +| Pin.GPIO4 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO4 | +| Pin.GPIO5 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO5 | +| Pin.GPIO6 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO6 | +| Pin.GPIO7 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO7 | +| Pin.GPIO8 | EC600S / EC600N / EC100Y/EC600U/EC200U/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO8 | +| Pin.GPIO9 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO9 | +| Pin.GPIO10 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO10 | +| Pin.GPIO11 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO11 | +| Pin.GPIO12 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO12 | +| Pin.GPIO13 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO13 | +| Pin.GPIO14 | EC600S / EC600N / EC100Y/EC600U/EC200U/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO14 | +| Pin.GPIO15 | EC600S / EC600N / EC100Y/EC600U/EC200U/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO15 | +| Pin.GPIO16 | EC600S / EC600N / EC100Y/EC600U/EC200U/BC25PA/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO16 | +| Pin.GPIO17 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC800N/BC25PA/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO17 | +| Pin.GPIO18 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/EC800N/BC25PA/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO18 | +| Pin.GPIO19 | EC600S / EC600N / EC100Y/EC600U/EC200U/EC200A/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO19 | +| Pin.GPIO20 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO20 | +| Pin.GPIO21 | EC600S / EC600N/EC600U/EC200U/EC800N/BG95M3/EC600M/EG915U/EC800M/EG912N | GPIO21 | +| Pin.GPIO22 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO22 | +| Pin.GPIO23 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO23 | +| Pin.GPIO24 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO24 | +| Pin.GPIO25 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO25 | +| Pin.GPIO26 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO26 | +| Pin.GPIO27 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO27 | +| Pin.GPIO28 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO28 | +| Pin.GPIO29 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO29 | +| Pin.GPIO30 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO30 | +| Pin.GPIO31 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO31 | +| Pin.GPIO32 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO32 | +| Pin.GPIO33 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO33 | +| Pin.GPIO34 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO34 | +| Pin.GPIO35 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO35 | +| Pin.GPIO36 | EC600S / EC600N/EC600U/EC200U/EC200A/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO36 | +| Pin.GPIO37 | EC600S / EC600N/EC600U/EC200U/EC800N/EC600M/EG915U/EC800M/EG912N | GPIO37 | +| Pin.GPIO38 | EC600S / EC600N/EC600U/EC200U/EC600M/EG915U/EC800M/EG912N | GPIO38 | +| Pin.GPIO39 | EC600S / EC600N/EC600U/EC200U/EC600M/EG915U/EC800M/EG912N | GPIO39 | +| Pin.GPIO40 | EC600S / EC600N/EC600U/EC200U/EC600M/EG915U/EC800M/EG912N | GPIO40 | +| Pin.GPIO41 | EC600S / EC600N/EC600U/EC200U/EC600M/EG915U/EC800M | GPIO41 | +| Pin.GPIO42 | EC600U/EC200U/EC600M/EC800M | GPIO42 | +| Pin.GPIO43 | EC600U/EC200U/EC200A/EC600M/EC800M | GPIO43 | +| Pin.GPIO44 | EC600U/EC200U/EC200A/EC600M/EC800M | GPIO44 | +| Pin.GPIO45 | EC600U/EC200U/EC200A/EC600M | GPIO45 | +| Pin.GPIO46 | EC600U/EC200U/EC200A | GPIO46 | +| Pin.GPIO47 | EC200U/EC200A | GPIO47 | +| Pin.IN | -- | 输入模式 | +| Pin.OUT | -- | 输出模式 | +| Pin.PULL_DISABLE | -- | 浮空模式 | +| Pin.PULL_PU | -- | 上拉模式 | +| Pin.PULL_PD | -- | 下拉模式 | diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.RTC.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.RTC.md" new file mode 100644 index 00000000..13c452e5 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.RTC.md" @@ -0,0 +1,147 @@ +# class RTC – 实时时钟 + +类功能:提供获取设置rtc时间方法,对于BC25PA平台起到从深休眠或者软件关机状态唤醒模组的功能。 + +## 构造函数 + +### `machine.RTC` + +```python +class machine.RTC() +``` + +**示例:** + +```python +# 创建RTC对象 +>>>from machine import RTC +>>>rtc = RTC() +``` + +## 方法 + +### `rtc.datetime` + +```python +rtc.datetime([year, month, day, week, hour, minute, second, microsecond]) +``` + +该方法用于设置和获取RTC时间。不带参数时,则用于获取时间,带参数则是设置时间;设置时间的时候,参数week不参与设置,microsecond参数保留,暂未使用,默认是0。 + +**参数:** + +- `year` - 年,int类型。 +- `month` - 月,int类型,范围1 ~ 12。 +- `day` - 日,int类型,范围1 ~ 31。 +- `week` - 星期,int类型,范围0 ~ 6,其中0表示周日,1 ~ 6分别表示周一到周六;设置时间时,该参数不起作用,保留;获取时间时该参数有效。 +- `hour` - 时,int类型,范围0 ~ 23。 +- `minute` - 分,int类型,范围0 ~ 59。 +- `second` - 秒,int类型,范围0 ~ 59。 +- `microsecond` - 微秒,int类型,保留参数,暂未使用,设置时间时该参数写0即可。 + +**返回值:** + +获取时间时,返回一个元组,包含日期时间,格式如下:
`[year, month, day, week, hour, minute, second, microsecond]` + +设置时间时,设置成功返回整型值`0`,设置失败返回整型值`-1` 。 + +**示例:** + +```python +>>> from machine import RTC +>>> rtc = RTC() +>>> rtc.datetime() +(2020, 9, 11, 5, 15, 43, 23, 0) +>>> rtc.datetime([2020, 3, 12, 1, 12, 12, 12, 0]) +0 +>>> rtc.datetime() +(2020, 3, 12, 4, 12, 12, 14, 0) + +``` + +### `rtc.set_alarm` + +```python +rtc.set_alarm(data_e) +``` + +该方法用于设置RTC到期时间,当到了到期时间就会调用注册的回调函数。 + +> 注:支持平台EC600U/EC200U/EC600N/EC800N/BC25 + +**参数:** + +- `year` - 年,int类型。 +- `month` - 月,int类型,范围1 ~ 12。 +- `day` - 日,int类型,范围1 ~ 31。 +- `week` - 星期,int类型,范围0 ~ 6,其中0表示周日,1 ~ 6分别表示周一到周六;设置时间时,该参数不起作用,保留;获取时间时该参数有效。 +- `hour` - 时,int类型,范围0 ~ 23。 +- `minute` - 分,int类型,范围0 ~ 59。 +- `second` - 秒,int类型,范围0 ~ 59。 +- `microsecond` - 微秒,int类型,保留参数,暂未使用,设置时间时该参数写0即可。 + +**返回值:** + +设置成功返回整型值`0`,设置失败返回整型值`-1` 。 + +**示例:** + +```python +>>> data_e=rtc.datetime() +>>> data_l=list(data_e) +>>> data_l[6] +=30 +>>> data_e=tuple(data_l) +>>> rtc.set_alarm(data_e) +0 +``` + +### `rtc.register_callback` + +```python +rtc.register_callback(fun) +``` + +该方法用于注册RTC alarm回调处理函数。 + +> 注:支持平台EC600U/EC200U/EC600N/EC800N/BC25 + +**参数:** + +- `fun` - RTC alarm回调处理函数,function类型。 + +**返回值:** + +注册成功返回整型值`0`,注册失败返回整型值`-1` 。 + +### `rtc.enable_alarm` + +```python +rtc.enable_alarm(on_off) +``` + +该方法用于打开/关闭RTC alarm功能 + +> 注:支持平台EC600U/EC200U/EC600N/EC800N/BC25,BC25PA平台只有设置回调函数,才能启动定时器. + +**参数:** + +- `on_off` - `1`表示打开RTC alarm功能,`0`表示关闭RTC alarm功能,int类型。 + +**返回值:** + +打开/关闭成功返回整型值`0`,打开/关闭失败返回整型值`-1` 。 + +**示例:** + +```python +from machine import RTC +rtc = RTC() +def callback(args): + print('RTC alarm') + +rtc.register_callback(callback) +rtc.set_alarm([2021, 7, 9, 5, 12, 30, 0, 0]) +rtc.enable_alarm(1) +``` + +> 注意:EC600U/EC200U平台支持自动开机,即设置alarm功能之后将模块关机,alarm时间到了之后可以自动开机。其他平台不支持该特性。 diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" new file mode 100644 index 00000000..818f06fc --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" @@ -0,0 +1,136 @@ +# class SPI – SPI通信 + +类功能:串行外设接口总线协议。 + +## 构造函数 + +### `machine.SPI` + +```python +class machine.SPI(port, mode, clk) +``` + +**参数说明:** + +- `port` - 通道选择[0,1],int类型。 + +- `mode` - SPI 的工作模式(模式0最常用),说明如下:
时钟极性CPOL:即SPI空闲时,时钟信号SCLK的电平(0:空闲时低电平; 1:空闲时高电平)
0 : CPOL=0, CPHA=0
1 : CPOL=0, CPHA=1
2: CPOL=1, CPHA=0
3: CPOL=1, CPHA=1 + +- `clk` - 时钟频率,说明如下:
EC600N/EC600S/EC800N/BG95M3/EC600M/EC800M/EG912N:
0 : 812.5kHz
1 : 1.625MHz
2 : 3.25MHz
3 : 6.5MHz
4 : 13MHz
5 : 26MHz
6:52MHz
EC600U/EC200U/EG915U:
0 : 781.25KHz
1 : 1.5625MHz
2 : 3.125MHz
3 : 5MHz
4 : 6.25MHz
5 : 10MHz
6 : 12.5MHz
7 : 20MHz
8 : 25MHz
9 : 33.33MHz
BC25PA:
0 :5MHz
X : XMHz (X in [1,39]) + + +> 注意:BC25PA平台不支持1、2模式。 + +**示例:** + +```python +from machine import SPI +# 创建SPI对象 +spi_obj = SPI(1, 0, 1) # 返回spi对象 +``` + +**引脚说明:** + +| 平台 | 引脚 | +| ------------- | ------------------------------------------------------------ | +| EC600U | port0:
CS:引脚号4
CLK:引脚号1
MOSI:引脚号3
MISO:引脚号2
port1:
CS:引脚号58
CLK:引脚号61
MOSI:引脚号59
MISO:引脚号60 | +| EC200U | port0:
CS:引脚号134
CLK:引脚号133
MOSI:引脚号132
MISO:引脚号131
port1:
CS:引脚号26
CLK:引脚号27
MOSI:引脚号24
MISO:引脚号25 | +| EC600S/EC600N | port0:
CS:引脚号58
CLK:引脚号61
MOSI:引脚号59
MISO:引脚号60
port1:
CS:引脚号4
CLK:引脚号1
MOSI:引脚号3
MISO:引脚号2 | +| EC100Y | port0:
CS:引脚号25
CLK:引脚号26
MOSI:引脚号27
MISO:引脚号28
port1:
CS:引脚号105
CLK:引脚号104
MOSI:引脚号107
MISO:引脚号106 | +| EC800N | port0:
CS:引脚号31
CLK:引脚号30
MOSI:引脚号32
MISO:引脚号33
port1:
CS:引脚号52
CLK:引脚号53
MOSI:引脚号50
MISO:引脚号51 | +| BC25PA | port0:
CS:引脚号6
CLK:引脚号5
MOSI:引脚号4
MISO:引脚号3 | +| BG95M3 | port0:
CS:引脚号25
CLK:引脚号26
MOSI:引脚号27
MISO:引脚号28
port1:
CS:引脚号41
CLK:引脚号40
MOSI:引脚号64
MISO:引脚号65 | +| EC600M | port0:
CS:引脚号58
CLK:引脚号61
MOSI:引脚号59
MISO:引脚号60
port1:
CS:引脚号4
CLK:引脚号1
MOSI:引脚号3
MISO:引脚号2 | +| EG915U | port0:
CS:引脚号25
CLK:引脚号26
MOSI:引脚号64
MISO:引脚号88 | +| EC800M | port0:
CS:引脚号31
CLK:引脚号30
MOSI:引脚号32
MISO:引脚号33
port1:
CS:引脚号52
CLK:引脚号53
MOSI:引脚号50
MISO:引脚号51 | +| EG912N | port0:
CS:引脚号25
CLK:引脚号26
MOSI:引脚号27
MISO:引脚号28
port1:
CS:引脚号5
CLK:引脚号4
MOSI:引脚号6
MISO:引脚号7 | + +## 方法 + +### `SPI.read` + +```python +SPI.read(recv_data, datalen) +``` + +该方法用于读取数据。 + +**参数说明:** + +- `recv_data` - 接收读取数据的数组,bytearray类型。 +- `datalen` - 读取数据的长度,int类型。 + +**返回值:** + +失败返回整型值`-1`。 + +### `SPI.write` + +```python +SPI.write(data, datalen) +``` + +该方法用于写入数据。 + +**参数说明:** + +- `data` - 写入的数据,bytes类型。 +- `datalen` - 写入的数据长度,int类型。 + +**返回值:** + +失败返回整型值`-1`。 + +### `SPI.write_read` + +```python +SPI.write_read(r_data,data, datalen) +``` + +该方法用于写入和读取数据。 + +**参数说明:** + +- `r_data ` - 接收读取数据的数组,bytearray类型。 +- `data` - 发送的数据,bytes类型。 +- `datalen` - 读取数据的长度,int类型。 + +**返回值:** + +失败返回整型值`-1`。 + +**使用示例:** + +> 注意:需要配合外设使用! + +```python +import log +from machine import SPI +import utime + +''' +SPI使用示例 +适配版本:EC100Y(V0009)及以上;EC600S(V0002)及以上 +''' + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_SPI_example" +PROJECT_VERSION = "1.0.0" + +spi_obj = SPI(0, 0, 1) + +# 设置日志输出级别 +log.basicConfig(level=log.INFO) +spi_log = log.getLogger("SPI") + + +if __name__ == '__main__': + r_data = bytearray(5) # 创建接收数据的buff + data = b"world" # 写入测试数据 + + ret = spi_obj.write_read(r_data, data, 5) # 写入数据并接收 + spi_log.info(r_data) + +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" new file mode 100644 index 00000000..e25ae6ac --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" @@ -0,0 +1,133 @@ +# `class Timer` - 硬件定时器 + +类功能:硬件定时器。 + +> 注意:使用该定时器时需注意定时器0-3,每个在同一时间内只能执行一件任务,且多个对象不可使用同一个定时器。 + +## 构造函数 + +### `machine.Timer` + +```python +class machine.Timer(Timern) +``` + +**参数:** + +- `Timern` - 定时器号,int类型,支持定时器Timer0 ~ Timer3。 + +**示例:** + +```python +# 使用该定时器时需注意:定时器0-3,每个在同一时间内只能执行一件任务,且多个对象不可使用同一个定时器。 +from machine import Timer +# 创建Timer对象 +timer1 = Timer(Timer.Timer1) +``` + +## 方法 + +### `timer.start` + +```python +timer.start(period, mode, callback) +``` + +该方法用于启动定时器。 + +**参数:** + +- `period` - 中断周期,int类型,单位毫秒,大于等于1。 + +- `mode` - 运行模式,int类型,说明如下:
`Timer.ONE_SHOT` - 单次模式,定时器只执行一次
`Timer.PERIODIC` - 周期模式,循环执行 + +- `callback` - 定时器执行函数,function类型。 + +**返回值:** + +启动成功返回整型值`0`,失败返回整型值`-1`。 + +**示例:** + +```python +# 使用该定时器时需注意:定时器0-3,每个在同一时间内只能执行一件任务,且多个对象不可使用同一个定时器。 +>>> def fun(args): + print(“###timer callback function###”) +>>> timer1.start(period=1000, mode=timer1.PERIODIC, callback=fun) +0 +###timer callback function### +###timer callback function### +###timer callback function### +…… +``` + +### `timer.stop` + +```python +timer.stop() +``` + +该方法用于关闭定时器。 + +**返回值:** + +成功返回整型值`0`,失败返回整型值`-1`。 + +**使用示例**: + +```python +''' +@Author: Baron +@Date: 2020-06-17 +@LastEditTime: 2020-06-17 17:06:08 +@Description: example for module timer +@FilePath: example_timer_file.py +''' +import log +import utime +from machine import Timer +import checkNet + + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_Timer_example" +PROJECT_VERSION = "1.0.0" + +# 设置日志输出级别 +log.basicConfig(level=log.INFO) +Timer_Log = log.getLogger("Timer") + +num = 0 +state = 1 +# 注:EC100YCN支持定时器Timer0 ~ Timer3 +t = Timer(Timer.Timer1) + +# 创建一个执行函数,并将timer实例传入 +def timer_test(t): + global num + global state + Timer_Log.info('num is %d' % num) + num += 1 + if num > 10: + Timer_Log.info('num > 10, timer exit') + state = 0 + t.stop() # 结束该定时器实例 + + +if __name__ == '__main__': + t.start(period=1000, mode=t.PERIODIC, callback=timer_test) # 启动定时器 +``` + +## 常量 + +| 常量 | 说明 | +| -------------- | -------------------------- | +| Timer.Timer0 | 定时器0 | +| Timer.Timer1 | 定时器1 | +| Timer.Timer2 | 定时器2 | +| Timer.Timer3 | 定时器3 | +| Timer.ONE_SHOT | 单次模式,定时器只执行一次 | +| Timer.PERIODIC | 周期模式,定时器循环执行 | + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" new file mode 100644 index 00000000..a363f115 --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" @@ -0,0 +1,270 @@ +# `class UART` - 串口通信 + +类功能:uart串口数据传输。 + +## 构造函数 + +### `machine.UART` + +```python +class machine.UART(UART.UARTn, buadrate, databits, parity, stopbits, flowctl) +``` + +**参数描述:** + +- `UARTn` - UART编号,int类型,UARTn说明如下:
UART0 - DEBUG PORT
UART1 – BT PORT
UART2 – MAIN PORT
UART3 – USB CDC PORT (BG95M3 不支持)
UART4 – STDOUT PORT (仅支持EC200U/EC600U/EG915U) + +- `buadrate` - 波特率,int类型,常用波特率都支持,如`4800`、`9600`、`19200`、`38400`、`57600`、`115200`、`230400`等。 +- `databits` - 数据位(5 ~ 8),int类型,展锐平台当前仅支持8位。 +- `parity` - 奇偶校验(`0` – NONE,`1` – EVEN,`2` - ODD),int类型。 +- `stopbits` - 停止位(1 ~ 2),int类型。 +- `flowctl` - 硬件控制流(`0` – FC_NONE, `1` – FC_HW),int类型。 + +**引脚对应关系 :** + +| 平台 | | +| ------------- | ------------------------------------------------------------ | +| EC600U | uart1:
TX: 引脚号124
RX: 引脚号123
uart2:
TX:引脚号32
RX:引脚号31
uart4:
TX:引脚号103
RX:引脚号104 | +| EC200U | uart1:
TX: 引脚号138
RX: 引脚号137
uart2:
TX:引脚号67
RX:引脚号68
uart4:
TX:引脚号82
RX:引脚号81 | +| EC200A | uart1:
TX: 引脚号63
RX: 引脚号66
uart2:
TX:引脚号67
RX:引脚号68 | +| EC600S/EC600N | uart0:
TX: 引脚号71
RX: 引脚号72
uart1:
TX: 引脚号3
RX: 引脚号2
uart2:
TX:引脚号32
RX:引脚号31 | +| EC100Y | uart0:
TX: 引脚号21
RX: 引脚号20
uart1:
TX: 引脚号27
RX: 引脚号28
uart2:
TX:引脚号50
RX:引脚号49 | +| EC800N | uart0:
TX: 引脚号39
RX: 引脚号38
uart1:
TX: 引脚号50
RX: 引脚号51
uart2:
TX:引脚号18
RX:引脚号17 | +| BC25PA | uart1:
TX: 引脚号29
RX: 引脚号28 | +| BG95M3 | uart0:
TX: 引脚号23
RX: 引脚号22
uart1:
TX:引脚号27
RX:引脚号28
uart2:
TX: 引脚号64
RX: 引脚号65 | +| EC600M | uart0:
TX: 引脚号71
RX: 引脚号72
uart1(不开启流控):
TX: 引脚号3
RX: 引脚号2
uart1(开启流控):
TX: 引脚号33
RX: 引脚号34
uart2:
TX:引脚号32
RX:引脚号31 | +| EG915U | uart1:
TX: 引脚号27
RX: 引脚号28
uart2:
TX:引脚号35
RX:引脚号34
uart4:
TX:引脚号19
RX:引脚号18 | +| EC800M | uart0:
TX: 引脚号39
RX: 引脚号38
uart1(不开启流控):
TX: 引脚号50
RX: 引脚号51
uart1(开启流控):
TX: 引脚号22
RX: 引脚号23
注:EC800MCN_GA uart1不可用
uart2:
TX:引脚号18
RX:引脚号17 | +| EG912N | uart0:
TX: 引脚号23
RX: 引脚号22
uart1(不开启流控):
TX: 引脚号27
RX: 引脚号28
uart1(开启流控):
TX: 引脚号36
RX: 引脚号37
uart2:
TX:引脚号34
RX:引脚号35 | + +**示例:** + +```python +>>> from machine import UART +>>> # 创建uart对象 +>>> uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0) +``` + +## 方法 + +### `uart.any` + +```python +uart.any() +``` + +该方法用于获取接收缓存未读数据大小 + +**返回值描述:** + +返回接收缓存器中有多少字节的数据未读。 + +**示例:** + +```python +>>> uart.any() +20 #表示接收缓冲区中有20字节数据未读 +``` + +### `uart.read` + +```python +uart.read(nbytes) +``` + +该方法用于从串口读取数据。 + +**参数描述:** + +- `nbytes` - 要读取的字节数,int类型。 + +**返回值描述:** + +返回读取的数据。 + +### `uart.write` + +```python +uart.write(data) +``` + +该方法用于发送数据到串口。 + +**参数描述:** + +- `data` - 发送的数据,buf/string类型。 + +**返回值描述:** + +返回发送的字节数。 + +### `uart.close` + +```python +uart.close() +``` + +该方法用于关闭串口。 + +**返回值描述:** + +成功返回整型`0`,失败返回整型`-1`。 + +### `uart.control_485` + +```python +art.control_485(UART.GPIOn, direction) +``` + +该方法用于控制485通信方向,串口发送数据之前和之后进行拉高拉低指定GPIO,用来指示485通信的方向。 + +**参数描述:** + +- `GPIOn` - 需要控制的GPIO引脚号,参照Pin模块的引脚定义,int类型。 + +- `direction` - 引脚电平变化,int类型,说明如下:
`1`表示引脚电平变化为:串口发送数据之前由低拉高、发送数据之后再由高拉低
`0`表示引脚电平变化为:串口发送数据之前由高拉低、发送数据之后再由低拉高 + +**返回值描述:** + +成功返回整型`0`,失败返回整型`-1`。 + +> 注意:BC25PA平台不支持此方法。 + +**示例:** + +```python +>>> from machine import UART +>>> uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0) +>>> uart1.control_485(UART.GPIO24, 1) +``` + +### `uart.set_callback` + +```python +uart.set_callback(fun) +``` + +该方法用于设置串口数据回调,串口收到数据后,会执行该回调。 + +**参数描述:** + +- `fun` - 回调函数,function类型,说明如下:
回调函数原型:`cb_func([result, port, num])->None`
回调函数参数:`[result, port, num]`
`result`:接收接口(0:成功,其它:失败)
`port`:接收端口
`num`:返回有多少数据 + + +**返回值描述:** + +成功返回整型`0`,失败返回整型`-1`。 + +**示例:** + +```python +>>> from machine import UART +>>> uart1 = UART(UART.UART1, 115200, 8, 0, 1, 0) +>>> +>>> def uart_call(para): +>>> print(para) +>>> uart1.set_callback(uart_call) +``` + +**使用示例:** + +```python +""" +运行本例程,需要通过串口线连接开发板的 MAIN 口和PC,在PC上通过串口工具 +打开 MAIN 口,并向该端口发送数据,即可看到 PC 发送过来的消息。 +""" +import _thread +import utime +import log +from machine import UART + + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_UART_example" +PROJECT_VERSION = "1.0.1" + +''' + * 参数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 | + diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.WDT.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.WDT.md" new file mode 100644 index 00000000..3c6120bd --- /dev/null +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.WDT.md" @@ -0,0 +1,83 @@ +# class WDT – 看门狗定时器 + +模块功能:APP应用程序发生异常不执行时进行系统重启操作 + +## 构造函数 + +### `machine.WDT` + +```python +class machine.WDT(period) +``` + +创建软狗对象。 + +**参数:** + +- `period` - 设置软狗检测时间,单位(s),int类型。 + +**返回值:** + +返回软狗对象 + +## 方法 + +### `wdt.feed` + +```python +wdt.feed() +``` + +该方法用于喂狗。 + +**返回值:** + +成功返回整型值`0`,失败返回其他 + +### `wdt.stop` + +```python +wdt.stop() +``` + +该方法用于关闭软狗功能。 + +**返回值:** + +成功返回整型值`0`,失败返回其他。 + +**使用示例:** + +```python +''' +@Author: Pawn +@Date: 2020-08-12 +@LastEditTime: 2020-08-12 17:06:08 +@Description: example for module timer +@FilePath: example_wdt.py +''' + +from machine import WDT +from machine import Timer +import utime + + +''' +下面两个全局变量是必须有的,用户可以根据自己的实际项目修改下面两个全局变量的值 +''' +PROJECT_NAME = "QuecPython_WDT_example" +PROJECT_VERSION = "1.0.0" + +timer1 = Timer(Timer.Timer1) + +def feed(t): + wdt.feed() + + +if __name__ == '__main__': + wdt = WDT(20) # 启动看门狗,间隔时长 + timer1.start(period=15000, mode=timer1.PERIODIC, callback=feed) # 使用定时器喂狗 + + # wdt.stop() + +``` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.md" index 36ba3db4..a65593e3 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.md" @@ -1,139 +1,31 @@ -# machine - 硬件相关功能 - -`machine`模块包含硬件相关的特定功能。大多数功能允许直接并且非严格地访问和控制系统硬件。如果使用不正确,可能会导致板级功能异常,甚至死机;极端条件下,可能会引起硬件损坏。 - -> machine模块内的函数或类方法的回调函数,应当被看做在中断上下文中执行,这在物理设备或虚拟设备中均适用。 - -**示例:** - -```python -import machine -from micropython import const - -GPIOA = const(0x48000000) -GPIO_BSRR = const(0x18) -GPIO_IDR = const(0x10) - -# set PA2 high -machine.mem32[GPIOA + GPIO_BSRR] = 1 << 2 - -# read PA3 -value = (machine.mem32[GPIOA + GPIO_IDR] >> 3) & 1 -``` - -## 内存访问功能 - -本模块提供3个对象,用于原始内存访问。 - -### `machine.mem8` - -读写8位内存。 - -### `machine.mem16` - -读写16位内存。 - -### `machine.mem32` - -读写32位内存。 - -
-使用脚标[...]来索引这些对象的内存。请注意,无论被访问的内存有多大,地址是按照字节访问的。 - -**示例:** - -```python -import machine -from micropython import const - -GPIOA = const(0x48000000) -GPIO_BSRR = const(0x18) -GPIO_IDR = const(0x10) - -# set PA2 high -machine.mem32[GPIOA + GPIO_BSRR] = 1 << 2 - -# read PA3 -value = (machine.mem32[GPIOA + GPIO_IDR] >> 3) & 1 -``` - -## 复位相关功能 - -### `machine.reset` - -```python -machine.reset() -``` - -以类似于按下外部复位按键的方式复位设备。 - -### `machine.soft_reset` - -```python -machine.soft_reset() -``` - -复位虚拟机解释器,删除所有的Python对象并且复位Python的堆内存。 - -## 中断相关功能 - -以下函数允许控制中断。某些系统需要中断正常运行,因此长时间禁用它们可能会破坏核心功能,例如看门狗定时器可能会意外触发。中断只应在最短时间内禁用,然后重新启用,恢复到以前的状态。例如: - -```python -import machine - -# Disable interrupts -state = machine.disable_irq() - -# Do a small amount of time-critical work here - -# Enable interrupts -machine.enable_irq(state) ``` - -### `machine.disable_irq` - -```python -machine.disable_irq() +本文阐述了QuecPython的machine模块的用法,描述了machine模块最新版本的特性。 ``` -禁用中断请求。返回此前的中断状态。此返回值应传递给`enable_irq()`函数,以还原调用`disable_irq()`之前的中断状态。 +# machine - 硬件相关功能 -### `machine.enable_irq` +模块功能: 包含与特定电路板上的硬件相关的特定功能。该模块中的大多数功能允许直接和不受限制地访问和控制系统上的硬件。 -```python -machine.enable_irq(state) -``` +## Classes -启用中断请求。`state`参数应该是最近一次调用`disable_irq()`函数时的返回值。 +- [class Pin – 控制I/O引脚](./machine.Pin.md) -## 常量 +- [class UART – 串口通信](./machine.UART.md) -### `machine.IDLE` +- [class Timer – 硬件定时器](./machine.Timer.md) -此处添加描述。 +- [class ExtInt - 外部中断](./machine.ExtInt.md) -### `machine.SLEEP` +- [class RTC – 实时时钟](./machine.RTC.md) -此处添加描述。 +- [class I2C – I2C通信](./machine.I2C.md) -### `machine.DEEPSLEEP` +- [class I2C_simulation - 模拟I2C通信](./machine.I2C_simulation.md) -此处添加描述。 +- [class SPI – SPI通信](./machine.SPI.md) -## Classes +- [class LCD - LCD显示屏](./machine.LCD.md) -- [class Pin – 控制I/O引脚](./machine.Pin.md) -- [class Signal – 控制和感知外部I/O设备](./machine.Signal.md) -- [class ADC – 模数转换](./machine.ADC.md) -- [class ADCBlock – 控制ADC外设](./machine.ADCBlock.md) -- [class PWM – 脉冲宽度调制](./PWM.md) -- [class UART – 串口通信](./machine.UART.md) -- [class SPI – SPI通信 (主机功能)](./machine.SPI.md) -- [class I2C – I2C通信](./machine.I2C.md) -- [class I2S – I2S音频协议](./machine.I2S.md) -- [class RTC – 实时时钟](./machine.RTC.md) -- [class Timer – 硬件定时器](./machine.Timer.md) - [class WDT – 看门狗定时器](./machine.WDT.md) -- [class SD – SD卡 (仅支持cc3200)](./machine.SD.md) -- [class SDCard – SD卡](./machine.SDCard.md) + +- [class KeyPad - 矩阵键盘](./machine.KeyPad.md) diff --git a/docs/API_reference/zh/sidebar.yaml b/docs/API_reference/zh/sidebar.yaml index 062a2a92..528dbd31 100644 --- a/docs/API_reference/zh/sidebar.yaml +++ b/docs/API_reference/zh/sidebar.yaml @@ -34,6 +34,9 @@ items: file: QuecPython标准库/uhashlib.md - label: QuecPython类库 file: QuecPython类库/README.md + items: + label: machine - 硬件相关功能 + file: QuecPython类库/machine.md - label: QuecPython组件库 file: QuecPython组件库/README.md items: -- Gitee From 7652697d1c1f753968f771b4f8d67702b3c92b47 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Reinhardt=20Peng=28=E5=BD=AD=E6=88=90=E5=90=8D=29?= Date: Sat, 18 Feb 2023 21:29:33 +0800 Subject: [PATCH 2/3] check wiki --- .../zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" | 1 + .../zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" | 2 +- .../zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" | 1 + .../zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" | 2 +- .../zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" | 2 +- 5 files changed, 5 insertions(+), 3 deletions(-) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" index 31e28801..40b2acaa 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.ExtInt.md" @@ -24,6 +24,7 @@ class machine.ExtInt(GPIOn, mode, pull, callback) BG95M3平台引脚对应关系
GPIO2 – 引脚号5
GPIO3 – 引脚号6
GPIO6 – 引脚号19
GPIO7 – 引脚号22
GPIO8 – 引脚号23
GPIO9 – 引脚号25
GPIO11 – 引脚号27
GPIO12 – 引脚号28
GPIO14 – 引脚号41
GPIO16 – 引脚号65
GPIO17 – 引脚号66
GPIO18 – 引脚号85
GPIO19 – 引脚号86
GPIO20 – 引脚号87
GPIO21 – 引脚号88 + **示例:** ```python diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" index 2d05550f..c1287990 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.LCD.md" @@ -105,7 +105,7 @@ lcd.lcd_init(lcd_init_data, lcd_width, lcd_hight, lcd_clk, data_line, line_num, ### `lcd.mipi_init` ```python -lcd.mipi_init(initbuf,**kwargs) +lcd.mipi_init(initbuf, **kwargs) ``` 该方法用于初始化MIPI,按键值对传参,请根据屏厂提供的初始化参数填写。 diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" index 7ebfa61f..02ac9304 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Pin.md" @@ -112,6 +112,7 @@ GPIO1 – 引脚号30
GPIO2 – 引脚号31
GPIO3 – 引脚号32
EG912N平台引脚对应关系 GPIO1 – 引脚号4
GPIO2 – 引脚号5
GPIO3 – 引脚号6
GPIO4 – 引脚号7
GPIO5 – 引脚号18
GPIO6 – 引脚号19
GPIO7 – 引脚号1
GPIO8 – 引脚号16
GPIO9 – 引脚号25
GPIO10 – 引脚号26
GPIO11 – 引脚号27
GPIO12 – 引脚号28
GPIO13 – 引脚号40
GPIO14 – 引脚号41
GPIO15 – 引脚号64
GPIO16 – 引脚号20
GPIO17 – 引脚号21
GPIO18 – 引脚号30
GPIO19 – 引脚号34
GPIO20 – 引脚号35
GPIO21 – 引脚号36
GPIO22 – 引脚号37
GPIO23 – 引脚号38
GPIO24 – 引脚号39
GPIO25 – 引脚号42
GPIO26 – 引脚号78
GPIO27 – 引脚号83
GPIO28 – 引脚号92
GPIO29 – 引脚号95
GPIO30 – 引脚号96
GPIO31 – 引脚号97
GPIO32 – 引脚号98
GPIO33 – 引脚号103
GPIO34 – 引脚号104
GPIO35 – 引脚号105
GPIO36 – 引脚号106
GPIO37 – 引脚号107
GPIO38 – 引脚号114
GPIO39 – 引脚号115
GPIO40 – 引脚号116 + ## 方法 ### `Pin.read` diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" index 818f06fc..85692b05 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.SPI.md" @@ -84,7 +84,7 @@ SPI.write(data, datalen) ### `SPI.write_read` ```python -SPI.write_read(r_data,data, datalen) +SPI.write_read(r_data, data, datalen) ``` 该方法用于写入和读取数据。 diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" index e25ae6ac..e87adca2 100644 --- "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" +++ "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Timer.md" @@ -52,7 +52,7 @@ timer.start(period, mode, callback) ```python # 使用该定时器时需注意:定时器0-3,每个在同一时间内只能执行一件任务,且多个对象不可使用同一个定时器。 >>> def fun(args): - print(“###timer callback function###”) + print("###timer callback function###") >>> timer1.start(period=1000, mode=timer1.PERIODIC, callback=fun) 0 ###timer callback function### -- Gitee From fc7992c2389001846df4fa4c0da77f1a214f0bf6 Mon Sep 17 00:00:00 2001 From: "reinhardt.peng" <12452937+reinhardtpeng@user.noreply.gitee.com> Date: Sat, 18 Feb 2023 13:34:46 +0000 Subject: [PATCH 3/3] =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=20docs/API=5Fre?= =?UTF-8?q?ference/zh/QuecPython=E7=B1=BB=E5=BA=93/machine.Uart.md=20?= =?UTF-8?q?=E4=B8=BA=20docs/API=5Freference/zh/QuecPython=E7=B1=BB?= =?UTF-8?q?=E5=BA=93/machine.UART.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../zh/QuecPython\347\261\273\345\272\223/machine.UART.md" | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" => "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.UART.md" (100%) diff --git "a/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" "b/docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.UART.md" similarity index 100% rename from "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.Uart.md" rename to "docs/API_reference/zh/QuecPython\347\261\273\345\272\223/machine.UART.md" -- Gitee