mirror of
https://github.com/espressif/esp-idf.git
synced 2024-10-05 20:47:46 -04:00
Merge branch 'docs/update_CN_trans_spiffs_touchpad' into 'master'
docs:update CN translation for spiffs and touch_pad See merge request espressif/esp-idf!12914
This commit is contained in:
commit
7702060967
@ -25,7 +25,6 @@ In-depth design details of touch sensors and firmware development guidelines for
|
||||
|
||||
For more information about testing touch sensors in various configurations, please check the `Guide for ESP32-Sense-Kit <https://github.com/espressif/esp-dev-kits/blob/master/esp32-sense-kit/docs/esp32_sense_kit_guide_en.md>`_.
|
||||
|
||||
|
||||
Functionality Overview
|
||||
----------------------
|
||||
|
||||
@ -50,7 +49,6 @@ Before using a touch pad, you need to initialize the touch pad driver by calling
|
||||
|
||||
If the driver is not required anymore, deinitialize it by calling :cpp:func:`touch_pad_deinit`.
|
||||
|
||||
|
||||
Configuration
|
||||
^^^^^^^^^^^^^
|
||||
|
||||
@ -58,7 +56,6 @@ Enabling the touch sensor functionality for a particular GPIO is done with :cpp:
|
||||
|
||||
Use the function :cpp:func:`touch_pad_set_fsm_mode` to select if touch pad measurement (operated by FSM) should be started automatically by a hardware timer, or by software. If software mode is selected, use :cpp:func:`touch_pad_sw_start` to start the FSM.
|
||||
|
||||
|
||||
Touch State Measurements
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -85,7 +82,6 @@ Touch State Measurements
|
||||
|
||||
For the demonstration of how to read the touch pad data, check the application example :example:`peripherals/touch_pad_read`.
|
||||
|
||||
|
||||
Optimization of Measurements
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -136,7 +132,6 @@ Filtering of Measurements
|
||||
|
||||
There is also a configurable hardware implemented IIR-filter (infinite impulse response). This IIR-filter is configured with the function :cpp:func:`touch_pad_filter_set_config` and enabled by calling :cpp:func:`touch_pad_filter_enable`
|
||||
|
||||
|
||||
Touch Detection
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
@ -146,7 +141,6 @@ Hardware touch detection can also be wired to interrupts. This is described in t
|
||||
|
||||
If measurements are noisy and capacity changes are small, hardware touch detection might be unreliable. To resolve this issue, instead of using hardware detection / provided interrupts, implement measurement filtering and perform touch detection in your own application. For sample implementation of both methods of touch detection, see :example:`peripherals/touch_pad_interrupt`.
|
||||
|
||||
|
||||
Touch Triggered Interrupts
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
@ -183,17 +177,14 @@ When interrupts are operational, you can obtain the information from which parti
|
||||
* :cpp:func:`touch_pad_set_group_mask` / :cpp:func:`touch_pad_get_group_mask`
|
||||
* :cpp:func:`touch_pad_clear_group_mask`
|
||||
|
||||
|
||||
|
||||
.. _touch_pad-api-examples:
|
||||
|
||||
Application Examples
|
||||
--------------------
|
||||
.. _touch_pad-api-examples:
|
||||
|
||||
- Touch sensor read example: :example:`peripherals/touch_pad_read`.
|
||||
- Touch sensor interrupt example: :example:`peripherals/touch_pad_interrupt`.
|
||||
|
||||
|
||||
.. _touch_pad-api-reference:
|
||||
|
||||
API Reference
|
||||
@ -204,8 +195,7 @@ API Reference
|
||||
|
||||
GPIO Lookup Macros
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
Some useful macros can be used to specified the GPIO number of a touch pad channel, or vice versa.
|
||||
e.g.
|
||||
Some useful macros can be used to specified the GPIO number of a touch pad channel, or vice versa. e.g.
|
||||
|
||||
1. ``TOUCH_PAD_NUM5_GPIO_NUM`` is the GPIO number of channel 5 (12);
|
||||
2. ``TOUCH_PAD_GPIO4_CHANNEL`` is the channel number of GPIO 4 (channel 0).
|
||||
|
@ -8,7 +8,6 @@ Overview
|
||||
|
||||
SPIFFS is a file system intended for SPI NOR flash devices on embedded targets. It supports wear levelling, file system consistency checks, and more.
|
||||
|
||||
|
||||
Notes
|
||||
-----
|
||||
|
||||
@ -16,15 +15,13 @@ Notes
|
||||
- It is not a real-time stack. One write operation might take much longer than another.
|
||||
- For now, it does not detect or handle bad blocks.
|
||||
|
||||
|
||||
Tools
|
||||
-----
|
||||
|
||||
spiffsgen.py
|
||||
^^^^^^^^^^^^
|
||||
|
||||
:component_file:`spiffsgen.py<spiffs/spiffsgen.py>` is a write-only Python SPIFFS implementation used to create filesystem
|
||||
images from the contents of a host folder. To use ``spiffsgen.py``, open Terminal and run::
|
||||
:component_file:`spiffsgen.py<spiffs/spiffsgen.py>` is a write-only Python SPIFFS implementation used to create filesystem images from the contents of a host folder. To use ``spiffsgen.py``, open Terminal and run::
|
||||
|
||||
python spiffsgen.py <image_size> <base_dir> <output_file>
|
||||
|
||||
@ -57,11 +54,11 @@ CMake::
|
||||
This is more convenient as the build configuration is automatically passed to the tool, ensuring that the generated image is valid for that build. An example of this is while the *image_size* is required for the standalone invocation, only the *partition* name is required when using ``spiffs_create_partition_image`` -- the image size is automatically obtained from the project's partition table.
|
||||
|
||||
Due to the differences in structure between Make and CMake, it is important to note that:
|
||||
|
||||
- for Make ``spiffs_create_partition_image`` must be called from the project Makefile
|
||||
- for CMake ``spiffs_create_partition_image`` must be called from one of the component CMakeLists.txt files
|
||||
|
||||
Optionally, user can opt to have the image automatically flashed together with the app binaries, partition tables, etc. on
|
||||
``idf.py flash`` or ``make flash`` by specifying ``FLASH_IN_PROJECT``. For example,
|
||||
Optionally, user can opt to have the image automatically flashed together with the app binaries, partition tables, etc. on ``idf.py flash`` or ``make flash`` by specifying ``FLASH_IN_PROJECT``. For example,
|
||||
|
||||
in Make::
|
||||
|
||||
@ -74,8 +71,7 @@ in CMake::
|
||||
|
||||
If FLASH_IN_PROJECT/SPIFFS_IMAGE_FLASH_IN_PROJECT is not specified, the image will still be generated, but you will have to flash it manually using ``esptool.py``, ``parttool.py``, or a custom build system target.
|
||||
|
||||
There are cases where the contents of the base directory itself is generated at build time. Users can use DEPENDS/SPIFFS_IMAGE_DEPENDS to specify targets
|
||||
that should be executed before generating the image.
|
||||
There are cases where the contents of the base directory itself is generated at build time. Users can use DEPENDS/SPIFFS_IMAGE_DEPENDS to specify targets that should be executed before generating the image.
|
||||
|
||||
in Make::
|
||||
|
||||
@ -91,14 +87,12 @@ in CMake::
|
||||
|
||||
spiffs_create_partition_image(my_spiffs_partition my_folder DEPENDS dep)
|
||||
|
||||
+For an example, see :example:`storage/spiffsgen`.
|
||||
|
||||
For an example, see :example:`storage/spiffsgen`.
|
||||
|
||||
mkspiffs
|
||||
^^^^^^^^
|
||||
|
||||
Another tool for creating SPIFFS partition images is `mkspiffs <https://github.com/igrr/mkspiffs>`_.
|
||||
Similar to ``spiffsgen.py``, it can be used to create an image from a given folder and then flash that image using ``esptool.py``
|
||||
Another tool for creating SPIFFS partition images is `mkspiffs <https://github.com/igrr/mkspiffs>`_. Similar to ``spiffsgen.py``, it can be used to create an image from a given folder and then flash that image using ``esptool.py``
|
||||
|
||||
For that, you need to obtain the following parameters:
|
||||
|
||||
@ -122,14 +116,15 @@ Notes on which SPIFFS tool to use
|
||||
The two tools presented above offer very similar functionality. However, there are reasons to prefer one over the other, depending on the use case.
|
||||
|
||||
Use ``spiffsgen.py`` in the following cases:
|
||||
|
||||
1. If you want to simply generate a SPIFFS image during the build. ``spiffsgen.py`` makes it very convenient by providing functions/commands from the build system itself.
|
||||
2. If the host has no C/C++ compiler available, because ``spiffsgen.py`` does not require compilation.
|
||||
|
||||
Use ``mkspiffs`` in the following cases:
|
||||
|
||||
1. If you need to unpack SPIFFS images in addition to image generation. For now, it is not possible with ``spiffsgen.py``.
|
||||
2. If you have an environment where a Python interpreter is not available, but a host compiler is available. Otherwise, a pre-compiled ``mkspiffs`` binary can do the job. However, there is no build system integration for ``mkspiffs`` and the user has to do the corresponding work: compiling ``mkspiffs`` during build (if a pre-compiled binary is not used), creating build rules/targets for the output files, passing proper parameters to the tool, etc.
|
||||
|
||||
|
||||
See also
|
||||
--------
|
||||
|
||||
@ -141,7 +136,6 @@ Application Example
|
||||
|
||||
An example of using SPIFFS is provided in the :example:`storage/spiffs` directory. This example initializes and mounts a SPIFFS partition, then writes and reads data from it using POSIX and C library APIs. See the README.md file in the example directory for more information.
|
||||
|
||||
|
||||
High-level API Reference
|
||||
------------------------
|
||||
|
||||
|
@ -1,6 +1,5 @@
|
||||
触摸传感器
|
||||
============
|
||||
|
||||
:link_to_translation:`en:[English]`
|
||||
|
||||
概述
|
||||
@ -8,69 +7,91 @@
|
||||
|
||||
触摸传感器系统由保护覆盖层、触摸电极、绝缘基板和走线组成,保护覆盖层位于最上层,绝缘基板上设有电极及走线。用户触摸覆盖层将产生电容变化,根据电容变化判断此次触摸是否为有效触摸行为。
|
||||
|
||||
ESP32 可支持最多 10 个电容式触摸板/GPIO,触摸板可以以矩阵或滑条等方式组合使用,从而覆盖更大触感区域及更多触感点。触摸传感由有限状态机 (FSM) 硬件控制,由软件或专用硬件计时器发起。
|
||||
.. only:: esp32
|
||||
|
||||
如需了解触摸传感器设计、操作及其控制寄存器等相关信息,请参考《`{IDF_TARGET_NAME} 技术参考手册 <{IDF_TARGET_TRM_CN_URL}>`_》(PDF),您也可以在《ESP32 技术参考手册》中查看这一子系统是如何运行的。
|
||||
ESP32 可最多支持 10 个电容式触摸传感器通道/GPIO。
|
||||
|
||||
请参考 `触摸传感器应用方案简介 <https://github.com/espressif/esp-iot-solution/blob/release/v1.0/documents/touch_pad_solution/touch_sensor_design_cn.md>`_,查看触摸传感器设计详情和固件开发指南。更多关于在多种配置环境下测试触摸传感器的信息,请参考 `ESP32 触摸功能开发套件 <https://github.com/espressif/esp-dev-kits/blob/master/esp32-sense-kit/docs/esp32_sense_kit_guide_cn.md>`_。
|
||||
.. only:: esp32s2
|
||||
|
||||
{IDF_TARGET_NAME} 可最多支持 14 个电容式触摸传感器通道/GPIO。
|
||||
|
||||
触摸传感器可以以矩阵或滑条等方式组合使用,从而覆盖更大触感区域及更多触感点。触摸传感由软件或专用硬件计时器发起,由有限状态机 (FSM) 硬件控制。
|
||||
|
||||
如需了解触摸传感器设计、操作及其控制寄存器等相关信息,请参考《`{IDF_TARGET_NAME} 技术参考手册 <{IDF_TARGET_TRM_CN_URL}>`_》(PDF) 中“片上传感器与模拟信号处理”章节。
|
||||
|
||||
请参考 `触摸传感器应用方案简介 <https://github.com/espressif/esp-iot-solution/blob/release/v1.0/documents/touch_pad_solution/touch_sensor_design_en.md>`_,查看触摸传感器设计详情和固件开发指南。
|
||||
|
||||
.. only:: esp32
|
||||
|
||||
如果想评估触摸传感器的多种应用场景,请查看 `ESP32 触摸功能开发套件 <https://github.com/espressif/esp-dev-kits/blob/master/esp32-sense-kit/docs/esp32_sense_kit_guide_en.md>`_。
|
||||
|
||||
功能介绍
|
||||
----------------------
|
||||
|
||||
下面将 API 分解成几个函数组进行介绍,帮助您快速了解以下功能:
|
||||
下面将 API 分解成几个函数组进行介绍,帮助用户快速了解以下功能:
|
||||
|
||||
- 初始化触摸板驱动程序
|
||||
- 配置触摸板 GPIO 管脚
|
||||
- 初始化触摸传感器驱动程序
|
||||
- 配置触摸传感器 GPIO 管脚
|
||||
- 触摸状态测量
|
||||
- 调整测量参数(优化测量)
|
||||
- 过滤触摸测量
|
||||
- 滤波采样
|
||||
- 触摸监测方式
|
||||
- 设置中断信号监测触碰动作
|
||||
- 中断触发
|
||||
- 中断触发,唤醒睡眠模式
|
||||
|
||||
请前往 :ref:`touch_pad-api-reference` 章节,查看某一函数的具体描述。:ref:`touch_pad-api-examples` 章节则介绍了此 API 的具体实现。
|
||||
请前往 :ref:`touch_pad-api-reference` 章节,查看某一函数的具体描述。:ref:`应用示例 <touch_pad-api-examples>` 章节则介绍了此 API 的具体实现。
|
||||
|
||||
|
||||
初始化触摸板驱动程序
|
||||
初始化触摸传感器驱动程序
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
使用触摸板之前,需要先调用 :cpp:func:`touch_pad_init` 函数初始化触摸板驱动程序。此函数设置了 :ref:`touch_pad-api-reference` 项下的 *Macros* 中列出的几项 ``.._DEFAULT`` 驱动程序参数,同时删除之前设置过的触摸板信息(如有),并禁用中断。
|
||||
使用触摸传感器之前,需要先调用 :cpp:func:`touch_pad_init` 函数初始化触摸传感器驱动程序。此函数设置了 :ref:`touch_pad-api-reference` 项下的 *Macros* 中列出的几项 ``.._DEFAULT`` 驱动程序参数,同时删除之前设置过的触摸传感器信息(如有),并禁用中断。
|
||||
|
||||
如果不再需要该驱动程序,可以调用 :cpp:func:`touch_pad_deinit` 释放已初始化的驱动程序。
|
||||
|
||||
配置触摸板 GPIO 管脚
|
||||
配置触摸传感器 GPIO 管脚
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
调用 :cpp:func:`touch_pad_config` 使能某一 GPIO 的触感功能。
|
||||
|
||||
使用 :cpp:func:`touch_pad_set_fsm_mode` 选择触摸板测量(由 FSM 操作)是由硬件计时器自动启动,还是由软件自动启动。如果选择软件模式,请使用 :cpp:func:`touch_pad_sw_start` 启动 FSM。
|
||||
使用 :cpp:func:`touch_pad_set_fsm_mode` 选择触摸传感器测量(由 FSM 操作)是由硬件定时器自动启动,还是由软件自动启动。如果选择软件模式,请使用 :cpp:func:`touch_pad_sw_start` 启动 FSM。
|
||||
|
||||
触摸状态测量
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
借助以下两个函数从传感器读取原始数据或过滤后的数据:
|
||||
.. only:: esp32
|
||||
|
||||
* :cpp:func:`touch_pad_read`
|
||||
* :cpp:func:`touch_pad_read_filtered`
|
||||
借助以下两个函数从传感器读取原始数据和滤波后的数据:
|
||||
|
||||
这两个函数也可以用于检查触碰和释放触摸板时传感器读数变化范围,来评估触摸板设计,然后根据这些信息设定触摸阈值。
|
||||
* :cpp:func:`touch_pad_read_raw_data`
|
||||
* :cpp:func:`touch_pad_read_filtered`
|
||||
|
||||
.. note::
|
||||
这两个函数也可以用于检查触碰和释放触摸传感器时传感器读数变化范围,然后根据这些信息设定触摸传感器的触摸阈值。
|
||||
|
||||
使用 :cpp:func:`touch_pad_read_filtered` 之前,需要先调用 `过滤触摸测量`_ 中特定的滤波器函数初始化并配置该滤波器。
|
||||
.. note::
|
||||
|
||||
请参考应用示例 :example:`peripherals/touch_pad_read`,查看如何使用这两个读值函数。
|
||||
使用 :cpp:func:`touch_pad_read_filtered` 之前,需要先调用 `滤波采样`_ 中特定的滤波器函数来初始化并配置该滤波器。
|
||||
|
||||
.. only:: esp32s2
|
||||
|
||||
借助以下函数从传感器读取原始数据:
|
||||
|
||||
* :cpp:func:`touch_pad_read_raw_data`
|
||||
|
||||
该函数也可以用于检查触碰和释放触摸传感器时传感器读数变化范围,然后根据这些信息设定触摸传感器的触摸阈值。
|
||||
|
||||
请参考应用示例 :example:`peripherals/touch_pad_read`,查看如何使用读取触摸传感器数据。
|
||||
|
||||
优化测量
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
触摸传感器设有数个可配置参数,以适应触摸板设计特点。例如,如果需要感知较细微的电容变化,则可以缩小触摸板充放电的参考电压范围。您可以使用 :cpp:func:`touch_pad_set_voltage` 函数设置电压参考低值和参考高值。
|
||||
触摸传感器设有数个可配置参数,以适应触摸传感器设计特点。例如,如果需要感知较细微的电容变化,则可以缩小触摸传感器充放电的参考电压范围。用户可以使用 :cpp:func:`touch_pad_set_voltage` 函数设置电压参考低值和参考高值。
|
||||
|
||||
优化测量除了可以识别细微的电容变化之外,还可以降低应用程序功耗,但可能会增加测量噪声干扰。如果得到的动态读数范围结果比较理想,则可以调用 :cpp:func:`touch_pad_set_meas_time` 函数来减少测量时间,从而进一步降低功耗。
|
||||
|
||||
可用的测量参数及相应的 'set' 函数总结如下:
|
||||
|
||||
* 触摸板充放电参数:
|
||||
* 触摸传感器充放电参数:
|
||||
|
||||
* 电压门限::cpp:func:`touch_pad_set_voltage`
|
||||
* 速率(斜率) :cpp:func:`touch_pad_set_cnt_mode`
|
||||
@ -84,7 +105,7 @@ ESP32 可支持最多 10 个电容式触摸板/GPIO,触摸板可以以矩阵
|
||||
:alt: Touch Pad - relationship between measurement parameters
|
||||
:figclass: align-center
|
||||
|
||||
触摸板 - 测量参数之间的关系
|
||||
触摸传感器 - 测量参数之间的关系
|
||||
|
||||
上图中的 *Output* 代表触摸传感器读值,即一个测量周期内测得的脉冲计数值。
|
||||
|
||||
@ -92,56 +113,69 @@ ESP32 可支持最多 10 个电容式触摸板/GPIO,触摸板可以以矩阵
|
||||
|
||||
.. _touch_pad-api-filtering-of-measurements:
|
||||
|
||||
过滤触摸测量
|
||||
滤波采样
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
.. only:: esp32
|
||||
|
||||
如果测量中存在噪声,可以使用提供的 API 函数对测量进行过滤。使用滤波器之前,请先调用 :cpp:func:`touch_pad_filter_start` 启动该滤波器。
|
||||
如果测量中存在噪声,可以使用提供的 API 函数对采样进行滤波。使用滤波器之前,请先调用 :cpp:func:`touch_pad_filter_start` 启动该滤波器。
|
||||
|
||||
滤波器类型为 IIR(无限脉冲响应滤波器),您可以调用 :cpp:func:`touch_pad_set_filter_period` 配置此类滤波器的采样周期。
|
||||
滤波器类型为 IIR(无限脉冲响应滤波器),用户可以调用 :cpp:func:`touch_pad_set_filter_period` 配置此类滤波器的采样周期。
|
||||
|
||||
如需停止滤波器,请调用 :cpp:func:`touch_pad_filter_stop` 函数。如果不再使用该滤波器,请调用 :cpp:func:`touch_pad_filter_delete` 删除此滤波器。
|
||||
如需停止滤波器,请调用 :cpp:func:`touch_pad_filter_stop` 函数。如果不再使用该滤波器,请调用 :cpp:func:`touch_pad_filter_delete` 删除此滤波器。
|
||||
|
||||
.. only:: esp32s2
|
||||
|
||||
如果测量中存在噪声,可以使用提供的 API 函数对采样进行滤波。{IDF_TARGET_NAME} 的触摸功能提供了两套 API 可实现此功能。
|
||||
|
||||
一个是内部触摸通道,它没有连接到任何外部 GPIO。该降噪板的测量值可用于过滤所有通道上的干扰,如来自电源和外部 EMI 的噪声。
|
||||
降噪参数由 :cpp:func:`touch_pad_denoise_set_config` 设置并由 :cpp:func:`touch_pad_denoise_enable` 启动。
|
||||
|
||||
另一是可配置的硬件实现 IIR-滤波器(无限脉冲响应滤波器),该滤波器可通过调用 :cpp:func:`touch_pad_filter_set_config` 函数进行配置,调用 :cpp:func:`touch_pad_filter_enable` 函数启用。
|
||||
|
||||
触摸监测
|
||||
^^^^^^^^^^^^^^^
|
||||
|
||||
触摸监测基于用户配置的阈值和 FSM 执行的原始测量,并由 ESP32 硬件实现。你可以调用 :cpp:func:`touch_pad_get_status` 查看被触碰的触摸板,或调用 :cpp:func:`touch_pad_clear_status` 清除触摸状态信息。
|
||||
触摸监测基于用户配置的阈值和 FSM 执行的原始测量,并由 ESP32 硬件实现。用户可以调用 :cpp:func:`touch_pad_get_status` 查看被触碰的触摸传感器,或调用 :cpp:func:`touch_pad_clear_status` 清除触摸状态信息。
|
||||
|
||||
您也可以将硬件触摸监测连接至中断,详细介绍见下一章节。
|
||||
用户也可以将硬件触摸监测连接至中断,详细介绍见下一章节。
|
||||
|
||||
如果测量中存在噪声,且电容变化幅度较小,硬件触摸监测结果可能就不太理想。如需解决这一问题,不建议使用硬件监测或中断信号,建议您在自己的应用程序中采用测量过滤,并执行触摸监测。请参考 :example:`peripherals/touch_pad_interrupt`,查看以上两种触摸监测的实现方式。
|
||||
如果测量中存在噪声,且电容变化幅度较小,硬件触摸监测结果可能就不太理想。如需解决这一问题,不建议使用硬件监测或中断信号,建议用户在自己的应用程序中进行采样滤波,并执行触摸监测。请参考 :example:`peripherals/touch_pad_interrupt`,查看以上两种触摸监测的实现方式。
|
||||
|
||||
中断触发
|
||||
^^^^^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
在对触摸监测启用中断之前,请先设置一个触摸监测阈值。然后使用 `触摸状态测量`_ 中所述的函数读取并显示触摸和释放触摸板时测得的结果。如果测量中存在噪声且相对电容变化较小,请使用滤波器。您也可以根据应用程序和环境条件,测试温度和电源电压变化对测量值的影响。
|
||||
在对触摸监测启用中断之前,请先设置一个触摸监测阈值。然后使用 `触摸状态测量`_ 中所述的函数读取并显示触摸和释放触摸传感器时测得的结果。如果测量中存在噪声且相对电容变化较小,请使用滤波器。用户也可以根据应用程序和环境条件,测试温度和电源电压变化对测量值的影响。
|
||||
|
||||
确定监测阈值后就可以在初始化时调用 :cpp:func:`touch_pad_config` 设置此阈值,或在运行时调用 :cpp:func:`touch_pad_set_thresh` 设置此阈值。
|
||||
|
||||
下一步就是设置如何触发中断。您可以设置在阈值以下或以上触发中断,具体触发模式由函数 :cpp:func:`touch_pad_set_trigger_mode` 设置。
|
||||
.. only:: esp32
|
||||
|
||||
最后您可以使用以下函数配置和管理中断调用:
|
||||
下一步就是设置如何触发中断。用户可以设置在阈值以下或以上触发中断,具体触发模式由函数 :cpp:func:`touch_pad_set_trigger_mode` 设置。
|
||||
|
||||
最后用户可以使用以下函数配置和管理中断调用:
|
||||
|
||||
* :cpp:func:`touch_pad_isr_register` / :cpp:func:`touch_pad_isr_deregister`
|
||||
* :cpp:func:`touch_pad_intr_enable` / :cpp:func:`touch_pad_intr_disable`
|
||||
|
||||
中断配置完成后,您可以调用 :cpp:func:`touch_pad_get_status` 查看中断信号来自哪个触摸板,也可以调用 :cpp:func:`touch_pad_clear_status` 清除触摸板状态信息。
|
||||
中断配置完成后,用户可以调用 :cpp:func:`touch_pad_get_status` 查看中断信号来自哪个触摸传感器,也可以调用 :cpp:func:`touch_pad_clear_status` 清除触摸传感器状态信息。
|
||||
|
||||
.. note::
|
||||
.. only:: esp32
|
||||
|
||||
触摸监测中的中断信号基于原始/未经过滤的测量值(对比用户设置的阈值),并在硬件中实现。启用软件滤波 API 并不会影响这一过程,见 :ref:`touch_pad-api-filtering-of-measurements`。
|
||||
.. note::
|
||||
|
||||
触摸监测中的中断信号基于原始/未经滤波的采样(对比用户设置的阈值),并在硬件中实现。启用软件滤波 API (请参考 :ref:`touch_pad-api-filtering-of-measurements`)并不会影响这一过程。
|
||||
|
||||
.. only:: esp32
|
||||
|
||||
从睡眠模式唤醒
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
从睡眠模式唤醒
|
||||
^^^^^^^^^^^^^^^^^^^^^^
|
||||
|
||||
如果使用触摸板中断将芯片从睡眠模式唤醒,您可以选择配置一些触摸板,例如 SET1 或 SET1 和 SET2,触摸这些触摸板将触发中断并唤醒芯片。请调用 :cpp:func:`touch_pad_set_trigger_source` 实现上述操作。
|
||||
如果使用触摸传感器中断将芯片从睡眠模式唤醒,用户可以选择配置一些触摸传感器,例如 SET1 或 SET1 和 SET2,触摸这些触摸传感器将触发中断并唤醒芯片。请调用 :cpp:func:`touch_pad_set_trigger_source` 实现上述操作。
|
||||
|
||||
您可以使用以下函数管理 'SET' 中触摸板所需的位模式配置:
|
||||
|
||||
* :cpp:func:`touch_pad_set_group_mask` / :cpp:func:`touch_pad_get_group_mask`
|
||||
* :cpp:func:`touch_pad_clear_group_mask`
|
||||
用户可以使用以下函数管理 'SET' 中触摸传感器所需的位模式配置:
|
||||
|
||||
* :cpp:func:`touch_pad_set_group_mask` / :cpp:func:`touch_pad_get_group_mask`
|
||||
* :cpp:func:`touch_pad_clear_group_mask`
|
||||
|
||||
.. _touch_pad-api-examples:
|
||||
|
||||
@ -161,11 +195,10 @@ API 参考
|
||||
|
||||
GPIO 宏查找表
|
||||
^^^^^^^^^^^^^^^^^^
|
||||
您可以使用宏定义某一触摸板通道的 GPIO,或定义某一 GPIO 的通道。例如:
|
||||
用户可以使用宏定义某一触摸传感器通道的 GPIO,或定义某一 GPIO 的通道。例如:
|
||||
|
||||
1. ``TOUCH_PAD_NUM5_GPIO_NUM`` 定义了通道 5 的 GPIO(即 GPIO 12);
|
||||
2. ``TOUCH_PAD_GPIO4_CHANNEL`` 定义了 GPIO 4 的通道(即通道 0)。
|
||||
|
||||
|
||||
.. include-build-file:: inc/touch_sensor_channel.inc
|
||||
.. include-build-file:: inc/touch_sensor_types.inc
|
||||
|
@ -21,25 +21,25 @@ SPIFFS 是一个用于 SPI NOR flash 设备的嵌入式文件系统,支持磨
|
||||
spiffsgen.py
|
||||
^^^^^^^^^^^^^^^^
|
||||
|
||||
:component_file:`spiffsgen.py<spiffs/spiffsgen.py>`(只写)是 SPIFFS 的一种 Python 实现,可用于从主机文件夹内容生成文件系统映像。打开终端并运行以下命令即可使用 ``spiffsgen.py``::
|
||||
:component_file:`spiffsgen.py<spiffs/spiffsgen.py>`(只写)是 SPIFFS 的一种 Python 实现,可用于从主机文件夹内容生成文件系统镜像。打开终端并运行以下命令即可使用 ``spiffsgen.py``::
|
||||
|
||||
python spiffsgen.py <image_size> <base_dir> <output_file>
|
||||
|
||||
参数(必选)说明如下:
|
||||
|
||||
- **image_size**:分区大小,用于烧录生成的 SPIFFS 映像;
|
||||
- **base_dir**:创建 SPIFFS 映像的目录;
|
||||
- **output_file**:SPIFFS 映像输出文件。
|
||||
- **image_size**:分区大小,用于烧录生成的 SPIFFS 镜像;
|
||||
- **base_dir**:创建 SPIFFS 镜像的目录;
|
||||
- **output_file**:SPIFFS 镜像输出文件。
|
||||
|
||||
其他参数(可选)也参与控制映像的生成,您可以运行以下帮助命令,查看这些参数的具体信息::
|
||||
其他参数(可选)也参与控制镜像的生成,用户可以运行以下帮助命令,查看这些参数的具体信息::
|
||||
|
||||
python spiffsgen.py --help
|
||||
|
||||
上述可选参数对应 SPIFFS 构建配置选项。若想顺利生成可用的映像,请确保使用的参数或配置与构建 SPIFFS 时所用的参数或配置相同。运行帮助命令将显示参数所对应的 SPIFFS 构建配置。如未指定参数,将使用帮助信息中的默认值。
|
||||
上述可选参数对应 SPIFFS 构建配置选项。若想顺利生成可用的镜像,请确保使用的参数或配置与构建 SPIFFS 时所用的参数或配置相同。运行帮助命令将显示参数所对应的 SPIFFS 构建配置。如未指定参数,将使用帮助信息中的默认值。
|
||||
|
||||
映像生成后,您可以使用 ``esptool.py`` 或 ``parttool.py`` 烧录映像。
|
||||
镜像生成后,用户可以使用 ``esptool.py`` 或 ``parttool.py`` 烧录镜像。
|
||||
|
||||
您可以在命令行或脚本中手动单独调用 ``spiffsgen.py``,也可以直接从构建系统调用 ``spiffs_create_partition_image`` 来使用 ``spiffsgen.py``。
|
||||
用户可以在命令行或脚本中手动单独调用 ``spiffsgen.py``,也可以直接从构建系统调用 ``spiffs_create_partition_image`` 来使用 ``spiffsgen.py``。
|
||||
|
||||
在 Make 构建系统中运行::
|
||||
|
||||
@ -51,14 +51,14 @@ spiffsgen.py
|
||||
|
||||
spiffs_create_partition_image(<partition> <base_dir> [FLASH_IN_PROJECT] [DEPENDS dep dep dep...])
|
||||
|
||||
在构建系统中使用 ``spiffsgen.py`` 更为方便,构建配置自动传递给 ``spiffsgen.py`` 工具,确保生成的映像可用于构建。比如,单独调用 ``spiffsgen.py`` 时需要用到 *image_size* 参数,但在构建系统中调用 ``spiffs_create_partition_image`` 时,仅需要 *partition* 参数,映像大小将直接从工程分区表中获取。
|
||||
在构建系统中使用 ``spiffsgen.py`` 更为方便,构建配置自动传递给 ``spiffsgen.py`` 工具,确保生成的镜像可用于构建。比如,单独调用 ``spiffsgen.py`` 时需要用到 *image_size* 参数,但在构建系统中调用 ``spiffs_create_partition_image`` 时,仅需要 *partition* 参数,镜像大小将直接从工程分区表中获取。
|
||||
|
||||
Make 构建系统和 CMake 构建系统结构有所不同,请注意以下几点:
|
||||
|
||||
- 在 Make 构建系统中使用 ``spiffs_create_partition_image``,需从工程 Makefile 中调用;
|
||||
- 在 CMake 构建系统中使用 ``spiffs_create_partition_image``,需从组件 CMakeLists.txt 文件调用。
|
||||
|
||||
您也可以指定 ``FLASH_IN_PROJECT``,然后使用 ``idf.py flash`` 或 ``make flash`` 将映像与应用程序二进制文件、分区表等一起自动烧录至设备,例如:
|
||||
用户也可以指定 ``FLASH_IN_PROJECT``,然后使用 ``idf.py flash`` 或 ``make flash`` 将镜像与应用程序二进制文件、分区表等一起自动烧录至设备,例如:
|
||||
|
||||
在 Make 构建系统中运行::
|
||||
|
||||
@ -69,9 +69,9 @@ Make 构建系统和 CMake 构建系统结构有所不同,请注意以下几
|
||||
|
||||
spiffs_create_partition_image(my_spiffs_partition my_folder FLASH_IN_PROJECT)
|
||||
|
||||
不指定 FLASH_IN_PROJECT/SPIFFS_IMAGE_FLASH_IN_PROJECT 也可以生成映像,但须使用 ``esptool.py``、``parttool.py`` 或自定义构建系统目标手动烧录。
|
||||
不指定 FLASH_IN_PROJECT/SPIFFS_IMAGE_FLASH_IN_PROJECT 也可以生成镜像,但须使用 ``esptool.py``、``parttool.py`` 或自定义构建系统目标手动烧录。
|
||||
|
||||
有时基本目录中的内容是在构建时生成的,您可以使用 DEPENDS/SPIFFS_IMAGE_DEPENDS 指定目标,因此可以在生成映像之前执行此目标。
|
||||
有时基本目录中的内容是在构建时生成的,用户可以使用 DEPENDS/SPIFFS_IMAGE_DEPENDS 指定目标,因此可以在生成镜像之前执行此目标。
|
||||
|
||||
在 Make 构建系统中运行::
|
||||
|
||||
@ -92,20 +92,20 @@ Make 构建系统和 CMake 构建系统结构有所不同,请注意以下几
|
||||
mkspiffs
|
||||
^^^^^^^^^^^
|
||||
|
||||
您也可以使用 `mkspiffs <https://github.com/igrr/mkspiffs>`_ 工具创建 SPIFFS 分区映像。与 ``spiffsgen.py`` 相似,`mkspiffs <https://github.com/igrr/mkspiffs>`_ 也可以用于从指定文件夹中生成映像,然后使用 ``esptool.py`` 烧录映像。
|
||||
用户也可以使用 `mkspiffs <https://github.com/igrr/mkspiffs>`_ 工具创建 SPIFFS 分区镜像。与 ``spiffsgen.py`` 相似,`mkspiffs <https://github.com/igrr/mkspiffs>`_ 也可以用于从指定文件夹中生成镜像,然后使用 ``esptool.py`` 烧录镜像。
|
||||
|
||||
该工具需要获取以下参数:
|
||||
|
||||
- **Block Size**:4096(SPI flash 标准)
|
||||
- **Page Size**:256(SPI flash 标准)
|
||||
- **Image Size**:分区大小(以字节为单位,可从分区表中获取)
|
||||
- **Partition Offset**:分区起始地址(可从分区表内获取)
|
||||
- **Partition Offset**:分区起始地址(可从分区表中获取)
|
||||
|
||||
运行以下命令,将文件夹打包成 1 MB 大小的映像::
|
||||
运行以下命令,将文件夹打包成 1 MB 大小的镜像::
|
||||
|
||||
mkspiffs -c [src_folder] -b 4096 -p 256 -s 0x100000 spiffs.bin
|
||||
|
||||
运行以下命令,将映像烧录到 ESP32(偏移量:0x110000)::
|
||||
运行以下命令,将镜像烧录到 ESP32(偏移量:0x110000)::
|
||||
|
||||
python esptool.py --chip {IDF_TARGET_PATH_NAME} --port [port] --baud [baud] write_flash -z 0x110000 spiffs.bin
|
||||
|
||||
@ -117,13 +117,13 @@ mkspiffs
|
||||
|
||||
以下情况优先选用 ``spiffsgen.py`` 工具:
|
||||
|
||||
1. 仅需在构建时简单生成 SPIFFS 映像,请选择使用 ``spiffsgen.py``,``spiffsgen.py`` 可以直接在构建系统中使用函数或命令生成 SPIFFS 映像。
|
||||
2. 主机没有可用的 C/C++ 编译器时,可以选择使用 ``spiffsgen.py`` 工具,``spiffsgen.py`` 不需要编译。
|
||||
1. 仅需在构建时简单生成 SPIFFS 镜像,请选择使用 ``spiffsgen.py``,因为 ``spiffsgen.py`` 可以直接在构建系统中使用函数或命令生成 SPIFFS 镜像。
|
||||
2. 主机没有可用的 C/C++ 编译器时,可以选择使用 ``spiffsgen.py`` 工具,因为 ``spiffsgen.py`` 不需要编译。
|
||||
|
||||
以下情况优先选用 ``mkspiffs`` 工具:
|
||||
|
||||
1. 如果您除了需要生成映像外,还需要拆包 SPIFFS 映像,请选择使用 ``mkspiffs`` 工具。``spiffsgen.py`` 目前尚不支持此功能。
|
||||
2. 如果您当前环境中 Python 解释器不可用,但主机编译器可用,或者有预编译的 ``mkspiffs`` 二进制文件,此时请选择使用 ``mkspiffs`` 工具。但是,``mkspiffs`` 没有集成到构建系统,用户必须自己完成以下工作:在构建期间编译 ``mkspiffs`` (如果未使用预编译的二进制文件),为输出文件创建构建规则或目标,将适当的参数传递给工具等。
|
||||
1. 如果用户除了需要生成镜像外,还需要拆包 SPIFFS 镜像,请选择使用 ``mkspiffs`` 工具,因为 ``spiffsgen.py`` 目前尚不支持此功能。
|
||||
2. 如果用户当前环境中 Python 解释器不可用,但主机编译器可用,或者有预编译的 ``mkspiffs`` 二进制文件,此时请选择使用 ``mkspiffs`` 工具。但是,``mkspiffs`` 没有集成到构建系统,用户必须自己完成以下工作:在构建期间编译 ``mkspiffs`` (如果未使用预编译的二进制文件),为输出文件创建构建规则或目标,将适当的参数传递给工具等。
|
||||
|
||||
另请参阅
|
||||
--------
|
||||
@ -133,7 +133,7 @@ mkspiffs
|
||||
应用示例
|
||||
-------------------
|
||||
|
||||
:example:`storage/spiffs` 目录下提供了 SPIFFS 应用示例。该示例初始化并挂载了一个 SPIFFS 分区,然后使用 POSIX 和 C 库 API 写入和读取数据。请参考 ``example`` 目录下的 README.md 文件,查看详细信息。
|
||||
:example:`storage/spiffs` 目录下提供了 SPIFFS 应用示例。该示例初始化并挂载了一个 SPIFFS 分区,然后使用 POSIX 和 C 库 API 写入和读取数据。请参考 ``example`` 目录下的 README.md 文件,获取详细信息。
|
||||
|
||||
|
||||
高级 API 参考
|
||||
|
Loading…
x
Reference in New Issue
Block a user