如何使用两个 ESP32-DevKit 开发板的 SDIO 接口测试 AT 固件?_esp32有sdio

  • 1-bit SD 模式(默认): 连接 CLK, CMD,DAT0,DAT1 管脚以及 GND
  • 4-bit SD 模式: 连接上述全部管脚以及 GND
  • 无论 1-bit 模式还是 4-bit SD 模式, SDIO slave 的 CMD 和 D0-D3 都应该连接一个 10K 的上拉电阻,另外需要将 VDD_SPI 电压的 efuse 烧写为 3.3v,具体注意事项请参考 SD Pullup Requirements

SDIO Slave 准备

使用一个 ESP32-DevKit 开发板作为 SDIO Slave 设备,当使用 SDIO 4 bit 模式时:

  • 将 SDIO Slave 设备的 SPI Flash 电压设置为 3.3V
espefuse.py -p COM4 set_flash_voltage 3.3V

  • 将 SDIO Slave 的 GPIO2、GPIO4、GPIO12、GPIO13、GPIO15 都用 10KHz 电阻上拉到 3V3 管脚
  • 将 SDIO Slave 设备下载 esp-at SDIO 的 AT 固件,需要自行编译 esp-at SDK ,将指令传输方式改为 SDIO 的设置即可,如下:
    在这里插入图片描述
  • 注意:SDIO Slave晚于 SDIO Master 上电。

SDIO Host 准备

硬件连接

  • 将两个开发板的 SDIO 管脚一一对应连接
  • 将开发板上预留的两个 GND 管脚全部连接

测试结果如下

在这里插入图片描述

SDIO 通信跑通之后,可以修改 SDIO Host 端的代码,增加 AT 指令传输进行 SDIO AT 的测试。例如修改默认 esp-at/examples/at_sdio_host/ESP32 的代码中的 sdio_task() 任务,增加 AT+GMR 指令测试,如下:

static void sdio\_task(void\* pvParameters)
{
    sdio\_err\_t err;
    int at_uart_len;
    printf("Start SDIO test\r\n");
    slave\_power\_on();
    // Make sure SDIO slave has been inited
    vTaskDelay(1000 / portTICK_PERIOD_MS);

    SDIO\_LOGI(TAG, "host ready, start initializing slave...");
    err = sdio\_init();
    assert(err == ESP_OK);
    //Create the semaphore.
    rdySem = xSemaphoreCreateBinary();

    uart\_driver\_install(0, 2048, 8192, 10, &esp_at_uart_queue, 0);
    xTaskCreate(uart_task, "uTask", 2048, NULL, 4, NULL);
    xTaskCreate(sdio_recv_task, "sdioRecvTask", 2048, NULL, 6, NULL);
    
   // Create a buffer for AT+GMR command
    const char\* at_gmr_cmd = "AT+GMR\r\n";
    size\_t at_gmr_len = strlen(at_gmr_cmd);
  
    while (1) {
        // wait send state flag
        xSemaphoreTake(rdySem, portMAX_DELAY);

                // Write AT+GMR command to the buffer
        memcpy(send_buffer, at_gmr_cmd, at_gmr_len);
        

// Read data from UART
        at_uart_len = uart\_read\_bytes(0, (uint8\_t\*) send_buffer + at_gmr_len, WRITE_BUFFER_LEN - at_gmr_len, 0);
        
        SDIO\_LOGD(TAG, "Receive UART len:%d, data:%s", at_uart_len, send_buffer);
        vTaskDelay(100);
        // Send AT+GMR command
        err = sdio\_host\_send\_packet(send_buffer, at_gmr_len);
        vTaskDelay(100);

        // Send timeout
        if (err == ERR_TIMEOUT) {
            SDIO\_LOGW(TAG, "send timeout");
        }

        memset(send_buffer, '\0', sizeof(send_buffer));

    } 
    vTaskDelete(NULL);
}


测试结果如下:

AT-SDIO 测试逻辑:
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数嵌入式工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年嵌入式&物联网开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

img

img

img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上嵌入式&物联网开发知识点,真正体系化!

img

img

由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新

如果你觉得这些内容对你有帮助,可以+V:Vip1104z获取!!! (备注:嵌入式)

img

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

851459088c6af944156ee24.jpg" alt=“img” style=“zoom: 67%;” />

最后

资料整理不易,觉得有帮助的朋友可以帮忙点赞分享支持一下小编~

你的支持,我的动力;祝各位前程似锦,offer不断,步步高升!!!

更多资料点击此处获qu!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值