确定SDNAND芯片工作模式的方法主要取决于初始化过程中的命令响应和接口配置。以下是两种模式的初始化过程和特点,以及如何确定工作模式的方法:
SD模式初始化过程:
- 配置时钟频率为0到400kHz。
- 发送CMD0指令,使卡进入idle状态。
- 发送CMD8指令,校验SD Memory Card接口的工作状态。
- 发送CMD55+ACMD41指令,判断SD卡的上电是否正确。
- 发送CMD2验证SD卡是否正确接入。
- 发送CMD3,读取SD卡的RCA(地址)。
- 发送CMD9,获取CSD寄存器来获取卡的相关信息。
- 发送CMD7,使能SD卡。
- 配置高速时钟,准备数据传输,一般为20M-25M。
SPI模式初始化过程:
- 设置SPI时钟为低速0~400khz。
- 发送至少74个周期的时钟信号。
- 发送SD卡命令CMD0,使SD卡切换到SPI模式。
- 发送CMD8(SD2.0),鉴别SD2.0协议并读取工作电压。
- 发送CMD55+ACMD41(SD2.0),检测初始化是否完成。
- 发送CMD58,进一步确认SD卡型号。
- 发送CMD55+ACMD41(SD1.0),检测返回值进行判断为SD1.0或MMC卡。
- 发送CMD55+ACMD41(SD1.0),检测初始化是否完成。
- 发送CMD16,设置SD卡扇区大小(默认为512字节)。
- 设置SPI时钟为高速,最大为25Mhz,初始化完成。1
2
在初始化过程中,如果SD卡在接收到CMD0指令期间CS信号被断言(低电平),则卡将切换到SPI模式,并在SPI模式下响应R1。如果卡识别到需要SD模式,它将不响应命令并保持在SD模式。3
在实际应用中,可以通过检查初始化过程中的命令响应和卡的反馈来确定SDNAND芯片当前的工作模式。例如,如果在初始化时发送CMD0指令后,卡响应了SPI模式的R1响应,则可以确定卡当前工作在SPI模式。相反,如果卡没有响应或者响应的是SD模式的指令,则卡工作在SD模式。3