乐鑫技术交流
直播中

刘超

7年用户 1426经验值
私信 关注
[问答]

ESP32-C3初始化SPI2_HOST后,进行SPI2读写操作时,会造成GPIO0引脚的电平异常变化怎么解决?

硬件:ESP32C3芯片
IDF:V4.3.2
问题现象:
初始化SPI2_HOST后,进行SPI2读写操作时,会造成GPIO0引脚的电平异常变化(接近2us的下降沿)。(注意,初始化SPI2后,不要对GPIO0进行任何配置)
SPI2使用引脚如下:
#define NRF_PIN_NUM_MISO 2
#define NRF_PIN_NUM_MOSI 7
#define NRF_PIN_NUM_CLK 6
#define NRF_PIN_NUM_CS 10
SPI2初始化代码如下:
static void NrfSpiInit(void) {
    esp_err_t ret;

    gpio_reset_pin(NRF_PIN_NUM_CS);
    gpio_set_direction(NRF_PIN_NUM_CS, GPIO_MODE_OUTPUT);
    gpio_set_level(NRF_PIN_NUM_CS, 1);

    spi_bus_config_t spi_bus_config = {.sclk_io_num = NRF_PIN_NUM_CLK,
                                       .mosi_io_num = NRF_PIN_NUM_MOSI,
                                       .miso_io_num = NRF_PIN_NUM_MISO,
                                       .quadwp_io_num = -1,
                                       .quadhd_io_num = -1};

    ret = spi_bus_initialize(NRF_SPI_HOST, &spi_bus_config, SPI_DMA_CH_AUTO);
    // ESP_LOGI(TAG, "spi_bus_initialize=%d",ret);
    assert(ret == ESP_OK);

    spi_device_interface_config_t devcfg;
    memset(&devcfg, 0, sizeof(spi_device_interface_config_t));
    devcfg.clock_speed_hz = SPI_Frequency;
    devcfg.queue_size = 7;
    devcfg.mode = 0;
    devcfg.flags = SPI_DEVICE_NO_DUMMY;

    spi_device_handle_t handle;
    ret = spi_bus_add_device(NRF_SPI_HOST, &devcfg, &handle);
    // ESP_LOGI(TAG, "spi_bus_add_device=%d",ret);
    assert(ret == ESP_OK);
    anoNrf_SPIHandle = handle;
}
                                                                                                                                                      

回帖(1)

吕珠峰

2024-6-18 16:23:12
根据您的描述,您在使用ESP32-C3芯片的SPI2_HOST进行SPI2读写操作时,发现GPIO0引脚的电平出现异常变化。以下是一些建议来解决这个问题:

1. **检查SPI2初始化代码**:确保SPI2初始化代码正确无误,特别是时钟和引脚配置。检查是否有其他代码在不经意间修改了GPIO0的配置。

2. **检查其他外设**:检查是否有其他外设(如I2C、UART等)与SPI2共享GPIO0引脚,这可能导致电平变化。

3. **使用GPIO矩阵**:尝试使用ESP32-C3的GPIO矩阵功能来隔离SPI2与GPIO0。通过GPIO矩阵,您可以将SPI2的信号路由到其他引脚,从而避免对GPIO0的影响。

4. **软件滤波**:如果硬件调整无法解决问题,您可以尝试在软件层面对GPIO0的读取值进行滤波。例如,您可以设置一个阈值,只有当GPIO0的电平变化超过该阈值时,才认为发生了实际变化。

5. **更新ESP-IDF版本**:您当前使用的ESP-IDF版本为V4.3.2,可以尝试升级到最新版本,看看是否有相关的问题修复。

6. **检查硬件连接**:检查SPI2与GPIO0之间的硬件连接,确保没有短路或错误的布线。

7. **查看ESP32-C3的数据手册**:查阅ESP32-C3的数据手册,了解SPI2与GPIO0之间的电气特性,看看是否有可能的干扰源。


举报

更多回帖

发帖
×
20
完善资料,
赚取积分