ESP32C3, esp-idf 4.3.5,编译报错。FAILED: wifi_softAP.elf cmd.exe /C "cd . && D:\Espressif\tools\riscv32-esp-elf\esp-2021r2-patch3-8.4.0\riscv32-esp-elf\bin\riscv32-esp-elf-g++.exe -march=rv32imc -nostartfiles -march=rv32imc --specs=nosys.specs @CMakeFiles\wifi_softAP.elf.rsp -o wifi_softAP.elf && cd ." d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: esp-idf/main/libmain.a(softap_example_main.c.obj): in function `ch623_task': d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:164: undefined reference to `CH623_Init' d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:166: undefined reference to `pcd_lpcd_start' d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:168: undefined reference to `pcd_lpcd_application' d:/espressif/tools/riscv32-esp-elf/esp-2021r2-patch3-8.4.0/riscv32-esp-elf/bin/../lib/gcc/riscv32-esp-elf/8.4.0/../../../../riscv32-esp-elf/bin/ld.exe: d:\espressif\frameworks\esp-idf-v4.3.5\examples\wifi\esp32_config_wifi\build/../main/softap_example_main.c:171: undefined reference to `pcd_lpcd_start' collect2.exe: error: ld returned 1 exit status ninja: build stopped: subcommand failed. ninja failed with exit code 1
根据报错信息,这是因为链接器无法找到函数 CH623_Init、pcd_lpcd_start 和 pcd_lpcd_application 的定义,导致链接失败。请确认是否正确引入了相关的头文件和库文件,并且这些函数是否在库文件中被定义了。如果确保没有问题,请检查是否在 CMakeLists.txt 中正确地添加了这些库的引用,以及是否将这些库添加到了链接器的链接列表中。
ESP32C3, esp-idf 4.3.5,如何使用spi3_host
要使用 ESP32-C3 内置的 SPI3 Host,需要进行以下步骤:
在 menuconfig 中打开 SPI3 Host 的选项。打开方法是进入 "Component config" -> "ESP32-S3-specific" -> "SPI Master Host (HSPI3)",然后将 "Enable HSPI3" 的选项打开。
在代码中包含 SPI3 Host 相关的头文件,例如:
#include "driver/spi_master.h"
进行 SPI3 Host 的初始化,在初始化参数中设置 SPI3 Host 的引脚、时钟频率等参数。例如:
spi_bus_config_t buscfg = { .miso_io_num = GPIO_NUM_17, .mosi_io_num = GPIO_NUM_16, .sclk_io_num = GPIO_NUM_15, .quadwp_io_num = -1, .quadhd_io_num = -1, .max_transfer_sz = 0, }; spi_device_interface_config_t devcfg = { .clock_speed_hz = 10 * 1000 * 1000, .mode = 0, .spics_io_num = GPIO_NUM_14, .queue_size = 1, }; spi_device_handle_t spi; esp_err_t ret; ret = spi_bus_initialize(HSPI_HOST, &buscfg, 1); ESP_ERROR_CHECK(ret); ret = spi_bus_add_device(HSPI_HOST, &devcfg, &spi); ESP_ERROR_CHECK(ret);
使用 SPI3 Host 进行数据传输。可以使用 spi_device_transmit() 函数进行传输,具体使用方法可以参考 ESP32-C3 的官方文档。
需要注意的是,在使用 SPI3 Host 时要根据具体的应用场景进行相应的配置,例如时钟频率、传输模式等。同时,还需要根据实际硬件连接情况进行引脚的配置。
ESP32C3, esp-idf 4.3.5,spi_transaction_t都包含哪些元素
在ESP32C3芯片上,使用esp-idf 4.3.5版本进行开发时,使用SPI总线进行数据传输时需要使用spi_transaction_t结构体来描述传输的相关信息。spi_transaction_t结构体包含以下元素:
- cmd:命令字,用于指定传输时需要发送的命令。如果不需要发送命令,则可以将其设置为0。
- addr:地址,用于指定传输数据的地址。如果不需要传输地址,则可以将其设置为0。
- length:传输长度,用于指定要传输的数据的长度,单位为位。例如,如果要传输8个字节的数据,则可以将其设置为8 * 8 = 64。
- rxlength:接收长度,用于指定需要接收的数据的长度,单位为位。如果不需要接收数据,则可以将其设置为0。
- tx_buffer:发送缓冲区,用于存放需要发送的数据。如果不需要发送数据,则可以将其设置为NULL。
- rx_buffer:接收缓冲区,用于存放接收到的数据。如果不需要接收数据,则可以将其设置为NULL。
- user:用户自定义数据,用于存储一些额外的信息,例如回调函数的参数等。
- flags:传输标志,用于指定传输的一些特殊标志,例如是否使用DMA传输等。
- dout:数据输出模式,用于指定数据输出的模式,例如是否为双向传输等。
需要注意的是,在使用spi_transaction_t结构体时,需要根据具体的传输需求进行初始化。例如,如果不需要传输命令和地址,则可以将cmd和addr设置为0;如果不需要接收数据,则可以将rxlength和rx_buffer设置为0和NULL。
相关推荐















