物理层一共有以下的内容需要了解
-
存储卡系统的内容,包括总线,卡容量等,一些命令格式,响应格式等内容,这个是必须完全理解。
-
SD卡的功能描述,包括复位,初始化和识别流程,读写,擦除等操作,这个是编程时候一定要搞懂的。
-
命令和响应的具体位的功能,这个也是编程时候用到的,必须完全理解。
-
卡的寄存器,这个也是必须理解的内容。
另外还有一种兼容的SPI模式,音乐播放器用不到这种通信方式,不需要理解。
/********************************************************/
存储卡系统的内容,其中读写问题,SD卡支持读写,支持电压,我们用到3.3V,属于正常电压,卡容量,我们用到1G的卡,属于标准卡,速度等级,一共有4种,大容量的卡最少为2M/S的速度。
重点是总线协议,总线上的数据流有3中
1、命令,任何操作开始前,都要先在CMD线上发送命令。
2、响应,主机发送命令,从机则在CMD上返回响应。
3、数据,在数据线上传送,主机到SD,或者SD到主机。
命令和响应是通过结构体进行传送,他们的结构在后面有重点描述。数据的传送则通过块,可以进行单块和多块的传送,后面跟一个CRC校验,多块的传送可以通过命令进行终止,注意多条线写块的时候,只在DATA0上有一个BUSY的信号。
命令的格式如下,一个0作为开始,1作为结束,总长是48位,跟一个CRC进行校验,响应则会有4种不同的长度。命令为高位先发送。
数据包的数据也有两种大小,一种是8位,一种是多位。
/********************************************************/
SD卡的功能描述
有广播和定点传送,这个是所有总线都有的特点,操作模式也有两种,卡识别模式和传送模式。
卡识别模式在复位后进行,主机操作总线上的新卡,并发送CMD3给新卡赋址。然后就进入数据传送模式。其中识别模式有3中状态,空闲,准备和识别中,而数据传送有待机,传送,发送和接收数据,编程和脱机几种状态。
卡的识别模式下,先复位所有的卡在识别模式下,然后测试电压范围,识别卡,分配地址,这种操作在各自的CMD线上完成,这种模式下,时钟用到fod。
CMD0是软件复位命令,上电或者CMD0以后,所有的SD等待下一个命令,卡默认地址为0,以最慢的速度和最高的驱动电流来通信。
确认SD工作条件,CMD0后,主机和SD都不知道对方的电压,2.0版本中,CMD8就是用来完成这个任务。CMD8的响应中有一个VHS位来判断,电压表中是否找到了主机的工作范围,找到则该位置1.我们电压为3.3V,在闪迪的卡中有这个范围。
卡的初始化和识别操作:总线激活以后,开始进行初始化和识别工作。
先发送ACMD41,发送主机的信息,并要求SD返回从机的信号。我们用到标准卡,不需要设置HCS这个信号。
主机一直查询BUSY位,如果电压表中没有主机的工作电压,则继续进行初始化,范围匹配则返回BUSY位为1.其他卡的操作也是一样的,然后发送CMD2来获取卡的CID,SD卡响应完成以后,则继续回到识别状态,然后主机发送CMD3,来分配地址,该地址设置完以后,SD转到待机模式,如果还有新卡,主机继续发送CMD3即可。
数据传送模式:初始化时为了兼容不同卡,主机工作在低速的fOD时钟模式下,配置完成后,主机要工作到fpp模式下,主机继续发送CMD9来获取卡的参数数据CSD,包括块的长度,容量等,然后发送CMD4来拓展传送的参数,包括通信线和块大小等,也就是配置DSR,包括时钟的切换也在此时发生。然后发送CMD7就进入了传送模式。
单线和4线的切换可以通过ACMD6来完成。
/********************************************************/
文章评论(0条评论)
登录后参与讨论