存储技术
多年来,可移动计算机存储器已经通过许多不同的介质得到了发展。最初的可移动磁盘是磁软盘,然后是硬磁盘。
在20世纪90年代,可移动存储过渡到光盘介质(后来被DVD超越)。
在2000年代,由于闪存技术的进步,基于闪存的可移动存储开始流行。最初,这主要是在USB拇指驱动器的形式。许多竞争的存储卡格式也出现了;包括索尼记忆棒、CompactFlash (CF)、xD-Picture卡、东芝SmartMedia和多媒体卡(MMC);然而,安全数字(SD)卡最终获得了最大的市场吸引力。
SD卡类似于MMC卡(实际上是从MMC卡衍生而来的),但是SD卡略厚(2.1毫米对MMC的1.4毫米),并被开发为添加DRM(数字版权管理)功能以打击音乐盗版。一般来说,SD卡向后兼容MMC卡,这意味着MMC卡可以在支持SD卡的地方使用(但不一定反过来)。MMC和SD继续共存,SD更受可移动存储器的欢迎,MMC(以eMMC的形式)更受嵌入式系统焊接存储的欢迎。
波形因数
SD卡有3种外形规格。最初是全尺寸SD,随后是miniSD和microSD。
通信接口
SD卡的引脚排列如下:
SD卡支持两种通信协议:SD总线和SPI总线(一些带有额外引脚的新型卡也支持UHS-II总线和PCIe总线协议,但SD总线和SPI总线是最常见的)。
几乎所有现代微控制器都包括SPI外设,因此SPI是嵌入式开发人员与SD卡通信的常用方式。
一些微控制器还包括用于与SD卡通信的SDIO外设。由于SD总线协议一次最多可传输4位数据(通过引脚DAT0-DAT3),并且具有独立的命令(CMD)线路,因此使用SD总线传输数据的速度比使用SPI总线(一次只能传输1位数据)快4-5倍。SD总线以1位模式启动,但可以通过发出适当的命令设置为4位模式。
默认情况下,卡以SD总线模式(1位)启动,但可以通过发送特定命令(CMD0)同时保持CS线为低电平来设置为SPI模式。由于SD总线CMD引脚与SPI总线MOSI引脚相同,并且SD总线CLK引脚与SPI总线SCK引脚相同,因此MCU SPI控制器可以用来发出命令。
本文不会试图涵盖完整的SD卡命令集或通信协议。该规范可从https://www.SDcard.org/downloads/pls/的SD协会获得(或者有时从sd卡制造商处检查规范文档可能更容易),但是大多数开发者将简单地使用现有的代码库,而不是从头开始编写他们自己的代码库。
数据存储
SD卡的读写是以块为单位进行的,通常大小为512字节。文件系统存储方案,如FAT16或FAT32,通常在卡上实现(作为原始闪存之上的概念层)。文件系统是存储数据的结构化方法(在文件和目录中),由主机(微控制器或计算机)上的软件处理,而不是由SD卡本身处理。同样,大多数开发人员会选择简单地使用现有的文件系统库,而不是从头开始编写自己的文件系统库。
FAT16文件系统更简单,在2GB或更小的SD卡开始变得稀缺之前一直很流行,因为2GB是FAT16可以处理的最大大小。FAT32可以处理高达16TB的文件系统。随着2GB或更小的SD卡变得越来越难找到(由于不再生产),许多开发人员被迫将他们的项目从使用FAT16文件系统迁移到使用FAT32。
可靠性
SD卡在内部使用闪存(有关更多信息,请参见我们关于闪存的专门文章),因此数据是以块的形式擦除的,通常大小为几千字节或更大。因此,为了写入一些新数据,可能需要擦除和重写整个存储块的大部分。因为此操作需要一点时间,所以如果在此过程中断电,数据可能会丢失,文件系统可能会损坏。此外,FAT库可以在MCU(微控制器单元)或MPU(微处理器单元)RAM中缓存数据,以便减少闪存中的擦除-写入操作的数量(减少存储器的磨损,因为它具有有限数量的可以执行的擦除-写入周期),并且同样,如果断电或系统崩溃,那么数据将会丢失。
由于闪存可执行的擦除-写入周期数量有限,一些SD卡在其内部控制器中包含损耗均衡功能,可自动将擦除-写入操作平均分配到闪存的整个区域(用户不可见,因为它会自动将物理内存地址转换为虚拟内存地址)。
工业SD卡可用,提供更高的可靠性和耐用性。这些卡配有实现损耗均衡和ECC(纠错码)等功能的控制器,高端卡还使用SLC(单层单元)或pSLC(伪单层单元)闪存技术,而不是MLC(多层单元)技术。MLC是一种在每个存储单元中存储多个位的技术——降低了成本,但也降低了可靠性和耐用性。对于远程和安全关键/高可靠性应用,建议使用工业SD卡。
电压水平
默认情况下,SD卡的工作电压为3.3V,因此需要电压转换器来连接5V微控制器。SDHC和SDXC卡可以根据命令切换到1.8V操作,这对于高速信号传输更好。
模拟支持
Proteus包括带SPI接口的MMC/SD卡仿真模型,可以连接到Proteus也支持仿真的各种微控制器。此外,微控制器和MMC/SD卡之间的SPI通信可以使用SPI调试器虚拟仪器进行调试。
审核编辑:黄飞
全部0条评论
快来发表一下你的评论吧 !