以下是 SD NAND(贴片式TF卡/贴片式SD卡)进入低功耗模式的详细方法,涵盖硬件设计、软件配置及注意事项:
SD NAND的低功耗模式通常分为 Sleep Mode(睡眠模式) 和 Power-Down Mode(断电模式),芯片需要初始化完成,CMD0要下,就会进入低功耗模式,具体实现如下:
触发条件:
通过发送 CMD0(GO_IDLE_STATE) + 特殊参数(部分厂商扩展定义)。
功耗表现:
核心电路休眠,仅保留必要寄存器供电,功耗降至 50μA~100μA。
适用场景:
设备短时待机(如传感器间歇性存储数据)。
触发条件:
发送 CMD15(CMD_GO_INACTIVE_STATE) 或厂商自定义命令(如CMD60)。
功耗表现:
完全关闭内部电源(需外部维持VDD),功耗降至 <1μA。
适用场景:
长期断电保存(如电池供电设备的深度休眠)。
// 示例代码(基于SPI模式)void SDNAND_EnterSleepMode() {
// 1. 发送CMD0 + 特殊参数(以芯存者SDNAND为例)
uint8_t cmd_sleep[] = {0x40, 0x00, 0x00, 0x08, 0x00, 0x95}; // 参数0x00000800表示进入睡眠
SPI_Transfer(cmd_sleep, 6);
// 2. 关闭SDIO时钟(降低主控功耗)
SDIO_ClockCmd(DISABLE);
// 3. 切换主控GPIO为高阻态(避免漏电流)
GPIO_Init(SDIO_CLK_PIN, GPIO_MODE_ANALOG);
GPIO_Init(SDIO_CMD_PIN, GPIO_MODE_ANALOG);}
void SDNAND_EnterPowerDown() {
// 1. 发送CMD15(部分厂商需先发送CMD0复位)
uint8_t cmd_pwrdown[] = {0x4F, 0x00, 0x00, 0x00, 0x00, 0xFF};
SPI_Transfer(cmd_pwrdown, 6);
// 2. 断开VDD电源(需硬件支持可控电源)
PowerSwitch_OFF(SD_VDD_PIN);}
void SDNAND_WakeUp() {
// 1. 恢复VDD供电(Power-Down模式必需)
PowerSwitch_ON(SD_VDD_PIN);
delay_ms(10); // 等待电源稳定
// 2. 发送CMD0复位
uint8_t cmd0[] = {0x40, 0x00, 0x00, 0x00, 0x00, 0x95};
SPI_Transfer(cmd0, 6);
// 3. 重新初始化SDIO接口
SDIO_ClockCmd(ENABLE);
SD_Init();}
设计要点:
使用 MOSFET(如AO3400) 或 负载开关(如TPS22918) 控制SDNAND的VDD电源。
电路示例:
VCC (3.3V) → MOSFET_Drain
MOSFET_Gate ← MCU_GPIO
MOSFET_Source → SDNAND_VDD
功耗对比:
可控电源设计可降低静态功耗 >90%(对比直接连接VCC)。
上拉电阻管理:
在Sleep Mode下关闭CMD/DAT线上拉电阻(通过IO扩展芯片如PCA9538控制)。
IO状态配置:
主控IO切换为高阻态或下拉,避免浮空引脚漏电流。
模式 | 电压 (V) | 平均电流 (μA) | 唤醒时间 (ms) |
---|---|---|---|
正常工作 | 3.3 | 5000~10000 | - |
Sleep Mode | 3.3 | 80 | 2 |
Power-Down | 0 | 0.5 | 100 |
数据保存风险:
Power-Down模式前需确保所有写入操作完成(检查STA_TRAN
状态位)。
时序兼容性:
部分SDNAND需在CMD0后延迟50ms才能响应后续命令(参考具体型号手册)。
温度影响:
低温环境(<-20℃)下唤醒时间可能延长至200ms,需预留余量。
通过以上方法,可显著降低嵌入式系统中SDNAND的功耗,尤其适合电池供电的IoT设备。建议根据实际需求选择Sleep或Power-Down模式,并配合硬件电源管理电路实现最优效果。