diff --git a/components/driver/i2c.c b/components/driver/i2c.c index 878329a9fad3..e020cfbbb270 100644 --- a/components/driver/i2c.c +++ b/components/driver/i2c.c @@ -687,7 +687,7 @@ esp_err_t i2c_param_config(i2c_port_t i2c_num, const i2c_config_t *i2c_conf) } #if SOC_I2C_SUPPORT_SLAVE else { - #if CONFIG_IDF_TARGET_ESP32S2 + #if SOC_I2C_SUPPORT_REF_TICK /* On ESP32-S2, APB clock shall always be used in slave mode as the * other one, I2C_SCLK_REF_TICK, is too slow, even for sampling a * 100KHz SCL. */ diff --git a/components/driver/include/driver/i2c.h b/components/driver/include/driver/i2c.h index 248c94af5a67..99974db42458 100644 --- a/components/driver/include/driver/i2c.h +++ b/components/driver/include/driver/i2c.h @@ -91,9 +91,10 @@ typedef void *i2c_cmd_handle_t; /*!< I2C command handle */ /** * @brief Install an I2C driver + * @note Not all Espressif chips can support slave mode (e.g. ESP32C2) * * @param i2c_num I2C port number - * @param mode I2C mode (either master or slave). ESP8684 doesn't support i2c slave mode + * @param mode I2C mode (either master or slave). * @param slv_rx_buf_len Receiving buffer size. Only slave mode will use this value, it is ignored in master mode. * @param slv_tx_buf_len Sending buffer size. Only slave mode will use this value, it is ignored in master mode. * @param intr_alloc_flags Flags used to allocate the interrupt. One or multiple (ORred) ESP_INTR_FLAG_* values. diff --git a/components/driver/test/test_i2c.c b/components/driver/test/test_i2c.c index 8b4ff403c015..fa601fc5105e 100644 --- a/components/driver/test/test_i2c.c +++ b/components/driver/test/test_i2c.c @@ -25,6 +25,7 @@ #include "hal/gpio_hal.h" #include "hal/uart_ll.h" +#if SOC_I2C_SUPPORT_SLAVE // i2c test can't work without slave #define DATA_LENGTH 512 /*!clk_conf.sclk_sel = (src_clk == I2C_SCLK_RTC) ? 1 : 0; diff --git a/components/hal/esp32h2/include/hal/i2c_ll.h b/components/hal/esp32h2/include/hal/i2c_ll.h index 2a8697115136..d17327d7aa5a 100644 --- a/components/hal/esp32h2/include/hal/i2c_ll.h +++ b/components/hal/esp32h2/include/hal/i2c_ll.h @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -87,7 +87,7 @@ typedef struct { // I2C slave RX interrupt bitmap #define I2C_LL_SLAVE_RX_INT (I2C_RXFIFO_WM_INT_ENA_M | I2C_TRANS_COMPLETE_INT_ENA_M) // I2C source clock -#define I2C_LL_CLK_SRC_FREQ(src_clk) (((src_clk) == I2C_SCLK_RTC) ? 20*1000*1000 : 40*1000*1000); // Another clock is XTAL clock +#define I2C_LL_CLK_SRC_FREQ(src_clk) (((src_clk) == I2C_SCLK_RTC) ? 8*1000*1000 : 32*1000*1000); // Another clock is XTAL clock // delay time after rtc_clk swiching on #define DELAY_RTC_CLK_SWITCH (5) // I2C max timeout value diff --git a/components/hal/esp32h2/rtc_cntl_hal.c b/components/hal/esp32h2/rtc_cntl_hal.c index 2fb14a5b2faf..7ee75a484dd3 100644 --- a/components/hal/esp32h2/rtc_cntl_hal.c +++ b/components/hal/esp32h2/rtc_cntl_hal.c @@ -1,16 +1,8 @@ -// Copyright 2015-2019 Espressif Systems (Shanghai) PTE LTD -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. +/* + * SPDX-FileCopyrightText: 2015-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Apache-2.0 + */ // The HAL layer for RTC CNTL (common part) @@ -18,6 +10,7 @@ #include "soc/lldesc.h" #include "hal/rtc_hal.h" #include "hal/assert.h" +#include "esp_attr.h" #define RTC_CNTL_HAL_LINK_BUF_SIZE_MIN (SOC_RTC_CNTL_CPU_PD_DMA_BLOCK_SIZE) /* The minimum size of dma link buffer */ @@ -44,6 +37,7 @@ void * rtc_cntl_hal_dma_link_init(void *elem, void *buff, int size, void *next) return (void *)plink; } +#if SOC_PM_SUPPORT_CPU_PD void rtc_cntl_hal_enable_cpu_retention(void *addr) { if (addr) { @@ -59,3 +53,16 @@ void rtc_cntl_hal_enable_cpu_retention(void *addr) rtc_cntl_ll_enable_cpu_retention((uint32_t)addr); } } + +void IRAM_ATTR rtc_cntl_hal_disable_cpu_retention(void *addr) +{ + rtc_cntl_sleep_retent_t *retent = (rtc_cntl_sleep_retent_t *)addr; + + if (addr) { + if (retent->cpu_pd_mem) { + rtc_cntl_ll_disable_cpu_retention(); + } + } +} + +#endif // SOC_PM_SUPPORT_CPU_PD diff --git a/components/hal/spi_flash_hal_iram.c b/components/hal/spi_flash_hal_iram.c index 032875a1625f..cdf275538cb7 100644 --- a/components/hal/spi_flash_hal_iram.c +++ b/components/hal/spi_flash_hal_iram.c @@ -19,7 +19,7 @@ void spi_flash_hal_setup_auto_resume_mode(spi_flash_host_inst_t *host); // HAL for // - MEMSPI -// - SPI1~3 on ESP32/S2/S3/C3/H2/8684 +// - SPI1~3 on ESP32/S2/S3/C3/H2/C2 // The common part is in spi_flash_hal_common.inc void spi_flash_hal_erase_chip(spi_flash_host_inst_t *host) diff --git a/components/soc/esp32c2/include/soc/i2c_struct.h b/components/soc/esp32c2/include/soc/i2c_struct.h index f0c22cb249b6..a40ad248dbaf 100644 --- a/components/soc/esp32c2/include/soc/i2c_struct.h +++ b/components/soc/esp32c2/include/soc/i2c_struct.h @@ -887,7 +887,6 @@ typedef struct { } i2c_dev_t; extern i2c_dev_t I2C0; -extern i2c_dev_t I2C1; #ifndef __cplusplus _Static_assert(sizeof(i2c_dev_t) == 0x184, "Invalid size of i2c_dev_t structure"); diff --git a/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in b/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in index 1cfcfaed1fed..fdc0af159921 100644 --- a/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in +++ b/components/soc/esp32s3/include/soc/Kconfig.soc_caps.in @@ -47,34 +47,6 @@ config SOC_GPIO_SUPPORT_SLP_SWITCH bool default y -config SOC_I2C_NUM - int - default 2 - -config SOC_I2C_FIFO_LEN - int - default 32 - -config SOC_I2C_SUPPORT_SLAVE - bool - default y - -config SOC_I2C_SUPPORT_HW_FSM_RST - bool - default y - -config SOC_I2C_SUPPORT_HW_CLR_BUS - bool - default y - -config SOC_I2C_SUPPORT_XTAL - bool - default y - -config SOC_I2C_SUPPORT_RTC - bool - default y - config SOC_LEDC_SUPPORT_XTAL_CLOCK bool default y @@ -383,6 +355,10 @@ config SOC_I2C_FIFO_LEN int default 32 +config SOC_I2C_SUPPORT_SLAVE + bool + default y + config SOC_I2C_SUPPORT_HW_FSM_RST bool default y diff --git a/components/soc/esp32s3/include/soc/soc_caps.h b/components/soc/esp32s3/include/soc/soc_caps.h index 93fda422835d..e5a1183595d7 100644 --- a/components/soc/esp32s3/include/soc/soc_caps.h +++ b/components/soc/esp32s3/include/soc/soc_caps.h @@ -128,6 +128,7 @@ #define SOC_I2C_NUM (2) #define SOC_I2C_FIFO_LEN (32) /*!< I2C hardware FIFO depth */ +#define SOC_I2C_SUPPORT_SLAVE (1) //ESP32-S3 support hardware FSM reset #define SOC_I2C_SUPPORT_HW_FSM_RST (1) diff --git a/docs/en/api-reference/peripherals/i2c.rst b/docs/en/api-reference/peripherals/i2c.rst index 7fb3e3246ba5..9de043e5a42d 100644 --- a/docs/en/api-reference/peripherals/i2c.rst +++ b/docs/en/api-reference/peripherals/i2c.rst @@ -3,7 +3,7 @@ Inter-Integrated Circuit (I2C) :link_to_translation:`zh_CN:[中文]` -{IDF_TARGET_I2C_NUM:default="2", esp32c3="1", esp32h2="1", esp328684="1"} +{IDF_TARGET_I2C_NUM:default="2", esp32c3="1", esp32h2="1", esp32c2="1"} Overview -------- @@ -20,21 +20,30 @@ Driver Features I2C driver governs communications of devices over the I2C bus. The driver supports the following features: - Reading and writing bytes in Master mode -- Slave mode + +.. only:: SOC_I2C_SUPPORT_SLAVE + + - Slave mode + - Reading and writing to registers which are in turn read/written by the master Driver Usage ------------ +{IDF_TARGET_I2C_ROLE:default="master or slave", esp32c2="master"} + The following sections describe typical steps of configuring and operating the I2C driver: -1. :ref:`i2c-api-configure-driver` - set the initialization parameters (master or slave mode, GPIO pins for SDA and SCL, clock speed, etc.) -2. :ref:`i2c-api-install-driver`- activate the driver on one of the two I2C controllers as a master or slave -3. Depending on whether you configure the driver for a master or slave, choose the appropriate item +1. :ref:`i2c-api-configure-driver` - set the initialization parameters ({IDF_TARGET_I2C_ROLE} mode, GPIO pins for SDA and SCL, clock speed, etc.) +2. :ref:`i2c-api-install-driver`- activate the driver on one of the two I2C controllers as a {IDF_TARGET_I2C_ROLE} +3. Depending on whether you configure the driver for a {IDF_TARGET_I2C_ROLE}, choose the appropriate item + + a) :ref:`i2c-api-master-mode` - handle communications (master) - a) :ref:`i2c-api-master-mode` - handle communications (master) - b) :ref:`i2c-api-slave-mode` - respond to messages from the master (slave) + .. only:: SOC_I2C_SUPPORT_SLAVE + + b) :ref:`i2c-api-slave-mode` - respond to messages from the master (slave) 4. :ref:`i2c-api-interrupt-handling` - configure and service I2C interrupts 5. :ref:`i2c-api-customized-configuration` - adjust default I2C communication parameters (timings, bit order, etc.) @@ -49,17 +58,20 @@ Configuration To establish I2C communication, start by configuring the driver. This is done by setting the parameters of the structure :cpp:type:`i2c_config_t`: -- Set I2C **mode of operation** - slave or master from :cpp:type:`i2c_mode_t` +- Set I2C **mode of operation** - {IDF_TARGET_I2C_ROLE} from :cpp:type:`i2c_mode_t` - Configure **communication pins** - Assign GPIO pins for SDA and SCL signals - Set whether to enable {IDF_TARGET_NAME}'s internal pull-ups - (Master only) Set I2C **clock speed** -- (Slave only) Configure the following - * Whether to enable **10 bit address mode** - * Define **slave address** +.. only:: SOC_I2C_SUPPORT_SLAVE + + - (Slave only) Configure the following + + * Whether to enable **10 bit address mode** + * Define **slave address** After that, initialize the configuration for a given I2C port. For this, call the function :cpp:func:`i2c_param_config` and pass to it the port number and the structure :cpp:type:`i2c_config_t`. @@ -78,20 +90,22 @@ Configuration example (master): // .clk_flags = 0, /*!< Optional, you can use I2C_SCLK_SRC_FLAG_* flags to choose i2c source clock here. */ }; -Configuration example (slave): +.. only:: SOC_I2C_SUPPORT_SLAVE -.. code-block:: c + Configuration example (slave): - int i2c_slave_port = I2C_SLAVE_NUM; - i2c_config_t conf_slave = { - .sda_io_num = I2C_SLAVE_SDA_IO, // select GPIO specific to your project - .sda_pullup_en = GPIO_PULLUP_ENABLE, - .scl_io_num = I2C_SLAVE_SCL_IO, // select GPIO specific to your project - .scl_pullup_en = GPIO_PULLUP_ENABLE, - .mode = I2C_MODE_SLAVE, - .slave.addr_10bit_en = 0, - .slave.slave_addr = ESP_SLAVE_ADDR, // address of your project - }; + .. code-block:: c + + int i2c_slave_port = I2C_SLAVE_NUM; + i2c_config_t conf_slave = { + .sda_io_num = I2C_SLAVE_SDA_IO, // select GPIO specific to your project + .sda_pullup_en = GPIO_PULLUP_ENABLE, + .scl_io_num = I2C_SLAVE_SCL_IO, // select GPIO specific to your project + .scl_pullup_en = GPIO_PULLUP_ENABLE, + .mode = I2C_MODE_SLAVE, + .slave.addr_10bit_en = 0, + .slave.slave_addr = ESP_SLAVE_ADDR, // address of your project + }; At this stage, :cpp:func:`i2c_param_config` also sets a few other I2C configuration parameters to default values that are defined by the I2C specification. For more details on the values and how to modify them, see :ref:`i2c-api-customized-configuration`. @@ -200,8 +214,12 @@ Install Driver After the I2C driver is configured, install it by calling the function :cpp:func:`i2c_driver_install` with the following parameters: - Port number, one of the two port numbers from :cpp:type:`i2c_port_t` -- Master or slave, selected from :cpp:type:`i2c_mode_t` -- (Slave only) Size of buffers to allocate for sending and receiving data. As I2C is a master-centric bus, data can only go from the slave to the master at the master's request. Therefore, the slave will usually have a send buffer where the slave application writes data. The data remains in the send buffer to be read by the master at the master's own discretion. +- {IDF_TARGET_I2C_ROLE}, selected from :cpp:type:`i2c_mode_t` + +.. only:: SOC_I2C_SUPPORT_SLAVE + + - (Slave only) Size of buffers to allocate for sending and receiving data. As I2C is a master-centric bus, data can only go from the slave to the master at the master's request. Therefore, the slave will usually have a send buffer where the slave application writes data. The data remains in the send buffer to be read by the master at the master's own discretion. + - Flags for allocating the interrupt (see ESP_INTR_FLAG_* values in :component_file:`esp_hw_support/include/esp_intr_alloc.h`) .. _i2c-api-master-mode: @@ -278,27 +296,32 @@ Likewise, the command link to read from the slave looks as follows: i2c_master_write_byte(cmd, (ESP_SLAVE_ADDR << 1) | I2C_MASTER_READ, ACK_EN); -.. _i2c-api-slave-mode: +.. only:: SOC_I2C_SUPPORT_SLAVE -Communication as Slave -^^^^^^^^^^^^^^^^^^^^^^ + .. _i2c-api-slave-mode: -After installing the I2C driver, {IDF_TARGET_NAME} is ready to communicate with other I2C devices. + Communication as Slave + ^^^^^^^^^^^^^^^^^^^^^^ + + After installing the I2C driver, {IDF_TARGET_NAME} is ready to communicate with other I2C devices. + + The API provides the following functions for slaves -The API provides the following functions for slaves + - :cpp:func:`i2c_slave_read_buffer` -- :cpp:func:`i2c_slave_read_buffer` + Whenever the master writes data to the slave, the slave will automatically store it in the receive buffer. This allows the slave application to call the function :cpp:func:`i2c_slave_read_buffer` at its own discretion. This function also has a parameter to specify block time if no data is in the receive buffer. This will allow the slave application to wait with a specified timeout for data to arrive to the buffer. - Whenever the master writes data to the slave, the slave will automatically store it in the receive buffer. This allows the slave application to call the function :cpp:func:`i2c_slave_read_buffer` at its own discretion. This function also has a parameter to specify block time if no data is in the receive buffer. This will allow the slave application to wait with a specified timeout for data to arrive to the buffer. + - :cpp:func:`i2c_slave_write_buffer` -- :cpp:func:`i2c_slave_write_buffer` + The send buffer is used to store all the data that the slave wants to send to the master in FIFO order. The data stays there until the master requests for it. The function :cpp:func:`i2c_slave_write_buffer` has a parameter to specify block time if the send buffer is full. This will allow the slave application to wait with a specified timeout for the adequate amount of space to become available in the send buffer. - The send buffer is used to store all the data that the slave wants to send to the master in FIFO order. The data stays there until the master requests for it. The function :cpp:func:`i2c_slave_write_buffer` has a parameter to specify block time if the send buffer is full. This will allow the slave application to wait with a specified timeout for the adequate amount of space to become available in the send buffer. + A code example showing how to use these functions can be found in :example:`peripherals/i2c`. -A code example showing how to use these functions can be found in :example:`peripherals/i2c`. + .. _i2c-api-interrupt-handling: +.. only:: not SOC_I2C_SUPPORT_SLAVE -.. _i2c-api-interrupt-handling: + .. _i2c-api-interrupt-handling: Interrupt Handling ^^^^^^^^^^^^^^^^^^ @@ -369,7 +392,7 @@ Before calling :cpp:func:`i2c_driver_delete` to remove i2c driver, please make s Application Example ------------------- -I2C master and slave example: :example:`peripherals/i2c`. +I2C examples: :example:`peripherals/i2c`. API Reference diff --git a/docs/zh_CN/api-reference/peripherals/i2c.rst b/docs/zh_CN/api-reference/peripherals/i2c.rst index 502555df4195..5c3b81b4759e 100644 --- a/docs/zh_CN/api-reference/peripherals/i2c.rst +++ b/docs/zh_CN/api-reference/peripherals/i2c.rst @@ -3,7 +3,7 @@ I2C 驱动程序 :link_to_translation:`en:[English]` -{IDF_TARGET_I2C_NUM:default="2", esp32c3="1", esp32h2="1", esp328684="1"} +{IDF_TARGET_I2C_NUM:default="2", esp32c3="1", esp32h2="1", esp32c2="1"} 概述 --------- diff --git a/examples/cxx/experimental/experimental_cpp_component/host_test/fixtures/test_fixtures.hpp b/examples/cxx/experimental/experimental_cpp_component/host_test/fixtures/test_fixtures.hpp index 0d7d6597fe1c..484762c24983 100644 --- a/examples/cxx/experimental/experimental_cpp_component/host_test/fixtures/test_fixtures.hpp +++ b/examples/cxx/experimental/experimental_cpp_component/host_test/fixtures/test_fixtures.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2021-2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Unlicense OR CC0-1.0 * @@ -318,6 +318,7 @@ struct I2CMasterFix { i2c_port_t port; }; +#if CONFIG_SOC_I2C_SUPPORT_SLAVE struct I2CSlaveFix { I2CSlaveFix(CreateAnd flags, i2c_port_t port_arg = 0, size_t buffer_size = 64) : i2c_conf(), port(port_arg) { @@ -344,6 +345,7 @@ struct I2CSlaveFix { i2c_config_t i2c_conf; i2c_port_t port; }; +#endif // CONFIG_SOC_I2C_SUPPORT_SLAVE struct I2CCmdLinkFix { diff --git a/examples/cxx/experimental/experimental_cpp_component/host_test/i2c/main/i2c_cxx_test.cpp b/examples/cxx/experimental/experimental_cpp_component/host_test/i2c/main/i2c_cxx_test.cpp index 3d7638e9d13d..a3d2bcc085de 100644 --- a/examples/cxx/experimental/experimental_cpp_component/host_test/i2c/main/i2c_cxx_test.cpp +++ b/examples/cxx/experimental/experimental_cpp_component/host_test/i2c/main/i2c_cxx_test.cpp @@ -376,6 +376,7 @@ TEST_CASE("I2CMaster syncronous transfer (read and write)") } } +#if SOC_I2C_SUPPORT_SLAVE TEST_CASE("I2CSlave parameter configuration fails") { CMockFixture fix; @@ -458,3 +459,4 @@ TEST_CASE("I2CSlave read calls driver functions correctly") CHECK(read_buffer[i] == WRITE_BUFFER[i]); } } +#endif // SOC_I2C_SUPPORT_SLAVE diff --git a/examples/cxx/experimental/experimental_cpp_component/i2c_cxx.cpp b/examples/cxx/experimental/experimental_cpp_component/i2c_cxx.cpp index c452f9dcebff..e549aef15a2c 100644 --- a/examples/cxx/experimental/experimental_cpp_component/i2c_cxx.cpp +++ b/examples/cxx/experimental/experimental_cpp_component/i2c_cxx.cpp @@ -155,6 +155,7 @@ vector I2CMaster::sync_transfer(I2CAddress i2c_addr, return composed_transfer.do_transfer(i2c_num, i2c_addr)[0]; } +#if CONFIG_SOC_I2C_SUPPORT_SLAVE I2CSlave::I2CSlave(I2CNumber i2c_number, SCL_GPIO scl_gpio, SDA_GPIO sda_gpio, @@ -191,6 +192,7 @@ int I2CSlave::read_raw(uint8_t *buffer, size_t buffer_len, chrono::milliseconds { return i2c_slave_read_buffer(i2c_num.get_value(), buffer, buffer_len, (TickType_t) timeout.count() / portTICK_PERIOD_MS); } +#endif // CONFIG_SOC_I2C_SUPPORT_SLAVE I2CWrite::I2CWrite(const vector &bytes, chrono::milliseconds driver_timeout) : I2CTransfer(driver_timeout), bytes(bytes) diff --git a/examples/cxx/experimental/experimental_cpp_component/include/i2c_cxx.hpp b/examples/cxx/experimental/experimental_cpp_component/include/i2c_cxx.hpp index c497d3b566a9..8342a219653d 100644 --- a/examples/cxx/experimental/experimental_cpp_component/include/i2c_cxx.hpp +++ b/examples/cxx/experimental/experimental_cpp_component/include/i2c_cxx.hpp @@ -1,5 +1,5 @@ /* - * SPDX-FileCopyrightText: 2020-2021 Espressif Systems (Shanghai) CO LTD + * SPDX-FileCopyrightText: 2020-2022 Espressif Systems (Shanghai) CO LTD * * SPDX-License-Identifier: Apache-2.0 */ @@ -400,6 +400,7 @@ class I2CMaster : public I2CBus { size_t read_n_bytes); }; +#if CONFIG_SOC_I2C_SUPPORT_SLAVE /** * @brief Responsible for initialization and de-initialization of an I2C slave peripheral. */ @@ -451,6 +452,7 @@ class I2CSlave : public I2CBus { */ virtual int read_raw(uint8_t* buffer, size_t buffer_len, std::chrono::milliseconds timeout); }; +#endif // CONFIG_SOC_I2C_SUPPORT_SLAVE /** * Implementation for simple I2C writes, which can be executed by \c I2CMaster::transfer(). diff --git a/examples/cxx/experimental/experimental_cpp_component/test/test_i2c.cpp b/examples/cxx/experimental/experimental_cpp_component/test/test_i2c.cpp index da834d70c544..d64652d56aaa 100644 --- a/examples/cxx/experimental/experimental_cpp_component/test/test_i2c.cpp +++ b/examples/cxx/experimental/experimental_cpp_component/test/test_i2c.cpp @@ -54,8 +54,9 @@ struct MasterFixture { vector data; }; +#if SOC_I2C_SUPPORT_SALVE // TODO The I2C driver tests are disabled, so disable them here, too. Probably due to no runners. -#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3) +#if !TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3, ESP8684) static void i2c_slave_read_raw_byte(void) { @@ -258,4 +259,5 @@ TEST_CASE_MULTIPLE_DEVICES("I2CMaster Composed transfer", "[cxx i2c][test_env=UT i2c_master_composed_trans, i2c_slave_composed_trans); #endif //TEMPORARY_DISABLED_FOR_TARGETS(ESP32S2, ESP32S3) +#endif // SOC_I2C_SUPPORT_SALVE #endif // __cpp_exceptions diff --git a/examples/peripherals/i2c/i2c_self_test/README.md b/examples/peripherals/i2c/i2c_self_test/README.md index d9b3b440e6df..38e3704434d5 100644 --- a/examples/peripherals/i2c/i2c_self_test/README.md +++ b/examples/peripherals/i2c/i2c_self_test/README.md @@ -65,14 +65,14 @@ To run this example, you should have one ESP development board (e.g. ESP32-WROVE **Note:** It is recommended to add external pull-up resistors for SDA/SCL pins to make the communication more stable, though the driver will enable internal pull-up resistors. -#### Pin Assignment(esp32c3): +#### Pin Assignment(esp32c3, esp32c2, esp32h2): **Note:** The following pin assignments are used by default, you can change these in the `menuconfig` . -| | SDA | SCL | -| ------------------------- | ------ | ------ | -| ESP32-C3 I2C Master(Slave)| GPIO5 | GPIO6 | -| BH1750 Sensor | SDA | SCL | +| | SDA | SCL | +| ------------------------------------------- | ------ | ------ | +| ESP32-C3/ESP32-C2/ESP32-H2 I2C Master(Slave)| GPIO5 | GPIO6 | +| BH1750 Sensor | SDA | SCL | - master: - GPIO5 is assigned to the data signal of the I2C master port @@ -121,70 +121,70 @@ sensor val: 386.67 [Lux] TASK[0] MASTER READ FROM SLAVE ******************* ====TASK[0] Slave buffer data ==== -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f -10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f -20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f -30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f -40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f -50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f -60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f -70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f +10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f +20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f +30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f +40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f +50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f +60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f +70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f ====TASK[0] Master read ==== -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f -10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f -20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f -30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f -40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f -50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f -60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f -70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f +10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f +20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f +30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f +40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f +50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f +60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f +70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f ******************* TASK[1] MASTER READ FROM SLAVE ******************* ====TASK[1] Slave buffer data ==== -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f -10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f -20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f -30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f -40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f -50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f -60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f -70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f +10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f +20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f +30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f +40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f +50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f +60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f +70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f ====TASK[1] Master read ==== -00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f -10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f -20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f -30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f -40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f -50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f -60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f -70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f +00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f +10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f +20 21 22 23 24 25 26 27 28 29 2a 2b 2c 2d 2e 2f +30 31 32 33 34 35 36 37 38 39 3a 3b 3c 3d 3e 3f +40 41 42 43 44 45 46 47 48 49 4a 4b 4c 4d 4e 4f +50 51 52 53 54 55 56 57 58 59 5a 5b 5c 5d 5e 5f +60 61 62 63 64 65 66 67 68 69 6a 6b 6c 6d 6e 6f +70 71 72 73 74 75 76 77 78 79 7a 7b 7c 7d 7e 7f ******************* TASK[0] MASTER WRITE TO SLAVE ******************* ----TASK[0] Master write ---- -0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 -1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 -2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 -3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 -4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 -5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 -6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 -7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 +0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 +1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 +2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 +3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 +4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 +5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 +6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 +7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 ----TASK[0] Slave read: [128] bytes ---- -0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 -1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 -2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 -3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 -4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 -5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 -6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 -7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 +0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 +1a 1b 1c 1d 1e 1f 20 21 22 23 24 25 26 27 28 29 +2a 2b 2c 2d 2e 2f 30 31 32 33 34 35 36 37 38 39 +3a 3b 3c 3d 3e 3f 40 41 42 43 44 45 46 47 48 49 +4a 4b 4c 4d 4e 4f 50 51 52 53 54 55 56 57 58 59 +5a 5b 5c 5d 5e 5f 60 61 62 63 64 65 66 67 68 69 +6a 6b 6c 6d 6e 6f 70 71 72 73 74 75 76 77 78 79 +7a 7b 7c 7d 7e 7f 80 81 82 83 84 85 86 87 88 89 ``` ## Troubleshooting diff --git a/examples/peripherals/i2c/i2c_self_test/main/Kconfig.projbuild b/examples/peripherals/i2c/i2c_self_test/main/Kconfig.projbuild index 07933664a078..7772ab1a71f0 100644 --- a/examples/peripherals/i2c/i2c_self_test/main/Kconfig.projbuild +++ b/examples/peripherals/i2c/i2c_self_test/main/Kconfig.projbuild @@ -3,7 +3,7 @@ menu "Example Configuration" menu "I2C Master" config I2C_MASTER_SCL int "SCL GPIO Num" - default 6 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP8684 + default 6 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32H2 default 2 if IDF_TARGET_ESP32S3 default 19 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 help @@ -11,7 +11,7 @@ menu "Example Configuration" config I2C_MASTER_SDA int "SDA GPIO Num" - default 5 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP8684 + default 5 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32H2 default 1 if IDF_TARGET_ESP32S3 default 18 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 help @@ -20,7 +20,7 @@ menu "Example Configuration" config I2C_MASTER_PORT_NUM int "Port Number" default 1 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 - default 0 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP8684 + default 0 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32H2 help Port number for I2C Master device. @@ -32,7 +32,7 @@ menu "Example Configuration" endmenu menu "I2C Slave" - depends on SOC_I2C_SUPPORT_SLAVE + depends on SOC_I2C_NUM > 1 config I2C_SLAVE_SCL int "SCL GPIO Num" default 5 diff --git a/examples/peripherals/i2c/i2c_self_test/main/i2c_example_main.c b/examples/peripherals/i2c/i2c_self_test/main/i2c_example_main.c index f5835cab8ab2..184ccfcc3590 100644 --- a/examples/peripherals/i2c/i2c_self_test/main/i2c_example_main.c +++ b/examples/peripherals/i2c/i2c_self_test/main/i2c_example_main.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ /* i2c - Example For other examples please check: @@ -25,7 +30,7 @@ static const char *TAG = "i2c-example"; #define RW_TEST_LENGTH 128 /*!< Data length for r/w test, [0,DATA_LENGTH] */ #define DELAY_TIME_BETWEEN_ITEMS_MS 1000 /*!< delay time between different test items */ -#if !(CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP8684) +#if SOC_I2C_NUM > 1 #define I2C_SLAVE_SCL_IO CONFIG_I2C_SLAVE_SCL /*!< gpio number for i2c slave clock */ #define I2C_SLAVE_SDA_IO CONFIG_I2C_SLAVE_SDA /*!< gpio number for i2c slave data */ #define I2C_SLAVE_NUM I2C_NUMBER(CONFIG_I2C_SLAVE_PORT_NUM) /*!< I2C port number for slave dev */ @@ -52,7 +57,7 @@ static const char *TAG = "i2c-example"; SemaphoreHandle_t print_mux = NULL; -#if !(CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP8684) +#if SOC_I2C_NUM > 1 /** * @brief test code to read esp-i2c-slave * We need to fill the buffer of esp slave device, then master can read them out. @@ -166,7 +171,7 @@ static esp_err_t i2c_master_init(void) return i2c_driver_install(i2c_master_port, conf.mode, I2C_MASTER_RX_BUF_DISABLE, I2C_MASTER_TX_BUF_DISABLE, 0); } -#if !(CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP8684) +#if SOC_I2C_NUM > 1 /** * @brief i2c slave initialization */ @@ -209,7 +214,7 @@ static void i2c_test_task(void *arg) { int ret; uint32_t task_idx = (uint32_t)arg; -#if !(CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP8684) +#if SOC_I2C_NUM > 1 int i = 0; uint8_t *data = (uint8_t *)malloc(DATA_LENGTH); uint8_t *data_wr = (uint8_t *)malloc(DATA_LENGTH); @@ -236,7 +241,7 @@ static void i2c_test_task(void *arg) xSemaphoreGive(print_mux); vTaskDelay((DELAY_TIME_BETWEEN_ITEMS_MS * (task_idx + 1)) / portTICK_PERIOD_MS); //--------------------------------------------------- -#if !(CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP8684) +#if SOC_I2C_NUM > 1 for (i = 0; i < DATA_LENGTH; i++) { data[i] = i; } @@ -301,7 +306,7 @@ static void i2c_test_task(void *arg) void app_main(void) { print_mux = xSemaphoreCreateMutex(); -#if !(CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP8684) +#if SOC_I2C_NUM > 1 ESP_ERROR_CHECK(i2c_slave_init()); #endif ESP_ERROR_CHECK(i2c_master_init()); diff --git a/examples/peripherals/i2c/i2c_simple/main/Kconfig.projbuild b/examples/peripherals/i2c/i2c_simple/main/Kconfig.projbuild index 14f02e0d7e8d..ce85352b02f6 100644 --- a/examples/peripherals/i2c/i2c_simple/main/Kconfig.projbuild +++ b/examples/peripherals/i2c/i2c_simple/main/Kconfig.projbuild @@ -2,14 +2,14 @@ menu "Example Configuration" config I2C_MASTER_SCL int "SCL GPIO Num" - default 6 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP8684 + default 6 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32H2 default 19 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 help GPIO number for I2C Master clock line. config I2C_MASTER_SDA int "SDA GPIO Num" - default 5 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP8684 + default 5 if IDF_TARGET_ESP32C3 || IDF_TARGET_ESP32C2 || IDF_TARGET_ESP32H2 default 18 if IDF_TARGET_ESP32 || IDF_TARGET_ESP32S2 || IDF_TARGET_ESP32S3 help GPIO number for I2C Master data line. diff --git a/examples/peripherals/i2c/i2c_tools/README.md b/examples/peripherals/i2c/i2c_tools/README.md index 71176acfe24d..9d70bb20bf5c 100644 --- a/examples/peripherals/i2c/i2c_tools/README.md +++ b/examples/peripherals/i2c/i2c_tools/README.md @@ -7,7 +7,7 @@ [I2C Tools](https://i2c.wiki.kernel.org/index.php/I2C_Tools) is a simple but very useful tool for developing I2C related applications, which is also famous in Linux platform. This example just implements some of basic features of [I2C Tools](https://i2c.wiki.kernel.org/index.php/I2C_Tools) based on [esp32 console component](https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/console.html). As follows, this example supports five command-line tools: 1. `i2cconfig`: It will configure the I2C bus with specific GPIO number, port number and frequency. -2. `i2cdetect`: It will scan an I2C bus for devices and output a table with the list of detected devices on the bus. +2. `i2cdetect`: It will scan an I2C bus for devices and output a table with the list of detected devices on the bus. 3. `i2cget`: It will read registers visible through the I2C bus. 4. `i2cset`: It will set registers visible through the I2C bus. 5. `i2cdump`: It will examine registers visible through the I2C bus. @@ -30,6 +30,8 @@ To run this example, you should have any ESP32, ESP32-S and ESP32-C based develo | ESP32-S2 I2C Master | GPIO18 | GPIO19 | GND | GND | 3.3V | | ESP32-S3 I2C Master | GPIO1 | GPIO2 | GND | GND | 3.3V | | ESP32-C3 I2C Master | GPIO5 | GPIO6 | GND | GND | 3.3V | +| ESP32-C2 I2C Master | GPIO5 | GPIO6 | GND | GND | 3.3V | +| ESP32-H2 I2C Master | GPIO5 | GPIO6 | GND | GND | 3.3V | | Sensor | SDA | SCL | GND | WAK | VCC | **Note: ** There’s no need to add an external pull-up resistors for SDA/SCL pin, because the driver will enable the internal pull-up resistors itself. @@ -66,7 +68,7 @@ See the [Getting Started Guide](https://docs.espressif.com/projects/esp-idf/en/l ============================================================== i2c-tools> help -help +help Print the list of registered commands i2cconfig [--port=<0|1>] [--freq=] --sda= --scl= @@ -76,7 +78,7 @@ i2cconfig [--port=<0|1>] [--freq=] --sda= --scl= --sda= Set the gpio for I2C SDA --scl= Set the gpio for I2C SCL -i2cdetect +i2cdetect Scan I2C bus for devices i2cget -c [-r ] [-l ] @@ -96,17 +98,17 @@ i2cdump -c [-s ] -c, --chip= Specify the address of the chip on that bus -s, --size= Specify the size of each read -free +free Get the current size of free heap memory -heap +heap Get minimum size of free heap memory that was available during program execu tion -version +version Get version of chip and SDK -restart +restart Software reset of the chip deep_sleep [-t ] [--io=] [--io_level=<0|1>] @@ -124,7 +126,7 @@ light_sleep [-t ] [--io=]... [--io_level=<0|1>]... --io= If specified, wakeup using GPIO with given number --io_level=<0|1> GPIO level to trigger wakeup -tasks +tasks Get information about running tasks ``` @@ -143,14 +145,14 @@ esp32> i2cconfig --port=0 --sda=18 --scl=19 --freq=100000 ```bash esp32> i2cdetect 0 1 2 3 4 5 6 7 8 9 a b c d e f -00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -50: -- -- -- -- -- -- -- -- -- -- -- 5b -- -- -- -- -60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +00: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +10: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +20: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +30: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +40: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +50: -- -- -- -- -- -- -- -- -- -- -- 5b -- -- -- -- +60: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- +70: -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- ``` * Here we found the address of CCS811 is 0x5b. @@ -159,7 +161,7 @@ esp32> i2cdetect ```bash esp32> i2cget -c 0x5b -r 0x00 -l 1 -0x10 +0x10 ``` * `-c` option to specify the address of I2C device (acquired from `i2cdetect` command). @@ -175,7 +177,7 @@ I (734717) cmd_i2ctools: Write OK esp32> i2cset -c 0x5b -r 0x01 0x10 I (1072047) cmd_i2ctools: Write OK esp32> i2cget -c 0x5b -r 0x00 -l 1 -0x98 +0x98 ``` * Here we change the mode from boot to application and set a proper measure mode (by writing 0x10 to register 0x01) @@ -185,7 +187,7 @@ esp32> i2cget -c 0x5b -r 0x00 -l 1 ```bash esp32> i2cget -c 0x5b -r 0x02 -l 8 -0x01 0xb0 0x00 0x04 0x98 0x00 0x19 0x8f +0x01 0xb0 0x00 0x04 0x98 0x00 0x19 0x8f ``` * The register 0x02 will output 8 bytes result, mainly including value of eCO~2~、TVOC and there raw value. So the value of eCO~2~ is 0x01b0 ppm and value of TVOC is 0x04 ppb. diff --git a/examples/peripherals/i2c/i2c_tools/main/cmd_i2ctools.c b/examples/peripherals/i2c/i2c_tools/main/cmd_i2ctools.c index 996a2975b113..551128228d7b 100644 --- a/examples/peripherals/i2c/i2c_tools/main/cmd_i2ctools.c +++ b/examples/peripherals/i2c/i2c_tools/main/cmd_i2ctools.c @@ -1,3 +1,8 @@ +/* + * SPDX-FileCopyrightText: 2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: Unlicense OR CC0-1.0 + */ /* cmd_i2ctools.c This example code is in the Public Domain (or CC0 licensed, at your option.) @@ -26,7 +31,7 @@ static const char *TAG = "cmd_i2ctools"; #if CONFIG_IDF_TARGET_ESP32S3 static gpio_num_t i2c_gpio_sda = 1; static gpio_num_t i2c_gpio_scl = 2; -#elif CONFIG_IDF_TARGET_ESP32C3 +#elif CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32H2 || CONFIG_IDF_TARGET_ESP8684 static gpio_num_t i2c_gpio_sda = 5; static gpio_num_t i2c_gpio_scl = 6; #else diff --git a/examples/peripherals/i2c/i2c_tools/sdkconfig.defaults b/examples/peripherals/i2c/i2c_tools/sdkconfig.defaults index 2d3564c64914..fc9a5ae743dc 100644 --- a/examples/peripherals/i2c/i2c_tools/sdkconfig.defaults +++ b/examples/peripherals/i2c/i2c_tools/sdkconfig.defaults @@ -14,4 +14,4 @@ CONFIG_PARTITION_TABLE_FILENAME="partitions_example.csv" CONFIG_FREERTOS_USE_TRACE_FACILITY=y CONFIG_FREERTOS_USE_STATS_FORMATTING_FUNCTIONS=y -CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y diff --git a/tools/ci/check_copyright_ignore.txt b/tools/ci/check_copyright_ignore.txt index 7cda0fc024a3..80f554a50475 100644 --- a/tools/ci/check_copyright_ignore.txt +++ b/tools/ci/check_copyright_ignore.txt @@ -590,7 +590,6 @@ components/esp_rom/include/esp32/rom/tjpgd.h components/esp_rom/include/esp32/rom/uart.h components/esp_rom/include/esp32c2/rom/md5_hash.h components/esp_rom/include/esp32c3/rom/aes.h -components/esp_rom/include/esp32c3/rom/apb_backup_dma.h components/esp_rom/include/esp32c3/rom/bigint.h components/esp_rom/include/esp32c3/rom/cache.h components/esp_rom/include/esp32c3/rom/crc.h @@ -912,7 +911,6 @@ components/hal/esp32h2/include/hal/twai_ll.h components/hal/esp32h2/include/hal/uhci_ll.h components/hal/esp32h2/include/hal/uhci_types.h components/hal/esp32h2/include/hal/usb_serial_jtag_ll.h -components/hal/esp32h2/rtc_cntl_hal.c components/hal/esp32s2/brownout_hal.c components/hal/esp32s2/cp_dma_hal.c components/hal/esp32s2/include/hal/adc_hal_conf.h @@ -2333,10 +2331,8 @@ examples/peripherals/gpio/generic_gpio/main/gpio_example_main.c examples/peripherals/gpio/matrix_keyboard/components/matrix_keyboard/include/matrix_keyboard.h examples/peripherals/gpio/matrix_keyboard/components/matrix_keyboard/src/matrix_keyboard.c examples/peripherals/gpio/matrix_keyboard/main/matrix_keyboard_example_main.c -examples/peripherals/i2c/i2c_self_test/main/i2c_example_main.c examples/peripherals/i2c/i2c_simple/main/i2c_simple_main.c examples/peripherals/i2c/i2c_tools/example_test.py -examples/peripherals/i2c/i2c_tools/main/cmd_i2ctools.c examples/peripherals/i2c/i2c_tools/main/cmd_i2ctools.h examples/peripherals/i2c/i2c_tools/main/i2ctools_example_main.c examples/peripherals/i2s/i2s_adc_dac/main/app_main.c