我们的MMC卡如上图所示,内部我们不展开分析,直接将其作为一个完整的设备来分析。 其通过CLK、CMD、DATA等管脚与我们的SOC通信,两者之间当然少不了Controller了。 把通信总线部分,拿出来看: CLK:提供SOC和设备之间的通信时钟,常用的通信频率为400KHz(识卡)、25MHz,50MHz CMD:提供SOC和设备之间的通信命令,标识不同...
SPI接口是一种通用同步串行接口总线,用来同外部设备进行通信,字长为8位。SPI接口利用CLK、DataIn、 DataOut三线进行数据的读写操作。其中,CLK为时钟信号,由外部控制器提供;DataIn和DataOut为数据输入和输出线。 是MMC的片选信号线,在整个SPI操作过程中, 必须始终保持低电平有效。 2.2 MMC命令的CRC校验 为了确保数据...
寄存器(图片1中位于Card interface controller的左侧,那些小矩形),用于提供卡的信息、参数、访问控制等功能。 3)卡的管脚有VDD、GND、RST、CLK、CMD和DATA等,VDD和GND提供power,RST用于复位,CLK、CMD和DATA为MMC总线协议(具体可参考3.2小节)的物理通道: CLK有一条,提供同步时钟,可以在CLK的上升沿(或者下降沿,或者...
控制器就是通过SD/MMC总线对SD/MMC卡进行初始化,读,写等一系列操作。其总线包括时钟线CLK,命令线CMD,数据线DAT3-DAT0(MMC卡只有DAT0)等。上电后,控制器必须按一定的总线协议传输命令给卡,使其初始化。总线上一共有三种数据格式:命令包,响应包,数据包。由于在传输中数据和命令均有可能出错,命令带有7位的CRC...
CLK 用于同步的时钟信号 Data Strobe 此信号是从 Device端输出的时钟信号,频率和 CLK 信号相同,用于同步从 Device 端输出的数据。该信号在 eMMC 5.0 中引入。 CMD 此信号用于传送 Host的 command 和 Device 的 response。 DAT0-7 用于传输数据的 8 bit总线。
5 SD卡的软件驱动和指令集。SD卡的命令格式如下,6字节共48位,传输时最高位(MSB)先传输 6 复位方法:1.拉高CS,发送至少74个clk周期来使SD卡达到正常工作电压和进行同步2.选低CS,发送CMD0(0x40+0),需要收到回应0x01表示成功进入idle状态3.拉高CS,发送8个时钟 7 初始化SD卡为SPI工作模式发送CMD55+...
OUTREG32(A_MSC_CLKRT(0), 7);//extclk/128 //OUTREG32(A_MSC_LPM(0),0x01); //sd2_0 = 0; //默认为标准SD卡 resp = mmc_cmd(0, 0, 80, 0); //先80个时钟 resp = mmc_cmd(8, 0x1aa, 0x1, MSC_CMDAT_RESPONSE_R1); // 判断是sd2(返回0x1)以后的卡还是sd1(返回0x5)现在基...
void mmc_power_up(struct mmc_host *host) { int bit; /* 判断是否已经处于MMC_POWER_ON,是的话不进行后续操作 */ if (host->ios.power_mode == MMC_POWER_ON) return; /* 第一阶段,先设置对应的io setting使host处于MMC_POWER_UP的状态(总线工作频率没有设置) */ mmc_host_clk_hold(host); /...
clk cs 8x4 8x 8 (64 clocks) 8 (multiple) 8 8x 8 8 x 16 (64 clocks) 8x2 (16 clocks) 8 NCR 49h (CMD9) FFh (CRC) CSD Data 00h FEh (Start Byte) CRC (2 Bytes) Don’t Care 8x4 8x 8x 8 8 8 8 (64 clocks) (multiple) (multiple) 8 NCR NAC 8 = Number of clocks 8 =...
pinctrl-0= <&sdmmc1_clk &sdmmc1_cmd &sdmmc1_bus4>; power-domains = <&power RV1126_PD_SDIO>; status="disabled"; }; 注意上述的三个设备描述状态都是disabled(status = "disabled";),也就是处于未启用状态,打开dts文件(kernel/arch/arm/boot/dts/rv1109-38-v10-spi-nand.dts),其中只有sdmmc...