esp32
— functionality specific to the ESP32
esp32
— 特定于ESP32的功能
====================================================
The esp32
module contains functions and classes specifically aimed at
controlling ESP32 modules.
“esp32”模块包含专门针对的函数和类
控制ESP32模块。
Functions 功能 ———
- esp32.wake_on_touch(wake)¶
Configure whether or not a touch will wake the device from sleep. wake should be a boolean value. 配置触摸是否将唤醒设备从睡眠。 *wake*应该是一个布尔值。
- esp32.wake_on_ext0(pin, level)¶
Configure how EXT0 wakes the device from sleep. pin can be
None
or a valid Pin object. level should beesp32.WAKEUP_ALL_LOW
oresp32.WAKEUP_ANY_HIGH
. 配置EXT0如何将设备从睡眠中唤醒。*pin*可以是“无” 或有效的Pin对象。*级别*应该是esp32。WAKEUP_ALL_LOW”或esp32.WAKEUP_ANY_HIGH
。
- esp32.wake_on_ext1(pins, level)¶
Configure how EXT1 wakes the device from sleep. pins can be
None
or a tuple/list of valid Pin objects. level should beesp32.WAKEUP_ALL_LOW
oresp32.WAKEUP_ANY_HIGH
. 配置EXT1如何将设备从睡眠中唤醒。*pins*可以是“None” 或有效Pin对象的元组/列表。*level*应该是``esp32.WAKEUP_ALL_LOW`` 或``esp32.WAKEUP_ANY_HIGH``。
- esp32.raw_temperature()¶
Read the raw value of the internal temperature sensor, returning an integer. 读取内部温度传感器的原始值,返回一个整数。
- esp32.hall_sensor()¶
Read the raw value of the internal Hall sensor, returning an integer. 读取内部霍尔传感器的原始值,返回一个整数。
Flash partitions¶
This class gives access to the partitions in the device’s flash memory. 这个类提供对设备闪存中的分区的访问。
- class esp32.Partition(id)¶
Create an object representing a partition. id can be a string which is the label of the partition to retrieve, or one of the constants:
BOOT
orRUNNING
. 创建一个表示分区的对象。*id*可以是字符串,也就是标签 的分区,或一个常量:BOOT
或RUNNING
。
- classmethod Partition.find(type=TYPE_APP, subtype=255, label=None)¶
Find a partition specified by type, subtype and label. Returns a (possibly empty) list of Partition objects. 查找由*类型*、*子类型*和*标签*指定的分区。返回一个 分区对象列表(可能为空)。
- Partition.info()¶
Returns a 6-tuple
(type, subtype, addr, size, label, encrypted)
. 返回一个6元组“(类型、子类型、地址、大小、标签、加密)”。
- Partition.readblocks(block_num, buf)¶
- Partition.readblocks(block_num, buf, offset)¶
- Partition.writeblocks(block_num, buf)¶
- Partition.writeblocks(block_num, buf, offset)¶
- Partition.ioctl(cmd, arg)¶
These methods implement the simple and extended block protocol defined by
uos.AbstractBlockDev
. 这些方法实现了simple和:ref: ‘ extended <块-设备-接口> ‘定义的块协议 类:“uos.AbstractBlockDev”。
- Partition.set_boot()¶
Sets the partition as the boot partition. 将分区设置为引导分区。
- Partition.get_next_update()¶
Gets the next update partition after this one, and returns a new Partition object. 获取此分区之后的下一个更新分区,并返回一个新的分区对象。
Constants¶
- Partition.BOOT¶
- Partition.RUNNING¶
Used in the
Partition
constructor to fetch various partitions. 在“Partition”构造函数中用于获取不同的分区。
- Partition.TYPE_APP¶
- Partition.TYPE_DATA¶
Used in
Partition.find
to specify the partition type. 使用`Partition.find`查找以指定分区类型。
RMT¶
The RMT (Remote Control) module, specific to the ESP32, was originally designed to send and receive infrared remote control signals. However, due to a flexible design and very accurate (as low as 12.5ns) pulse generation, it can also be used to transmit or receive many other types of digital signals:: 针对ESP32的RMT(远程控制)模块是最初设计的 发送和接收红外遥控信号。但是,由于灵活 设计非常精确(低至12.5ns)的脉冲产生,也可以 用于发射或接收许多其他类型的数字信号:
import esp32
from machine import Pin
从机器进口销
r = esp32.RMT(0, pin=Pin(18), clock_div=8)
r # RMT(channel=0, pin=18, source_freq=80000000, clock_div=8)
# The channel resolution is 100ns (1/(source_freq/clock_div)).
r.write_pulses((1, 20, 2, 40), start=0) # Send 0 for 100ns, 1 for 2000ns, 0 for 200ns, 1 for 4000ns
The input to the RMT module is an 80MHz clock (in the future it may be able to
configure the input clock but, for now, it’s fixed). clock_div
divides
the clock input which determines the resolution of the RMT channel. The
numbers specificed in write_pulses
are multiplied by the resolution to
define the pulses.
RMT模块的输入是一个80MHz的时钟(将来它可能能够做到)
配置输入时钟,但目前,它是固定的)。“clock_div ‘ ‘ 分
决定RMT信道分辨率的时钟输入。的
在’ ‘ write_pulse ‘ ‘中指定的数字乘以分辨率
定义脉冲。
clock_div
is an 8-bit divider (0-255) and each pulse can be defined by
multiplying the resolution by a 15-bit (0-32,768) number. There are eight
channels (0-7) and each can have a different clock divider.
``clock_div``是一个8位分配器(0-255),每个脉冲可以定义
将分辨率乘以一个15位(0-32,768)的数字。有八个
通道(0-7)和每个可以有一个不同的时钟分频器。
So, in the example above, the 80MHz clock is divided by 8. Thus the
resolution is (1/(80Mhz/8)) 100ns. Since the start
level is 0 and toggles
with each number, the bitstream is 0101
with durations of [100ns, 2000ns,
100ns, 4000ns].
因此,在上面的例子中,80MHz时钟被8除以。因此,
分辨率为(1/(80Mhz/8)) 100ns。因为“开始”级别是0和切换
对于每个数字,比特流为’ ‘ 0101 ‘ ‘,持续时间为[100ns, 2000ns,
100 ns 4000 ns)。
For more details see Espressif’s ESP-IDF RMT documentation. 更多细节请参见Espressif的ESP-IDF RMT文档。.
警告
The current MicroPython RMT implementation lacks some features, most notably receiving pulses and carrier transmit. RMT should be considered a beta feature and the interface may change in the future. 目前的MicroPython RMT实现缺少一些特性,最明显的是 接收脉冲和载波传输。RMT应该被认为是a *beta特性*和界面可能在未来改变。
- class esp32.RMT(channel, \*, pin=None, clock_div=8)¶
This class provides access to one of the eight RMT channels. channel is required and identifies which RMT channel (0-7) will be configured. pin, also required, configures which Pin is bound to the RMT channel. clock_div is an 8-bit clock divider that divides the source clock (80MHz) to the RMT channel allowing the resolution to be specified. 这个类提供对八个RMT通道之一的访问。* 频道 必需的,并确定将配置哪个RMT通道(0-7)。*销, 同样需要,配置哪个大头针被绑定到RMT通道。* clock_div * 是将源时钟(80MHz)分成RMT的8位时钟分频器吗 通道允许指定的分辨率。
- RMT.source_freq()¶
Returns the source clock frequency. Currently the source clock is not configurable so this will always return 80MHz. 返回源时钟频率。目前源时钟不是 可配置,因此它总是返回80MHz。
- RMT.clock_div()¶
Return the clock divider. Note that the channel resolution is
1 / (source_freq / clock_div)
. 返回时钟分压器。请注意,通道分辨率是1 / (source_freq / clock_div)
- RMT.wait_done(timeout=0)¶
Returns True if
RMT.write_pulses
has completed. 如果RMT返回True。write_pulses”已完成。If timeout (defined in ticks of
source_freq / clock_div
) is specified the method will wait for timeout or untilRMT.write_pulses
is complete, returningFalse
if the channel continues to transmit. 如果指定了*timeout*(定义为’ ‘ source_freq / clock_div ‘ ‘) 该方法将等待*超时*或直到’ RMT。write_pulses”完成, 如果信道继续传输,则返回“False”。
警告
Avoid using wait_done()
if looping is enabled.
如果启用了循环,避免使用``wait_done()`` 。
- RMT.loop(enable_loop)¶
Configure looping on the channel, allowing a stream of pulses to be indefinitely repeated. enable_loop is bool, set to True to enable looping. 在通道上配置循环,允许脉冲流被 无限期的重复。*enable_loop*是bool,设置为True以启用循环。
- RMT.write_pulses(pulses, start)¶
Begin sending pulses, a list or tuple defining the stream of pulses. The length of each pulse is defined by a number to be multiplied by the channel resolution
(1 / (source_freq / clock_div))
. start defines whether the stream starts at 0 or 1. 开始发送*脉冲*,一个定义脉冲流的列表或元组。的 每个脉冲的长度由一个要乘以信道的数字来定义 分辨率’ ‘ (1 / (source_freq / clock_div)) ‘ ‘。定义是否 流从0或1开始。
The Ultra-Low-Power co-processor 超低功耗的协同处理器 ——————————–
- class esp32.ULP¶
This class provides access to the Ultra-Low-Power co-processor. 这个类提供对超低功耗协处理器的访问。
- ULP.set_wakeup_period(period_index, period_us)¶
Set the wake-up period. 设置唤醒时间。
- ULP.load_binary(load_addr, program_binary)¶
Load a program_binary into the ULP at the given load_addr. 在给定的*load_addr*下将*program_binary*加载到ULP中。
- ULP.run(entry_point)¶
Start the ULP running at the given entry_point. 在给定的*entry_point*上启动运行ULP。
Constants 常量 ———