docs: update format issues left in CN docs

pull/12276/head
caixinying-git 2023-09-14 10:37:29 +08:00
rodzic addfc0d870
commit 10a625a7cb
39 zmienionych plików z 101 dodań i 102 usunięć

Wyświetl plik

@ -223,9 +223,9 @@ ESP-BLE-MESH 示例
* :example_file:`Wi-Fi 和 ESP-BLE-MESH 共存 <bluetooth/esp_ble_mesh/wifi_coexist/tutorial/BLE_Mesh_WiFi_Coexist_Example_Walkthrough.md>` - 该示例用于演示 Wi-Fi 和 ESP-BLE-MESH 共存的功能。简而言之,用户可在运行 ESP-BLE-MESH 时使用 Wi-Fi示例请见 :example:`example code <bluetooth/esp_ble_mesh/wifi_coexist>`
* ESP-BLE-MESH 远程配网(v1.1 新增) - :example_file:`Client, Server and device <bluetooth/esp_ble_mesh/remote_provisioning/tutorial/BLE_Mesh_Remote_Provisioning_Example_Walkthrough.md>` - 该示例用于演示 mesh 协议 v1.1 中新增的远程配网功能, 示例请见: :example:`example client code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_client>`, :example:`example server code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_server>` and :example:`example device code <bluetooth/esp_ble_mesh/remote_provisioning/unprov_dev>`.
* ESP-BLE-MESH 远程配网v1.1 新增)- :example_file:`Client, Server and device <bluetooth/esp_ble_mesh/remote_provisioning/tutorial/BLE_Mesh_Remote_Provisioning_Example_Walkthrough.md>` - 该示例用于演示 mesh 协议 v1.1 中新增的远程配网功能, 示例请见::example:`example client code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_client>`, :example:`example server code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_server>` and :example:`example device code <bluetooth/esp_ble_mesh/remote_provisioning/unprov_dev>`.
* ESP-BLE-MESH 定向转发(v1.1 新增) - :example_file:`Client and Server <bluetooth/esp_ble_mesh/directed_forwarding/tutorial/BLE_Mesh_Directed_Forwarding_Example_Walkthrough.md>` - 该示例用于演示 mesh 协议 v1.1 中新增的定向转发功能。只有路径上的节点才会对定向消息进行转发,而其他节点不参与转发, 示例请见 :example:`example client code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_client>` and :example:`example server code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_server>`.
* ESP-BLE-MESH 定向转发v1.1 新增)- :example_file:`Client and Server <bluetooth/esp_ble_mesh/directed_forwarding/tutorial/BLE_Mesh_Directed_Forwarding_Example_Walkthrough.md>` - 该示例用于演示 mesh 协议 v1.1 中新增的定向转发功能。只有路径上的节点才会对定向消息进行转发,而其他节点不参与转发, 示例请见 :example:`example client code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_client>` and :example:`example server code <bluetooth/esp_ble_mesh/remote_provisioning/rpr_server>`.
.. _esp-ble-mesh-demo-videos:

Wyświetl plik

@ -81,7 +81,7 @@ ESP-IDF 启动过程中,片外 RAM 被映射到数据虚拟地址空间,该
.. _external_ram_config_malloc:
调用 malloc() 分配片外 RAM
调用 ``malloc()`` 分配片外 RAM
---------------------------------
:ref:`CONFIG_SPIRAM_USE` 中选择 ``Make RAM allocatable using malloc() as well`` 选项,该选项为默认选项。

Wyświetl plik

@ -160,7 +160,7 @@
仅会打印异常帧中 CPU 寄存器的值,即引发 CPU 异常或者其它严重错误时刻的值。
紧急处理程序如果是因 abort() 而调用,则不会打印寄存器转储。
紧急处理程序如果是因 ``abort()`` 而调用,则不会打印寄存器转储。
.. only:: CONFIG_IDF_TARGET_ARCH_XTENSA

Wyświetl plik

@ -1695,7 +1695,7 @@ WPA2-Enterprise 是企业无线网络的安全认证机制。在连接到接入
无线资源管理
---------------------------
无线电资源测量802.11k旨在改善网络内流量的分配方式。在无线局域网中,一般情况下,无线设备会连接发射信号最强的接入点 (AP)。根据用户的数量和地理位置,这种分配方式有时会导致某个接入点超负荷而其它接入点利用不足,从而导致整体网络性能下降。在符合 802.11k 规范的网络中,如果信号最强的 AP 已满负荷加载,无线设备则转移到其它未充分利用的 AP。尽管信号可能较弱但由于更有效地利用了网络资源总体吞吐量会更大。
无线电资源测量 (802.11k) 旨在改善网络内流量的分配方式。在无线局域网中,一般情况下,无线设备会连接发射信号最强的接入点 (AP)。根据用户的数量和地理位置,这种分配方式有时会导致某个接入点超负荷而其它接入点利用不足,从而导致整体网络性能下降。在符合 802.11k 规范的网络中,如果信号最强的 AP 已满负荷加载,无线设备则转移到其它未充分利用的 AP。尽管信号可能较弱但由于更有效地利用了网络资源总体吞吐量会更大。
目前 802.11k 的实现支持信标测量报告、链路测量报告和邻居请求。
@ -2244,7 +2244,7 @@ Wi-Fi 多根天线配置
子载波的虚部和实部的使用请参考下表。
+----------------+-------------------+------------------------------+------------------------------+
| PHY 标准 | 子载波范围 | 导频子载波 | 子载波个数(总数/数据子载波) |
| PHY 标准 | 子载波范围 | 导频子载波 | 子载波个数(总数/数据子载波)|
+================+===================+==============================+==============================+
| 802.11a/g | -26 to +26 | -21, -7, +7, +21 | 52 total, 48 usable |
+----------------+-------------------+------------------------------+------------------------------+

Wyświetl plik

@ -211,7 +211,7 @@ ESP-NETIF L2 TAP 可以使用 ``O_NONBLOCK`` 文件状态标志打开,确保 `
^^^^^^^^^^
已开启并完成配置的 ESP-NETIF L2 TAP 文件描述符可通过 ``read()`` 获取入站帧。读取可以是阻塞或非阻塞的,具体取决于 ``O_NONBLOCK`` 文件状态标志的实际状态。当文件状态标志设置为阻塞时,读取程序将等待,直到接收到帧,并将上下文切换到其他任务。当文件状态标志设置为非阻塞时,立即返回读取程序。在此情况下,如果已经帧已经入队,则返回一帧,否则函数指示队列为空。与文件描述符关联的队列帧数量受 :ref:`CONFIG_ESP_NETIF_L2_TAP_RX_QUEUE_SIZE` Kconfig 选项限制。一旦队列里帧的数量达到配置的阈值,新到达的帧将被丢弃,直到队列有足够的空间接受传入的流量(队尾丢弃队列管理)。
| 成功时read() 函数返回读取的字节数。当目标缓冲区的大小为 0 时,函数返回 0。出错时函数返回 -1并设置 ``errno`` 以指示错误类型。
| 成功时,``read()`` 函数返回读取的字节数。当目标缓冲区的大小为 0 时,函数返回 0。出错时函数返回 -1并设置 ``errno`` 以指示错误类型。
| * EBADF - 文件描述符无效。
| * EAGAIN - 文件描述符标记为非阻塞 (``O_NONBLOCK``),但读取受阻塞。

Wyświetl plik

@ -89,7 +89,7 @@ GPIO 捆绑包操作
1. 分配一个 GPIO 捆绑包::cpp:func:`dedic_gpio_new_bundle`
2. 查询该包占用的掩码::cpp:func:`dedic_gpio_get_out_mask` 和/或 :cpp:func:`dedic_gpio_get_in_mask`
3. 调用 CPU LL apis (如 `cpu_ll_write_dedic_gpio_mask`) 或使用该掩码编写汇编代码
3. 调用 CPU LL apis(如 `cpu_ll_write_dedic_gpio_mask`或使用该掩码编写汇编代码
4. 切换 IO 的最快捷方式是使用专用的“设置/清除”指令:
.. only:: esp32s2 or esp32s3

Wyświetl plik

@ -8,7 +8,7 @@
如果外设 X 需要向外设 Y 发起事件通知,一般只能通过 CPU 中断实现。在此过程中CPU 会代表外设 X给外设 Y 发送通知。然而在对时间敏感的应用程序中CPU 中断引发的延迟不容忽视。
通过引入事件任务矩阵ETM模块,部分外设可以直接通过预先设置的连接关系,将事件通知发送给其他外设,无需 CPU 中断介入。由此,外设实现精确、低延迟同步,并减轻 CPU 负担。
通过引入事件任务矩阵 (ETM) 模块,部分外设可以直接通过预先设置的连接关系,将事件通知发送给其他外设,无需 CPU 中断介入。由此,外设实现精确、低延迟同步,并减轻 CPU 负担。
.. blockdiag:: /../_static/diagrams/etm/etm_channel.diag
:caption: ETM 通道概述

Wyświetl plik

@ -60,15 +60,15 @@ GPIO 汇总
.. only:: SOC_GPIO_SUPPORT_PIN_HYS_CTRL_BY_EFUSE
每个引脚可以独立启用迟滞功能。默认情况下,它由 eFuse 控制,且处于关闭状态,但也可以由软件控制启用或禁用。可以通过配置 :cpp:member:`gpio_config_t::hys_ctrl_mode` 来选择迟滞控制模式。迟滞控制模式会和其余 GPIO 配置一起在 :cpp:func:`gpio_config` 中生效。
每个引脚可以独立启用迟滞功能。默认情况下,它由 eFuse 控制,且处于关闭状态,但也可以由软件控制启用或禁用。可以通过配置 :cpp:member:`gpio_config_t::hys_ctrl_mode` 来选择迟滞控制模式。迟滞控制模式会和其余 GPIO 配置一起在 :cpp:func:`gpio_config` 中生效。
.. note::
当迟滞功能由 eFuse 控制时,仍然可以独立的控制每个引脚的该功能,需要 `烧断 eFuse <https://docs.espressif.com/projects/esptool/en/latest/esp32/espefuse/index.html>`_ ,以在特定 GPIO 启用迟滞功能。
当迟滞功能由 eFuse 控制时,仍然可以独立的控制每个引脚的该功能,需要 `烧断 eFuse <https://docs.espressif.com/projects/esptool/en/latest/esp32/espefuse/index.html>`_ ,以在特定 GPIO 启用迟滞功能。
.. only:: not SOC_GPIO_SUPPORT_PIN_HYS_CTRL_BY_EFUSE
每个引脚可以独立启用迟滞功能。默认情况下,它处于关闭状态。可以通过配置 :cpp:member:`gpio_config_t::hys_ctrl_mode` 来选择启用与否。迟滞控制模式会和其余 GPIO 配置一起在 :cpp:func:`gpio_config` 中生效。
每个引脚可以独立启用迟滞功能。默认情况下,它处于关闭状态。可以通过配置 :cpp:member:`gpio_config_t::hys_ctrl_mode` 来选择启用与否。迟滞控制模式会和其余 GPIO 配置一起在 :cpp:func:`gpio_config` 中生效。
应用示例

Wyświetl plik

@ -284,7 +284,7 @@
电源管理
^^^^^^^^
有些电源管理的策略会在某些时刻关闭时钟源,或者改变时钟源的频率,以求降低功耗。比如在启用 DFS 后, APB 时钟源会降低频率。如果浅睡眠light sleep 模式也被开启, PLL 和 XTAL 时钟都会被默认关闭,从而导致 GPTimer 的计时不准确。
有些电源管理的策略会在某些时刻关闭时钟源,或者改变时钟源的频率,以求降低功耗。比如在启用 DFS 后,APB 时钟源会降低频率。如果浅睡眠 (Light-sleep) 模式也被开启,PLL 和 XTAL 时钟都会被默认关闭,从而导致 GPTimer 的计时不准确。
驱动程序会根据具体的时钟源选择,通过创建不同的电源锁来避免上述情况的发生。驱动会在 :cpp:func:`gptimer_enable` 函数中增加电源锁的引用计数,并在 :cpp:func:`gptimer_disable` 函数中减少电源锁的引用计数,从而保证了在 :cpp:func:`gptimer_enable`:cpp:func:`gptimer_disable` 之间GPTimer 的时钟源始处于稳定工作的状态。

Wyświetl plik

@ -81,7 +81,7 @@ PCNT 单元和通道分别用 :cpp:type:`pcnt_unit_handle_t` 与 :cpp:type:`pcnt
- :cpp:member:`pcnt_chan_config_t::edge_gpio_num`:cpp:member:`pcnt_chan_config_t::level_gpio_num` 用于指定 **边沿** 信号和 **电平** 信号对应的 GPIO 编号。请注意,这两个参数未被使用时,可以设置为 `-1`,即成为 **虚拟 IO** 。对于一些简单的脉冲计数应用,电平信号或边沿信号是固定的(即不会发生改变),可将其设置为虚拟 IO然后该信号会被连接到一个固定的高/低逻辑电平,这样就可以在通道分配时回收一个 GPIO节省一个 GPIO 管脚资源。
- :cpp:member:`pcnt_chan_config_t::virt_edge_io_level`:cpp:member:`pcnt_chan_config_t::virt_level_io_level` 用于指定 **边沿** 信号和 **电平** 信号的虚拟 IO 电平,以保证这些控制信号处于确定状态。请注意,只有在 :cpp:member:`pcnt_chan_config_t::edge_gpio_num`:cpp:member:`pcnt_chan_config_t::level_gpio_num` 设置为 `-1` 时,这两个参数才有效。
- :cpp:member:`pcnt_chan_config_t::invert_edge_input`:cpp:member:`pcnt_chan_config_t::invert_level_input` 用于确定信号在输入 PCNT 之前是否需要被翻转,信号翻转由 GPIO 矩阵 (不是 PCNT 单元) 执行。
- :cpp:member:`pcnt_chan_config_t::invert_edge_input`:cpp:member:`pcnt_chan_config_t::invert_level_input` 用于确定信号在输入 PCNT 之前是否需要被翻转,信号翻转由 GPIO 矩阵(不是 PCNT 单元)执行。
- :cpp:member:`pcnt_chan_config_t::io_loop_back` 仅用于调试,它可以使能 GPIO 的输入和输出路径。这样,就可以通过调用位于同一 GPIO 上的函数 :cpp:func:`gpio_set_level` 来模拟脉冲信号。
调用函数 :cpp:func:`pcnt_new_channel`,将 :cpp:type:`pcnt_chan_config_t` 作为输入值并调用 :cpp:func:`pcnt_new_unit` 返回的 PCNT 单元句柄,可对 PCNT 通道进行分配和初始化。如果该函数正常运行,会返回一个 PCNT 通道句柄。如果没有可用的 PCNT 通道PCNT 通道资源全部被占用),该函数会返回错误 :c:macro:`ESP_ERR_NOT_FOUND`。可用的 PCNT 通道总数记录在 :c:macro:`SOC_PCNT_CHANNELS_PER_UNIT`,以供参考。注意,为某个单元安装 PCNT 通道时,应确保该单元处于初始状态,否则函数 :cpp:func:`pcnt_new_channel` 会返回错误 :c:macro:`ESP_ERR_INVALID_STATE`
@ -291,7 +291,7 @@ PCNT 内部的硬件计数器会在计数达到高/低门限的时候自动清
电源管理
^^^^^^^^^^
使能电源管理 (即 :ref:`CONFIG_PM_ENABLE` 开启) 后,在进入 Light-sleep 模式之前,系统会调整 APB 的频率。这会改变 PCNT 毛刺滤波器的参数,从而可能导致有效信号被滤除。
使能电源管理(即 :ref:`CONFIG_PM_ENABLE` 开启)后,在进入 Light-sleep 模式之前,系统会调整 APB 的频率。这会改变 PCNT 毛刺滤波器的参数,从而可能导致有效信号被滤除。
驱动通过获取 :cpp:enumerator:`ESP_PM_APB_FREQ_MAX` 类型的电源管理锁来防止系统修改 APB 频率。每当通过 :cpp:func:`pcnt_unit_set_glitch_filter` 使能毛刺滤波器时,驱动可以保证系统在 :cpp:func:`pcnt_unit_enable` 使能 PCNT 单元后获取电源管理锁。而系统调用 :cpp:func:`pcnt_unit_disable` 之后,驱动会释放电源管理锁。
@ -306,7 +306,7 @@ Konfig 选项 :ref:`CONFIG_PCNT_ISR_IRAM_SAFE` 可以实现以下功能:
1. 即使缓存被禁用也可以使能中断服务
2. 将 ISR 使用的所有函数都放入 IRAM 中 [2]_
3. 将驱动对象放入 DRAM (防止驱动对象被意外映射到 PSRAM 中)
3. 将驱动对象放入 DRAM(防止驱动对象被意外映射到 PSRAM 中)
这样,在缓存被禁用时,中断也可运行,但是这也会增加 IRAM 的消耗。
@ -338,7 +338,7 @@ Konfig 选项 :ref:`CONFIG_PCNT_ISR_IRAM_SAFE` 可以实现以下功能:
支持的 Kconfig 选项
^^^^^^^^^^^^^^^^^^^^^^
- :ref:`CONFIG_PCNT_CTRL_FUNC_IN_IRAM` 用于确定 PCNT 控制函数的位置 (放在 IRAM 还是 flash 中),请参考 :ref:`pcnt-iram-safe` 获取更多信息。
- :ref:`CONFIG_PCNT_CTRL_FUNC_IN_IRAM` 用于确定 PCNT 控制函数的位置(放在 IRAM 还是 flash 中),请参考 :ref:`pcnt-iram-safe` 获取更多信息。
- :ref:`CONFIG_PCNT_ISR_IRAM_SAFE` 用于控制当缓存禁用时,默认的 ISR 句柄是否可以工作,请参考 :ref:`pcnt-iram-safe` 获取更多信息。
- :ref:`CONFIG_PCNT_ENABLE_DEBUG_LOG` 用于使能调试日志输出,而这会增大固件二进制文件。

Wyświetl plik

@ -92,7 +92,7 @@ RMT 接收器可以对输入信号采样,将其转换为 RMT 数据格式,
- :cpp:member:`rmt_tx_channel_config_t::with_dma` 为通道启用 DMA 后端。启用 DMA 后端可以释放 CPU 上的大部分通道工作负载,显著减轻 CPU 负担。但并非所有 ESP 芯片都支持 DMA 后端,在启用此选项前,请参阅 [`TRM <{IDF_TARGET_TRM_EN_URL}#rmt>`__]。若所选芯片不支持 DMA 后端,可能会报告 :c:macro:`ESP_ERR_NOT_SUPPORTED` 错误。
- :cpp:member:`rmt_tx_channel_config_t::io_loop_back` 启用通道所分配的 GPIO 上的输入和输出功能,将发送通道和接收通道绑定到同一个 GPIO 上,从而实现回环功能。
- :cpp:member:`rmt_tx_channel_config_t::io_od_mode` 配置通道分配的 GPIO 为开漏模式 (open-drain)。当与 :cpp:member:`rmt_tx_channel_config_t::io_loop_back` 结合使用时,可以实现双向总线,如 1-wire。
- :cpp:member:`rmt_tx_channel_config_t::intr_priority` 设置中断的优先级。如果设置为 ``0`` 驱动将会使用一个中低优先级的中断优先级可能为12或3否则会使用 :cpp:member:`rmt_tx_channel_config_t::intr_priority` 指定的优先级。请使用优先级序号123而不是bitmask的形式((1<<1)(1<<2)(1<<3))。请注意,中断优先级一旦设置,在 :cpp:func:`rmt_del_channel` 被调用之前不可再次修改。
- :cpp:member:`rmt_tx_channel_config_t::intr_priority` 设置中断的优先级。如果设置为 ``0`` ,驱动将会使用一个中低优先级的中断(优先级可能为 12 3否则会使用 :cpp:member:`rmt_tx_channel_config_t::intr_priority` 指定的优先级。请使用优先级序号 (1, 2, 3),而不是 bitmask 的形式((1<<1)(1<<2)(1<<3))。请注意,中断优先级一旦设置,在 :cpp:func:`rmt_del_channel` 被调用之前不可再次修改。
将必要参数填充到结构体 :cpp:type:`rmt_tx_channel_config_t` 后,可以调用 :cpp:func:`rmt_new_tx_channel` 来分配和初始化 TX 通道。如果函数运行正确,会返回 RMT 通道句柄;如果 RMT 资源池内缺少空闲通道,会返回 :c:macro:`ESP_ERR_NOT_FOUND` 错误;如果硬件不支持 DMA 后端等部分功能,则返回 :c:macro:`ESP_ERR_NOT_SUPPORTED` 错误。
@ -126,7 +126,7 @@ RMT 接收器可以对输入信号采样,将其转换为 RMT 数据格式,
- :cpp:member:`rmt_rx_channel_config_t::invert_in` 在输入信号传递到 RMT 接收器前对其进行反转。该反转由 GPIO 交换矩阵完成,而非 RMT 外设。
- :cpp:member:`rmt_rx_channel_config_t::with_dma` 为通道启用 DMA 后端。启用 DMA 后端可以释放 CPU 上的大部分通道工作负载,显著减轻 CPU 负担。但并非所有 ESP 芯片都支持 DMA 后端,在启用此选项前,请参阅 [`TRM <{IDF_TARGET_TRM_EN_URL}#rmt>`__]。若所选芯片不支持 DMA 后端,可能会报告 :c:macro:`ESP_ERR_NOT_SUPPORTED` 错误。
- :cpp:member:`rmt_rx_channel_config_t::io_loop_back` 启用通道所分配的 GPIO 上的输入和输出功能,将发送通道和接收通道绑定到同一个 GPIO 上,从而实现回环功能。
- :cpp:member:`rmt_rx_channel_config_t::intr_priority` 设置中断的优先级。如果设置为 ``0`` 驱动将会使用一个中低优先级的中断优先级可能为12或3否则会使用 :cpp:member:`rmt_rx_channel_config_t::intr_priority` 指定的优先级。请使用优先级序号123而不是bitmask的形式((1<<1)(1<<2)(1<<3))。请注意,中断优先级一旦设置,在 :cpp:func:`rmt_del_channel` 被调用之前不可再次修改。
- :cpp:member:`rmt_rx_channel_config_t::intr_priority` 设置中断的优先级。如果设置为 ``0`` ,驱动将会使用一个中低优先级的中断(优先级可能为 12 3否则会使用 :cpp:member:`rmt_rx_channel_config_t::intr_priority` 指定的优先级。请使用优先级序号 (123),而不是 bitmask 的形式((1<<1)(1<<2)(1<<3))。请注意,中断优先级一旦设置,在 :cpp:func:`rmt_del_channel` 被调用之前不可再次修改。
将必要参数填充到结构体 :cpp:type:`rmt_rx_channel_config_t` 后,可以调用 :cpp:func:`rmt_new_rx_channel` 来分配和初始化 RX 通道。如果函数运行正确,会返回 RMT 通道句柄;如果 RMT 资源池内缺少空闲通道,会返回 :c:macro:`ESP_ERR_NOT_FOUND` 错误;如果硬件不支持 DMA 后端等部分功能,则返回 :c:macro:`ESP_ERR_NOT_SUPPORTED` 错误。

Wyświetl plik

@ -1,4 +1,4 @@
SPI Flash API
SPI flash API
=================
:link_to_translation:`en:[English]`
@ -30,10 +30,10 @@ spi_flash 组件提供外部 flash 数据读取、写入、擦除和内存映射
仅有主 flash 芯片支持加密操作,外接(经 SPI1 使用其他不同片选访问,或经其它 SPI 总线访问)的 flash 芯片则不支持加密操作。硬件的限制也决定了仅有主 flash 支持从 cache 当中读取。
Flash 功能支持情况
flash 功能支持情况
-----------------------------------
支持的 Flash 列表
支持的 flash 列表
^^^^^^^^^^^^^^^^^^^^^
不同厂家的 flash 特性有不同的操作方式,因此需要特殊的驱动支持。当前驱动支持大多数厂家 flash 24 位地址范围内的快速/慢速读,以及二线模式 (DIO/DOUT),因为他们不需要任何厂家的自定义命令。
@ -50,9 +50,9 @@ Flash 功能支持情况
.. note::
只有 {IDF_TARGET_NAME} 支持上述某个 flash 时,芯片的驱动才默认支持这款 flash。可使用 menuconfig 中的 ``Component config`` > ``SPI Flash driver`` > ``Auto-detect flash chips`` 选项来使能/禁用某个 flash。
只有 {IDF_TARGET_NAME} 支持上述某个 flash 时,芯片的驱动才默认支持这款 flash。可使用 menuconfig 中的 ``Component config`` > ``SPI flash driver`` > ``Auto-detect flash chips`` 选项来使能/禁用某个 flash。
Flash 可选的功能
flash 可选的功能
^^^^^^^^^^^^^^^^^^^^
.. toctree::
@ -64,7 +64,7 @@ Flash 可选的功能
.. only:: esp32s3
- OPI flash - 表示 Flash 支持 8 线模式。
- OPI flash - 表示 flash 支持 8 线模式。
- 32 比特地址的 flash 支持 - 通常意味着拥有大于 16 MB 内存空间的大容量 flash 需要更长的地址去访问。
@ -87,7 +87,7 @@ Flash 可选的功能
自定义 flash 芯片驱动 <spi_flash_override_driver>
初始化 Flash 设备
初始化 flash 设备
---------------------------
在使用 ``esp_flash_*`` API 之前,需要在 SPI 总线上初始化芯片,步骤如下:
@ -100,7 +100,7 @@ Flash 可选的功能
.. note:: 当前,已支持多个 flash 芯片连接到同一总线。
SPI Flash 访问 API
SPI flash 访问 API
--------------------
如下所示为处理 flash 中数据的函数集:
@ -113,7 +113,7 @@ SPI Flash 访问 API
一般来说,请尽量避免对主 SPI flash 芯片直接使用原始 SPI flash 函数。如需对主 SPI flash 芯片进行操作,请使用 :ref:`分区专用函数 <flash-partition-apis>`
SPI Flash 容量
SPI flash 容量
--------------
SPI flash 容量由引导加载程序镜像头部(烧录偏移量为 0x1000的一个字段进行配置。
@ -122,7 +122,7 @@ SPI flash 容量由引导加载程序镜像头部(烧录偏移量为 0x1000
如需在运行时覆盖已配置的 flash 容量,请配置 ``g_rom_flashchip`` 结构中的 ``chip_size````esp_flash_*`` 函数使用此容量(于软件和 ROM 中)进行边界检查。
SPI1 Flash 并发约束
SPI1 flash 并发约束
-----------------------------------------
.. toctree::
@ -135,7 +135,7 @@ SPI1 Flash 并发约束
指令/数据 cache用以执行固件与 SPI1 外设(由像 SPI flash 驱动一样的驱动程序控制)共享 SPI0/1 总线。因此,在 SPI1 总线上调用 SPI flash API包括访问主 flash会对整个系统造成显著的影响。请参阅 :doc:`spi_flash_concurrency`,查看详细信息。
SPI Flash 加密
SPI flash 加密
--------------------
SPI flash 内容支持加密,并在硬件层进行透明解密。
@ -149,11 +149,11 @@ SPI flash 内容支持加密,并在硬件层进行透明解密。
{IDF_TARGET_NAME} 的内存硬件可以将 flash 部分区域映射到指令地址空间和数据地址空间。此映射仅用于读操作,不能通过写入 flash 映射的存储区域来改变 flash 中的内容。
Flash 在 {IDF_TARGET_CACHE_SIZE} 页进行映射。内存映射硬件既可将 flash 映射到数据地址空间,也能映射到指令地址空间。请查看技术参考手册,了解内存映射硬件的详细信息及有关限制。
flash 在 {IDF_TARGET_CACHE_SIZE} 页进行映射。内存映射硬件既可将 flash 映射到数据地址空间,也能映射到指令地址空间。请查看技术参考手册,了解内存映射硬件的详细信息及有关限制。
请注意,有些页被用于将应用程序映射到内存中,因此实际可用的页会少于硬件提供的总数。
启用 :doc:`Flash 加密 </security/flash-encryption>` 时,使用内存映射区域从 flash 读取数据是解密 flash 的唯一方法,解密需在硬件层进行。
启用 :doc:`flash 加密 </security/flash-encryption>` 时,使用内存映射区域从 flash 读取数据是解密 flash 的唯一方法,解密需在硬件层进行。
内存映射 API 在 ``spi_flash_mmap.h````esp_partition.h`` 中声明:
@ -172,7 +172,7 @@ Flash 在 {IDF_TARGET_CACHE_SIZE} 页进行映射。内存映射硬件既可将
由于 mmap 是由 cache 支持的因此mmap 也仅能用在主 flash 上。
SPI Flash 实现
SPI flash 实现
--------------
``esp_flash_t`` 结构体包含芯片数据和该 API 的三个重要部分:
@ -247,7 +247,7 @@ OS 函数层目前支持访问锁和延迟的方法。
执行 flash 操作时CPU A 和 CPU B 仍然可以执行中断操作。默认中断代码均存储于 RAM 中,如果新添加了中断分配 API则应添加一个标志位以请求在 flash 操作期间禁用该新分配的中断。
Flash 操作完成后CPU A 上的函数将设置另一标志位,即 ``s_flash_op_complete``,用以通知 CPU B 上的任务可以重新启用 cache 并释放 CPU。接着CPU A 上的函数也重新启用 cache并将控制权返还给调用者。
flash 操作完成后CPU A 上的函数将设置另一标志位,即 ``s_flash_op_complete``,用以通知 CPU B 上的任务可以重新启用 cache 并释放 CPU。接着CPU A 上的函数也重新启用 cache并将控制权返还给调用者。
另外,所有 API 函数均受互斥量 ``s_flash_op_mutex`` 保护。
@ -268,7 +268,7 @@ Flash 操作完成后CPU A 上的函数将设置另一标志位,即 ``s_fla
spi_flash_idf_vs_rom
SPI Flash API 参考
SPI flash API 参考
-------------------------
.. include-build-file:: inc/esp_flash_spi_init.inc
@ -278,7 +278,7 @@ SPI Flash API 参考
.. include-build-file:: inc/esp_flash_err.inc
.. include-build-file:: inc/esp_spi_flash_counters.inc
Flash 加密 API 参考
flash 加密 API 参考
-----------------------------
.. include-build-file:: inc/esp_flash_encrypt.inc

Wyświetl plik

@ -185,7 +185,7 @@
* 触摸传感器充放电参数:
* 电压门限::cpp:func:`touch_pad_set_voltage`
* 速率(斜率) :cpp:func:`touch_pad_set_cnt_mode`
* 速率(斜率):cpp:func:`touch_pad_set_cnt_mode`
.. only:: SOC_TOUCH_VERSION_1

Wyświetl plik

@ -10,13 +10,13 @@
- :doc:`虚拟文件系统 (VFS) <vfs>` 库提供了一个用于注册文件系统驱动的接口。SPIFFS、FAT 以及多种其他的文件系统库都基于 VFS。
- :doc:`SPIFFS <spiffs>` 是一个专为 SPI NOR Flash 优化的磨损均衡的文件系统,非常适用于小分区和低吞吐率的应用。
- :doc:`FAT <fatfs>` 是一个可用于 SPI Flash 或者 SD/MMC 存储卡的标准文件系统。
- :doc:`磨损均衡 <wear-levelling>` 库实现了一个适用于 SPI NOR Flash 的 Flash 翻译层 (FTL),用于 Flash 中 FAT 分区的容器。
- :doc:`磨损均衡 <wear-levelling>` 库实现了一个适用于 SPI NOR Flash 的 flash 翻译层 (FTL),用于 flash 中 FAT 分区的容器。
.. note::
建议使用高层次的 API``esp_partition`` 或者文件系统)而非低层次驱动 API 去访问 SPI NOR Flash。
由于 NOR Flash 和乐鑫硬件的一些限制,访问主 Flash 会影响各个系统的性能。关于这些限制的更多信息,参见 :doc:`SPI Flash Documents </api-reference/peripherals/spi_flash/index>`
由于 NOR Flash 和乐鑫硬件的一些限制,访问主 flash 会影响各个系统的性能。关于这些限制的更多信息,参见 :doc:`SPI Flash Documents </api-reference/peripherals/spi_flash/index>`
.. toctree::
:maxdepth: 1

Wyświetl plik

@ -172,7 +172,7 @@ NVS 库在其操作中主要使用两个实体:页面和条目。页面是一
此时 flash 已完成初始化,页头部写入 flash页面已具备有效序列号。页面中存在一些空条目可写入数据。任意时刻至多有一个页面处于活跃状态。
写满状态
Flash 已写满键值对,状态不再改变。
flash 已写满键值对,状态不再改变。
用户无法向写满状态下的页面写入新键值对,但仍可将一些键值对标记为已擦除。
擦除状态
@ -181,7 +181,7 @@ NVS 库在其操作中主要使用两个实体:页面和条目。页面是一
损坏状态
页头部包含无效数据,无法进一步解析该页面中的数据,因此之前写入该页面的所有条目均无法访问。相应的 flash 扇区并不会被立即擦除,而是与其他处于未初始化状态的扇区一起等待后续使用。这一状态可能对调试有用。
Flash 扇区映射至逻辑页面并没有特定的顺序NVS 库会检查存储在 flash 扇区的页面序列号,并根据序列号组织页面。
flash 扇区映射至逻辑页面并没有特定的顺序NVS 库会检查存储在 flash 扇区的页面序列号,并根据序列号组织页面。
::

Wyświetl plik

@ -68,7 +68,7 @@ ESP-IDF :example:`storage/sd_card` 目录下提供了 SDMMC 驱动与 FatFs 库
1. I/O 中止 (0x06) 寄存器:在该寄存器中设置 RES 位可重置卡的 IO 部分;
2. 总线接口控制 (0x07) 寄存器:如果主机和插槽配置中启用 4 线模式,则驱动程序会尝试在该寄存器中设置总线宽度字段。如果字段设置成功,则从机支持 4 线模式,主机也切换至 4 线模式;
3. 高速0x13寄存器:如果主机配置中启用高速模式,则该寄存器的 SHS 位会被设置。
3. 高速 (0x13) 寄存器:如果主机配置中启用高速模式,则该寄存器的 SHS 位会被设置。
注意,驱动程序不会在 (1) I/O 使能寄存器和 Int 使能寄存器,及 (2) I/O 块大小中,设置任何位。应用程序可通过调用 :cpp:func:`sdmmc_io_write_byte` 来设置相关位。

Wyświetl plik

@ -92,7 +92,7 @@ ESP-IDF 中集成的电源管理算法可以根据应用程序组件的需求,
启用动态调频后APB 频率可在一个 RTOS 滴答周期内多次更改。有些外设不受 APB 频率变更的影响但有些外设可能会出现问题。例如Timer Group 外设定时器会继续计数,但定时器计数的速度将随 APB 频率的变更而变更。
时钟频率不受 APB 频率影响的外设时钟源通常有 ``REF_TICK``, ``XTAL``, ``RC_FAST`` (i.e. ``RTC_8M``)。因此,为了保证外设在 DFS 期间的所有行为一致,建议在上述时钟中选择其一作为外设的时钟源。如果想要了解更多详情可以浏览每个外设 ”API 参考 > 外设 API“ 页面的 “电源管理” 章节。
时钟频率不受 APB 频率影响的外设时钟源通常有 ``REF_TICK``, ``XTAL``, ``RC_FAST`` (i.e., ``RTC_8M``)。因此,为了保证外设在 DFS 期间的所有行为一致,建议在上述时钟中选择其一作为外设的时钟源。如果想要了解更多详情可以浏览每个外设 ”API 参考 > 外设 API“ 页面的 “电源管理” 章节。
目前以下外设驱动程序可感知动态调频,并在调频期间使用 ``ESP_PM_APB_FREQ_MAX`` 锁:

Wyświetl plik

@ -15,9 +15,9 @@
**贡献者** 是指向乐鑫提交贡献的个人版权所有者,本文档中称“贡献者”或“您”。如果您以雇员身份提交贡献,且该贡献属于您的部分工作内容,您的雇主须已批准此协议,或作为实体签署此协议。
**贡献** 是指您向乐鑫提交的、您拥有版权的原创作品(软件和(或)文档),包括对既有工作进行的任何修改或补充。如果您没有该原创作品的完整版权,请在 GitHub 上向乐鑫提交评论。
**贡献** 是指您向乐鑫提交的、您拥有版权的原创作品(软件/文档),包括对既有工作进行的任何修改或补充。如果您没有该原创作品的完整版权,请在 GitHub 上向乐鑫提交评论。
**版权** 是指在原创作品的整个存续期内(包括许可的延期),保护您所拥有或控制的原创作品的所有权利,包括版权、精神权、邻接权等,视具体情况而定。
**版权** 是指在原创作品的整个存续期内(包括许可的延期),保护您所拥有或控制的原创作品的所有权利,包括版权、精神权、邻接权等,视具体情况而定。
**材料** 是指乐鑫向第三方提供的软件或文档。当本协议涉及多个软件项目时,材料指您的贡献内容所提交到的软件或文档。在您提交贡献后,此贡献可能被包含在材料中。

Wyświetl plik

@ -67,7 +67,7 @@
.. attention::
如果使用的是 ESP32-DevKitC板载 ESP32-SOLO-1 模组)或 ESP32-DevKitM-1板载 ESP32-MINI-1(1U) 模组),请在烧写示例程序前,前往 ``menuconfig`` 中使能单核模式:ref:`CONFIG_FREERTOS_UNICORE`
如果使用的是 ESP32-DevKitC板载 ESP32-SOLO-1 模组)或 ESP32-DevKitM-1板载 ESP32-MINI-1(1U) 模组),请在烧写示例程序前,前往 ``menuconfig`` 中使能单核模式 (:ref:`CONFIG_FREERTOS_UNICORE`)
.. note::
@ -93,4 +93,3 @@
``USB CDC``
3. 保存设置,退出 ``menuconfig`` 界面。

Wyświetl plik

@ -13,7 +13,7 @@ ESP-IDF 编程指南
.. only:: html
本文档仅包含针对 {IDF_TARGET_NAME} 芯片的 ESP-IDF 使用。如需了解其他芯片,请在页面左上方的下拉菜单中选择的目标芯片。
本文档仅包含针对 {IDF_TARGET_NAME} 芯片的 ESP-IDF 使用。如需了解其他芯片,请在页面左上方的下拉菜单中选择的目标芯片。
.. only:: latex