ESP32使用SD卡注意事项
有两种方法可以使用:上拉电阻为47K和上拉电阻为10K。
上拉电阻为47K。
按照ESP32-CAM开发板的接法。
上拉电阻为10K。
一、原理图。
ESP32S模块中有引出SDIO的接口,就是SD2、SD3、CMD、CLK、SD0、SD1,如下图所示,第17~22引脚。
第17~22引脚也就是ESP-IDF中SD卡的Slot0,这里连接了ESP32S模块的内部Flash芯片,所以这里是不能接SD卡的。
所以要接SD卡的Slot1,原理图如上图所示,SDIO_D0等引脚。
SDIO_CD可以接任意的GPIO口。
其中,U0TXD和T0RXD用于烧录固件,而GPIO16、GPIO17为AT指令的串口2,视具体情况引出。
二、efuse。
ESP32的芯片内部是有熔丝,可以通过串口烧断熔丝,以固化某些功能,但是这个操作不可逆,使用前需要详细阅读手册。
ESP32中的MTDI引脚,也就是GPIO12,当ESP32上电时,先读GPIO12的电平,拉低时把VDD_SDIO引脚配置为3.3V,供内部Flash使用;拉高时把VDD_SDIO引脚配置为1.8V。
因为ESP32S的内部Flash是3.3V供电的,所以需要把GPIO12拉低,但是GPIO12又接了SDIO_D2并且上拉10K电阻。这就导致了GPIO12不能使用。
使用ESP32的efuse可以不读GPIO12的电平来固定VDD_SDIO的输出电压。
三、搭建python开发环境。
要使用efuse需要python3解释器和pip工具。如下图所示。
安装好python3解释器后,添加到path系统环境变量,如下图所示。
使用管理员方式打开cmd,如下图所示。
进入刚才下载的tar包目录中,解压后,使用python setup.py install,安装pip,如下图所示。
安装完成后,可以看到pip.exe,如下图所示。
把pip的目录也添加到path系统环境变量中,如下图所示。
用管理员方式打开cmd,使用pip安装esptool,如下图所示。
四、使用python脚本配置ESP32的efuse。
先把ESP32的GPIO0拉低,重新上电。
打开cmd,执行以下命令,其中-b设置波特率为115200,-p设置COM口,这里是COM10,视具体情况而定。python的目录也是视自己电脑而定。第二条命令summary可以获取ESP32的efuse信息,用于观察是否设置正确。
cd C:\Program Files\Python 3.5\Scripts python espefuse.py-script.py -b 115200 -p COM10 summary python espefuse.py-script.py -b 115200 -p COM10 set_flash_voltage 3.3V
最终结果如下图所示。
设置电压为3.3V时,需要再输入一遍BURN,回车,才能生效。
重新上电,GPIO12可以正常使用,同时又不影响ESP32读取Flash。
五、烧录固件。
由于SDIO的引脚都接了10K上拉电阻,会导致ESP32无法烧录固件。
需要去掉SDIO_D0,也就是GPIO2的上拉电阻,才能正常烧录固件。
六、IDF版本。
ESP32-IDF(V2.0版本)不支持SDIO接口的SD卡,建议使用V3.2.2版本(使用官方推荐的lubuntu)。