sd卡共支持三种传输模式:spi模式、1位sd模式、4位sd模式。所有的sd卡都必须支持较老的spi/mmc模式,这个模式支持慢速的四线spi接口,使很多微控制器都可以通过spi或模拟spi接口来读写sd卡。由于S5PV210具有sd总线控制器,并且兼容sd2.0的sd卡,因此此处只分析4位sd模式、sd2.0及sd1.0版本的sd卡驱动实现,sd2.0以上版本sd卡、MMC卡、spi方式读写sd卡在本文不适用。
1、S5PV210的HSMMC主机控制器初始化
// 配制IO引脚为SDIO功能
GPG0CON = 0x2222222;
// 禁止上下拉
GPG0PUD = 0;
// GPG0PUD = 0x2AAAA;
// 配制时钟源:channel 0 clock src = SCLKEPLL = 96M
CLK_SRC4 = (CLK_SRC4 & (~(0xf<<0))) | (0x7<<0);
// 时钟分频:channel 0 clock = SCLKEPLL/2 = 48M
CLK_DIV4 = (CLK_DIV4 & (~(0xf<<0))) | (0x1<<0);
// software reset for all
SWRST0 = 1;
timeout = 1000;
temp = SWRST0;
while (SWRST0 & (1<<0))
{
if (timeout == 0)
{
return -1; // reset timeout
}
timeout--;
delay(US * 10);
}
// 设置sd卡时钟在100k~400k,sd卡在识别阶段必须