乐鑫技术交流
直播中

南风一号

8年用户 979经验值
擅长:EMC/EMI设计
私信 关注
[问答]

ESP32-C6 SPI2配置80Mhz失败怎么解决?

实验环境:
1. ESP-IDF V5.2.1  example/spimaster/lcd
2. ESP32-C6-DevKitC-1
3. IO PIN config follow IOMUX:  

mainspi_master_example_main.c

#define LCD_HOST    SPI2_HOST
#define PIN_NUM_MISO 2
#define PIN_NUM_MOSI 7
#define PIN_NUM_CLK  6
#define PIN_NUM_CS   16

.clock_speed_hz = 60 * 1000 * 1000,

SPI CLK时钟锁定在了40Mhz,和我设置的60Mhz不一致,我也查看了官方文档的参考,如果用IOMUX专用PIN。应该试可以跑到80Mhz,但是实际上没有达到。有人可以解答我的困惑吗?
                                                                                                                                                                                                                        
               
               

回帖(1)

张虎豹

2024-6-5 17:46:41
要解决ESP32-C6 SPI2配置80MHz失败的问题,我们可以按照以下步骤进行排查和解决:

1. 确认硬件连接:首先检查您的ESP32-C6-DevKitC-1开发板和LCD模块之间的硬件连接是否正确。确保MISO、MOSI、CLK和CS引脚已正确连接。

2. 检查IOMUX配置:根据您的代码,您已经按照IOMUX配置了引脚。请确保这些引脚配置正确,并且与您的硬件连接相匹配。

3. 检查SPI配置:在`mainspi_master_example_main.c`文件中,检查SPI配置是否正确。特别是,确保`clock_speed_hz`设置为80MHz(80 * 1000 * 1000)。

4. 更新ESP-IDF版本:您当前使用的ESP-IDF版本为V5.2.1。建议您尝试更新到最新版本的ESP-IDF,以确保所有驱动程序和库都是最新的。这可以通过运行以下命令来完成:

```
cd ~/esp/esp-idf
git pull
```

5. 检查SPI时钟设置:在ESP-IDF中,SPI时钟速度可能受到其他因素的影响。您可以在`spi_master_init`函数中设置SPI时钟分频器,以确保达到所需的时钟速度。例如:

```c
spi_bus_config_t bus_config = {
    .mosi_io_num = PIN_NUM_MOSI,
    .miso_io_num = PIN_NUM_MISO,
    .sclk_io_num = PIN_NUM_CLK,
    .quadwp_io_num = -1,
    .quadhd_io_num = -1,
    .max_transfer_sz = 6 * 1024,
    .flags = 0,
    .intr_flags = 0
};
ESP_ERROR_CHECK(spi_bus_initialize(LCD_HOST, &bus_config, SPI_DMA_CH_AUTO));

spi_device_interface_config_t dev_config = {
    .command_bits = 0,
    .address_bits = 0,
    .dummy_bits = 0,
    .clock_speed_hz = 80 * 1000 * 1000,
    .duty_cycle_pos = 0,
    .cs_ena_posttrans = 3,
    .cs_ena_pretrans = 1,
    .flags = SPI_DEVICE_HALFDUPLEX,
    .queue_size = 3,
    .pre_cb = NULL,
    .post_cb = NULL
};
ESP_ERROR_CHECK(spi_bus_add_device(LCD_HOST, &dev_config, &spi));
```

6. 检查SPI通信:如果以上步骤都无法解决问题,您可以尝试使用示波器检查SPI通信。这将帮助您确定问题是否出在硬件连接或SPI配置上。

通过以上步骤,您应该能够找到并解决ESP32-C6 SPI2配置80MHz失败的问题。
举报

更多回帖

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