sdmmc学习笔记手工版
学习笔记
学习笔记2:由于毕业设计要使用Altium Designer,而我已经很久没有使用过这个软件了,所以我对其进行了系统的复习,先下载软件,安装我所需要的库,借了有关书籍进行阅读,由于库里没有CC2540这块芯片,我自己先要建立这片芯片的库。
我查找了这块芯片的原理图,按照原理图开始绘制,起初认为是个非常简单的事,但真正开始以后就发现不是想的那么简单,首先在画芯片的管脚时,管脚的方向就是个问题,由于是正方形的芯片,所以管脚有四个方向,开始的时候不是很收敛,每个管脚都画的很慢,慢慢熟能生巧,也学到了一些快捷键的使用方法:<Space>键每按一次,被选中的元件逆时针旋转90°。
<Shift>+<Space>键每按一次,被选中的元件顺时针旋转90°<X>键被选中的元件左右对调<Y>键被选中的元件上下对调做好芯片之后,我要做的就是了解芯片的引脚功能,并对电路进行设计。
1:结束了紧张的实习,开始了毕业设计的规划,在与导师进行交流后,我已明确了自己毕业设计的任务,近期我写了开题报告,做了开题报告的PPT,并对其进行了详细的解说,由于剩下的时间已经不多了,我必须抓紧时间开始着手准备毕业设计所需要的资料,按照计划进行,才能完成任务。
3:将CC2540芯片的库做好之后,接下来我阅读了CC2540的数据手册,了解各个引脚的功能,同时我利用网络资源学习到了一些以前不太了解的知识,例如什么是射频,了解到蓝牙4.0的有点与应用以及低功耗蓝牙技术的发展,对一些不懂得专业名词进行查询例如什么事连路预算等。
由于我对电路的设计还不太懂,接下来的任务就是多看一些例子,学习电路的设计,完成电路的原理图的绘制。
4.开始绘制电路原理图,首先由收集到的资料得知CC2540是一块6mm×6mm的正方形芯片,我在绘制原理图时就是按照正方形的规格来绘制CC2540的,它一共有40个引脚,包括:----含8个通道和可配置分辨率的12位数模转换----集成高性能比较器----通用定时器16字节(2个8字节)----21个多功能I/O口(19*4mA.2*20mA)----32kHz休眠定时器----2个串口----全速USB接口----红外发生电路----功能强大的5个通道直接内存访问(DMA)----AES安全协处理器----电池监控和温度传感器----每个CC2540内含一个唯一的48位IEEE地址。
sd卡学习笔记之欧阳语创编
1、简介:SD卡(Secure Digital Memory Card)是一种为满足安全性、容量、性能和使用环境等各方面的需求而设计的一种新型存储器件,SD卡允许在两种模式下工作,即SD模式和SPI模式,本系统采用SPI模式。
本小节仅简要介绍在SPI模式下,STM32处理器如何读写SD卡,如果读者如希望详细了解SD卡,可以参考相关资料。
SD 卡内部结构及引脚如下图所示:SD卡内部图.JPG2、SD卡管脚图:SD卡图.JPG3、SPI模式下SD各管脚名称为:sd 卡:SPI模式下SD各管脚名称为.JPG注:一般SD有两种模式:SD模式和SPI模式,管脚定义如下:(A)、SD MODE 1、CD/DATA3 2、CMD 3、VSS1 4、VDD 5、CLK 6、VSS2 7、DATA0 8、DATA1 9、DATA2(B)、SPI MODE 1、CS 2、DI 3、VSS 4、VDD 5、SCLK 6、VSS2 7、DO 8、RSV 9、RSVSD 卡主要引脚和功能为:CLK:时钟信号,每个时钟周期传输一个命令或数据位,频率可在0~25MHz之间变化,SD卡的总线管理器可以不受任何限制的自由产生0~25MHz 的频率;CMD:双向命令和回复线,命令是一次主机到从卡操作的开始,命令可以是从主机到单卡寻址,也可以是到所有卡;回复是对之前命令的回答,回复可以来自单卡或所有卡;DAT0~3:数据线,数据可以从卡传向主机也可以从主机传向卡。
SD卡以命令形式来控制SD卡的读写等操作。
可根据命令对多块或单块进行读写操作。
在SPI模式下其命令由6个字节构成,其中高位在前。
SD卡命令的格式如表1所示,其中相关参数可以查阅SD卡规范。
4、MicroSD卡管脚图:MicroSD卡管脚图.JPG5、MicroSD卡管脚名称:MicroSD卡管脚名称.JPGSD 卡与MicroSD卡仅仅是封装上的不同,MicroSD卡更小,大小上和一个SIM卡差不多,但是协议与SD卡相同。
arduino学习笔记18---SD卡读写实验教程文件
a r d u i n o学习笔记18---S D卡读写实验本次实验使用arduino驱动SD卡,在SD卡中进行文件读写。
需要说明的是arduino的SD库文件,目前对2G以上的卡支持不是很好,所以推荐大家使用2G包含2G以下的,文件格式使用FAT格式。
这次我是用的是kingmax2G的MicroSD卡。
先看一下硬件连接图把下面代码下载进arduino控制板/*此例子展示如果记录三个模拟引脚数值到SD卡,使用SD库。
电路部分* 模拟引脚使用模拟口0,1,2大家可以根据情况接入模拟传感器,如果没有,也可以完成此实验,只不过数值是不停跳动的干扰源。
* SD卡与arduino控制板使用SPI总线连接** MOSI - pin 11** MISO - pin 12** CLK - pin 13** CS - pin 4*/#include <SD.h>// CS引脚为pin4,这里也沿用官方默认设置const int chipSelect = 4; //设定CS接口void setup(){Serial.begin(9600); //设置串口通信波特率为9600Serial.print("Initializing SD card..."); //串口输出数据Initializing SD card...pinMode(10, OUTPUT);if (!SD.begin(chipSelect)) { //如果从CS口与SD卡通信失败,串口输出信息Card failed, or not presentSerial.println("Card failed, or not present");return;}Serial.println("card initialized."); //与SD卡通信成功,串口输出信息card initialized.}void loop(){// 定义数组String dataString = "";// 读取三个传感器值,写入数组for (int analogPin = 0; analogPin < 3; analogPin++) {int sensor = analogRead(analogPin);dataString += String(sensor);if (analogPin < 2) {dataString += ",";}}// 打开文件,注意在同一时间只能有一个文件被打开// 如果你要打开另一个文件,就需要先关闭前一个File dataFile = SD.open("datalog.txt", FILE_WRITE);// 打开datalog.txt文件,读写状态,位置在文件末尾。
ch9内存管理基础(自己摘抄的笔记)
ch9内存管理基础(⾃⼰摘抄的笔记)静态链接、静态装⼊的缺点是既浪费硬盘空间,也浪费内存空间部分装⼊的依据是程序局部性特性组织合理的存储结构,依据是访问速度匹配关系、容量要求和价格。
(易失性)操作系统对寄存器,Cache没有话语权,(对操作系统是透明的),只能⽤,不能⽀配存储管理⽬的充分利⽤内存尽可能⽅便⽤户使⽤存储保护与安全共享与通信实现的性能和代价解决程序空间⽐实际内存空间⼤的问题存储管理任务存储分配和回收存储共享存储保护存储器扩充存储管理⽅案连续分配⽅式单⼀连续存储管理分区存储管理离散分配⽅式分页存储管理(分配单位是页)段式存储管理(分配单位是段)段页式存储管理虚拟存储器连续分配⽅式基本思想Main memory usually into two partitions:Resident(常驻) operating system, usually held in low memory with interrupt vector.User processes then held in high memory单⼀连续存储管理:基本思想整个内存空间分成系统区和⽤户区,系统区给操作系统使⽤,⽤户区给⽤户使⽤。
适⽤场合最简单,适⽤于单⽤户、单任务的OS优点易于管理缺点对要求内存空间少的程序,造成内存浪费;程序全部装⼊,很少使⽤的程序部分也占⽤内存。
系统特点1.容易记住的状态,不是全部空闲就是全部已分配;2.当作业被调度时就获得全部空间;3.全部主都分配给⼀个作业;4.作业运⾏完后,全部主存空间⼜恢复成空闲(以上所指的全部主存空间是全部⽤户区空间)对于连续区分配⽽⾔,虽然这种管理⽅案不需要专门的硬件,但是应有硬件保护机构,以确保不⾄于偶然或⽆意地⼲扰系统区中的信息,解决的⽅法有两个:1.使⽤界限的⽅法。
界限寄存器中存放的起始地址和终⽌地址,作业运⾏时,检查访问指令或数据的地址,若不在界限寄存器所框住的范围内,则发⽣越界中断。
eMMC完全解读、一份很好的eMMC学习资料
充电 IC
加速感应器
FM IC 中频
SAW BANK 开机键
2G/3G 功放
Page 13
eMMC芯片尺寸有几种规格?
11.5mm x 13mm x 1.3mm 12mm x 16mm x 1.4mm 12mm x 18mm x 1.4mm 14mm x 18mm x 1.4mm
7 用emmc介面卡搭配winhex软件能够格式化,并且写入文 件基本可以判断芯片是好片。
8. 9 GP是针对客户实际应用不同和有所差异、比如手机里面的
eMMC芯片、存储系统的区域和用户存放应用程序区域
Page 34
2 upm答案
1 支持window xp win 7系统 2否 3 upm、bin 4 upm里面的分区时物理切割不可恢复、一般客户应用属于
软件分区 5 支持11.5*13*1.3、12*16*1.4、12*18*1.4、14*18*1.4mm 更换不同的限制框 6 芯片与座子的接触是否良好、硬盘小于芯片容量、是否全
新的芯片 7 FW_CONFIG为00 固件写保护功能
Page 35
如何操作? 7 在I2S上面使用AUTO SCAN一定是最快的吗?
Page 3
SD卡与MMC卡的区别???
Page 4
SPI模式
Page 5
MMC模式
MMC与eMMC区别??
Page 6
MMC
一种接口协议 SPI 和MMC模式通讯
eMMC
具备MMC协议的芯片
Page 7
eMMC的概念?
eMMC=NAND falsh+控制器+标准封装接口 大容量存储设备
基础知识问答
1 boot区域存在芯片的哪里?toob有什么用? 2 boot1 与 boot2 区别有何关联? 3 为什么emmc可以取代nor flash的开机功能? 4 擦除与格式化的区别? 5 mcp是什么? 6 如何判断客户芯片是否支持? 7 如何判断客户芯片的好坏? 8 eMMC介面卡有什么作用?如何搭配winhex软件检测芯片? 9 GP区域的作用?
名词解释嵌入式 sdmmc
嵌入式 SDMMC1. 引言嵌入式 SDMMC(Secure Digital Memory Card)是一种用于嵌入式系统的存储设备接口。
它是一种高性能、低功耗、可移动和可扩展的存储解决方案,广泛应用于智能手机、数码相机、车载导航系统等消费电子产品中。
本文将详细介绍嵌入式SDMMC 的定义、原理、特性以及在嵌入式系统中的应用。
2. 定义与原理2.1 定义嵌入式 SDMMC 是一种基于 SD 卡标准的存储设备接口,它提供了一种连接外部存储设备(如闪存卡)和嵌入式系统的方法。
SDMMC 接口可以通过 SPI(Serial Peripheral Interface)或者更快速的 4-bit/8-bit 总线模式进行通信。
2.2 原理SD 卡是一种非易失性存储设备,采用了闪存作为存储介质。
SD 卡分为三个主要部分:物理层接口、逻辑层和文件系统。
物理层接口是指 SD 卡与外部设备之间的电气接口,包括时钟信号、数据传输信号以及电源供应等。
逻辑层是指 SD 卡与主机之间的协议层,用于控制数据的读写和传输。
SD 卡支持多种通信协议,包括 SPI 模式和 4-bit/8-bit 总线模式。
文件系统是指 SD 卡中存储数据的组织方式,常见的文件系统有 FAT16、FAT32 等。
文件系统决定了数据在 SD 卡中的存储位置和读写方式。
3. 特性3.1 高性能嵌入式 SDMMC 接口支持高速数据传输,可以实现较快的读写速度。
SD 卡标准定义了不同速度等级,包括 Class 2、Class 4、Class 6 和 Class 10 等。
不同等级的 SD 卡具有不同的最小连续写入速度,以满足不同应用场景对性能的需求。
3.2 低功耗嵌入式 SDMMC 接口在传输数据时采用了较低的电压,并且具备动态电源管理功能,在不使用时可以进入低功耗模式,以节省能量。
3.3 可移动与可扩展SD 卡具有可移动性和可扩展性,用户可以随时插拔 SD 卡,并且可以根据需要增加或更换容量更大的 SD 卡。
51单片机读写SD_MMC卡设计报告
51单片机读写SD_MMC卡设计报告杨文斌(qq:292942278) 2007-08-20一、总则本文件介绍了在51平台通过SPI方式读写SD/MMC卡,包括软硬件需求, SD/MMC硬件连接, SPI接口软件模拟,SD/MMC上电初始化,写单块,读单块,写多块,读多块,块擦除,上位串口通讯协议,PC上位软件操作说明等。
二、软硬件需求a)单片机固件编译环境:Keil C51 uVision2b)PC上位软件编译环境:Visual C++ 6.0c)硬件环境:1)W78E52B一片;2)SD/MMC卡插座一个;3)MAX232一片;4)cross串口线一条;三、SD/MMC硬件连接SD/MMC与51单片机引脚连接如下表1,供参考:注意:SD/MMC引脚除VDD(PIN4)/VSS(PIN3/6)外,其它引脚连接上拉电阻(47k)至 3.3v 电源。
四、SPI接口软件模拟由于W78E52B没有集成硬件SPI接口,所以固件需要通过软件来模拟实现SPI接口;a)SPI接口基本原理:SPI采用HOST/SLAVE结构,HOST与SLAVE以字节为传输单位,支持4种模式; SPI接口定义有4个引脚CS,SI,SO,SCK;SD SPI接口工作于模式0,各引脚功能分别描述如下:1)CS为片选引脚,低电平为有效;2)SI为Host输出Slave输入引脚,空闲为高电平,SCK上升有效,;3)SO为Slave输出Host输入引脚,SCK下降有效;4)SCK为同步时钟;b)SPI HAL:包括4个函数,上层软件通过调用这4个函数,来实现与SD/MMC以SPI方式进行数据交换。
1)SPI_SendByte(INT8U onebyte)――以SPI方式向SD/MMC发送一个字节2)INT8U SPI_RecByte(void)――以SPI方式从SD/MMC接收一个字节3)SPI_CS_Assert(void)――将CS引脚置为低电平有效4)SPI_CS_Deassert(void)――将CS引脚置为高电平无效c)通过SPI HAL发送的RESET命令CMD0波形图,如下图1,以供参考:图1-RESET命令CMD0波形图五、SD/MMC上电初始化当SD/MMC卡上电后,单片机需要对其进行上电初始化,上电初始化步骤顺序所列如下:1)置CS为低,至少延时74个CLK,延时波形图,如图2,以供参考:图2-延时波形图2)发送RESET命令CMD0,其波形图参考图1:3)发送命令CMD1(SD卡使用命令ACMD41)激活SD/MMC卡, 固件需重复发送命令CMD1直到R1 idle state位为0。
SD6.0规范(简化版)学习笔记
SD6.0规范(简化版)学习笔记目录1.概述 (1)2.系统特点SYSTEM FEATURE (1)3.SD存储卡系统概要 (2)3.1按照读写特性,可分为读写卡以及只读卡。
(2) 3.2按供电电压可分为两类 (2)3.3卡容量 (2)3.4速率等级 (2)3.5总线拓扑 (2)3.6总线协议 (2)3.6.1SD总线协议 (2)3.6.2SPI总线协议 (4)3.6.3UHS-2总线协议 (4)3.7SD存储卡的管脚和寄存器 (5)3.7.1SD 总线管脚安排 (5)3.7.2UHS-2总线管脚安排 (5)3.8ROM卡(即前面提到的只读卡) (5)3.9UHS-1卡 (5)3.9.1支持的速率 (5)3.9.2UHS-1卡的类别 (5)3.9.3UHS-1主设备类别 (5)3.9.4UHS-1总线速率模式选择流程 (5)3.9.5UHS-1系统框图 (6)3.9.6UHS-1卡总线速率模式总结 (6)3.10UHS-2卡 (6)3.10.1UHS-2卡工作模式 (6)3.10.2UHS-2卡类别 (6)3.10.3UHS-2主设备和卡配合 (7)3.10.4UHS-2接口选择时序 (7)3.10.5UHS-2卡总线速率模式总结 (8)3.11应用性能等级 APPLICATION PERFORMANCE CLASS (8)3.12C ACHE (9)3.13SELF MAINTENANCE (9)3.14COMMAND QUEUE (9)3.15LV接口 (9)3.16UHS-2更高的总线速率(UHS-3) (9)4.SD存储卡的功能描述 (9)4.1概要 (9)4.2卡识别模式 (10)4.3数据传输模式 (10)4.4时钟控制 (10)4.5CRC (10)4.6E RROR CONDITION 出现错误的情况 (10)4.7命令 (10)4.8卡状态转换表 (10)4.9响应 (10)4.10SD存储卡的三种状态信息 (10)4.11M EMORY ARRAY PARTITIONING (10)4.12时序 (10)4.13速率等级划分 (10)4.13.1SDSC和SDHC的速率等级 (11)4.13.2SDXC卡的速率等级 (13)4.13.3UHS-1和UHS-2的速率等级 (13)4.13.4Video速率等级 (14)4.14E RASE TIMEOUT CALCULATION (15)4.15S ET B LOCK C OUNT命令 (15)4.16应用性能说明 A PPLICATION P ERFORMANCE S PECIFICATION (15)4.16.1应用性能等级 (15)4.16.2应用等级测试条件 (15)4.16.3应用等级性能参数 (15)4.17C ACHE (16)4.18S ELF MAINTENANCE 自维护 (16)4.19C ONMAND QUEUE模式 (16)5.卡寄存器 (16)6.SD存储卡硬件接口 (16)6.1热插拔 (16)6.2卡检测 (16)6.3电源保护(热插拔) (16)6.4电源 (16)6.4.1SD总线接口的上电时序 (16)6.4.2UHS-2接口的上电时序 (18)6.5P ROGRAMMABLE CARD OUTPUT DRIVER(可选) (19)6.6B US OPERATING CONDITIONS FOR 3.3V SIGNALING (19)6.6.1Threshold level for high voltage range (19)6.6.2Peak voltage and leakage current (19)6.6.3Power consumption (19)6.6.4Bus signal line load (19)6.6.5Bus signal levels (19)6.6.6总线时序(默认速率模式) (19)6.6.7总线速率(高速模式) (20)6.7D RIVE STRENGTH AND BUS TIMING FOR 1.8V SIGNALING (21)6.8ESD要求 (21)7.SPI模式 (21)1. 概述除了SD存储卡之外还有SDIO卡,SDIO卡基于SD存储卡,也兼容SD存储卡接口。
SD操作学习笔记
SD操作学习笔记SD卡操作一、概述1、简介SD卡是基于flash的存储卡。
SD卡和MMC卡的区别在于初始化过程不同。
SD卡的通信协议包括SD和SPI两类。
SD卡使用卡内智能控制模块进行FLASH操作控制,包括协议、安全算法、数据存取、ECC算法、缺陷处理和分析、电源管理、时钟管理。
2、功能介绍2.1 特点1)主机无关的FLASH内存擦除和编程读或写数据,主机只要发送一个带地址的命令,然后等待命令完成,主机无需关心具体操作的完成。
当采用新型的FLASH时,主机代码无需更新。
2)缺陷管理3)错误恢复4)电源管理Flash每个扇区有大约10万次的写寿命,读没有限制。
擦除操作可以加速写操作,因为在写之前会进行擦除。
3 SD总线模式3.1 Negotiating Operation Conditions当主机定义了SD卡不支持的电压范围时,SD卡将处于非活动状态,将忽略所有的总线传输。
要退出非活动状态唯一的方法就是重新上电。
3.2 SD卡获取和识别SD卡总线采用的是单主多从结构,总线上所有卡共用时钟和电源线。
主机依次分别访问每个卡,每个卡的CID寄存器中已预编程了一个唯一的卡标识号,用来区分不同的卡。
主机通过READ_CID命令读取CID寄存器。
CID寄存器在SD卡生产过程中的测试和格式化时被编程,主机只能读取该号。
DAT3线上内置的上拉电阻用来侦测卡。
在数据传输时电阻断开(使用ACMD42)。
3.3 卡状态卡状态分别存放在下面两个区域:卡状态(Card Status),存放在一个32位状态寄存器,在卡响应主机命令时作为数据传送给主机。
SD状态(SD_Status),当主机使用SD_STATUS(ACMD13)命令时,512位以一个数据块的方式发送给主机。
SD_STATUS还包括了和BUS_WIDTH、安全相关位和扩展位等的扩展状态位。
3.4 内存组织数据读写的基本单元是一个字节,可以按要求组织成不同的块。
MMC、SD、TF、SDIO、SDMMC简介
MMC、SD、TF、SDIO、SDMMC简介MMC1. 概念MMC的全称是”MultiMediaCard”――所以也通常被叫做”多媒体卡”,是一种小巧大容量的快闪存储卡,特别应用于移动电话和数字影像及其他移动终端中。
2. 外形及接口定义如上图所示,MMC存贮卡只有7pin,可以支持MMC和SPI两种工作模式,或者换句话说:MMC是一种通信协议,支持两种模式SPI和MMC。
MMC模式是标准的默认模式,具有MMC的全部特性。
而SPI模式则是MMC存贮卡可选的第二种模式,这个模式是MMC 协议的一个子集。
如下图为MMC在各个工作模式下的引脚定义。
SD1. 概念SD卡,数字安全记忆卡(Secure Digital Memory Card),是用于移动设备的标准记忆卡。
SD卡数据传送和物理规范由MMC发展而来,大小和MMC差不多。
长宽和MMC一样,比MMC稍微厚了一点。
兼容性方面SD卡向下兼容多媒体卡(Multi Media Card)。
2. 外形及接口定义SD卡为9pinSD卡也有SD(SD有4-line和1-line两种模式,以下只列出了4-line工作模式)和SPI两种工作模式,在各个工作模式下引脚定义如下:TFTF卡,又叫microSD卡,8 pin,外形以及在SD和SPI工作模式下引脚定义如下。
SDIOSDIO是在SD内存卡接口的基础上发展起来的外设接口,SDIO 接口兼容以前的SD内存卡,并且可以连接SDIO接口的设备,目前根据SDIO协议的SPEC,SDIO接口支持的设备总类有蓝牙,网卡,电视卡等。
SDMMC经过我在百度上面的苦苦搜寻,关于SDMMC的总结如下:没有SDMMC卡或者是SDMMC接口,资料上出现SDMMC可能要表达的意思是SD/MMC,或者SDMMC是数字安全记忆卡(Secure Digital Memory Card)的简称,即SDMMC就是SD卡。
附件–(SD卡槽结构图):。
SD学习报告
Data in
command
Data out
response datablock crc
读块操作
Data in
command datablock
Data out
response
data resp busy
写块操作
命令结构
Bit position
47
46
【45:40】 【39:8】 】 】 6 x 32 x argument
0 1 1
endbit
SPI模式 模式
主要操作 与SD模式一样,在SPI模式下对SD卡主要操作为读取数据,写入数据,擦出 数据,保护数据等。其中数据读写最常用。 模式切换 主机上电复位后,所有卡进入SD模式。在复位命令期间,主机检测CS信号是 否一直拉低。若一直为低电平,则SD卡进入到SPI模式。 与SD模式区别 模式区别 (1)在SPI模式下,一个主机也可以与多个从机进行通信。但在一个时刻只 能与一个从机通信。选择指定的从机不必发送命令(CMD7),而是直接将 指定从机的片选信号CS拉低,将其他从机CS置高即可。 (2)该模式数据线只有一位,而SD模式下可以分别有1位,4位数据宽度。 (3)SD模式下命令,命令回复均由CMD线传输。而SPI模式命令回复由 data线传输。
2)内部寄存器 ) SD卡内部一共定义了六个寄存器:OCR、CID、CSD、RCA、DSR、 SCR。这些寄存器都可通过相应指令访问。OCR、CID、CSD、SCR寄存器 包含了卡的特征信息。RCA、DSR是配置寄存器,存储配置参数。
Name
CID RCA DSR CSD SCR OCR
Width
【7:1】 】 7 x CRC7
0 1 '1' end bit
名词解释嵌入式 sdmmc
嵌入式 SDMMC1. 介绍SDMMC(Secure Digital Multimedia Card)是一种常用的闪存存储技术,广泛应用于嵌入式系统中。
本文将从多个角度对嵌入式 SDMMC 进行详细解释,并探讨其在不同应用领域的重要性和作用。
2. SDMMC 的基本原理SDMMC 是一种集成了 SD(Secure Digital)和 MMC(Multimedia Card)两种卡片技术的存储标准。
它使用了一种称为 Flash 存储的非易失性存储介质。
SDMMC 卡通常包括控制器和闪存芯片两个组成部分,其中控制器负责管理和控制数据在闪存芯片中的读写操作。
SDMMC 卡的工作原理如下: 1. 主机通过主机接口与 SDMMC 卡连接,发送命令和数据。
2. SDMMC 卡接收到主机发送的命令后,通过控制器执行对应的操作。
3. 控制器将数据从闪存芯片中读取或写入,通过主机接口将数据返回给主机或存储在闪存芯片中。
4. 主机根据接收到的数据执行相关操作,如读取、写入或删除数据。
3. SDMMC 在嵌入式系统中的应用嵌入式 SDMMC 在各种嵌入式系统中起到了至关重要的作用。
下面将介绍几个常见的应用场景。
3.1 智能手机智能手机是嵌入式系统的一个典型例子,SDMMC 作为其存储介质,用于存储用户的各种数据,如照片、音频、视频等。
SDMMC 的高存储容量和速度使得用户可以方便地存储和传输大量的多媒体数据。
3.2 数字相机数字相机也是使用 SDMMC 的典型嵌入式系统。
相机用户可以通过 SDMMC 存储照片和视频,并随时将其传输到电脑或其他设备上。
SDMMC 提供了高速的数据传输,使得用户可以快速地拍摄和存储大量的照片。
3.3 汽车导航系统现代汽车导航系统通常使用 SDMMC 存储地图数据和导航软件。
SDMMC 提供了足够的存储容量,可以存储大量的地图数据,并且具有高速的数据读取能力,以确保导航系统的响应速度。
SD卡学习笔记
下列是卡的引脚定义:
2) 所有的DAT 线(DAT1-DAT3)在上电后只做输入。
在 SET_BUS_WIDTH 命令之后,开始作为数据线。
3) 在通电之后,信号线有50K Ω上拉电阻.(可以作为卡检验或SPI 模态选择)在普通数据传输期间, 用户可以使用 SET_CLR_CARD_DETECT(ACMD42) 命令断开上拉。
通电
SPI 操作模式
CMD0和CS 为低空闲模式(空闲)CMD0
由所有状态(除了INA )
卡正忙或者主机忽略了电压范围
ACMD41
不活动状态
CMD15
有不相容电压范围的卡
(非有效的命令)一定是MMC 卡没有响应
准备好状态(准备好)
CMD2
启动MMC 卡(非有效的命令)必须在MMC 卡设定初始值时在CMD1上起始
鉴别状态
CMD3
卡回应新的RCA
卡鉴别模式数据传输模式
在数据传输模式由所有状态
备用状态
CMD3
卡回应新的RCA
图15: SD 卡状态图
SD卡支持3个写保护的方法:1。
机械的写保护开关(主机负责)2。
卡内部的写保护(卡负责)
3。
密码保护方式的卡锁定操作。
SD卡CMD命令
SD卡CMD命令SD卡CMD命令介绍1条CMD线,所有的命令和回应都是通过这条线一位一位的传输.不同模式或不同版本下,命令有不同含义.(SD(SD[0],SD[3:0]),SPI))1条时钟线,时钟源是来自APH总线时钟4条数据线,SPI模式下用了两条(一条输出,一条输入),SD的一位模式下一条(输出输入),也可以用完四条(输出输入,DATA[0]将分时复用).SD卡是以块为单位,初始化时有配置,一般为512字节,一个扇区有4096个块.2410_SDI控制器:封装了命令和数据的移位操作,支持SDI_1.0规范.有FIFO和DMA 模式.当操作某些寄存器时,控制器会自动帮我们转换成48位的命令包通过移位控制器发给SD从机.SD命令包格式----------------------------------------------------------------------------Bit 位置47 46 [45:40] [39:08] [07:01] 00Bit 宽度 1 1 6 32 7 1值 0 1 x x x 1说明Start Bit Transmission Bit Command Index Argument CRC7 End Bit----------------------------------------------------------------------------在S3C2410中要发送CMD需要设置SDICARG,SDICCON两个寄存器.SDICARG: SDI 命令参数寄存器:SDICCON: SDI 命令控制寄存器:这两个寄存器合起来构成SD协议规范中的CMD命令.其中:SDICARG[31:0] ===================== CMD[39:8] 命令的参数(根据命令所需的参数位格式设置)SDICCON[7:0] ===================== CMD[47:40] 包含Start Bit,Transmission Bit,Command Index.ACMD命令:ACMD是特殊命令.虽然发送方法也是用SDICARG和SDICCON 来发.但是,在发送特殊命令前,要先发送一条普通的不带参数的CMD55命令,表示下一条所发送的命令是特殊命令.例如:CMD52 SDICARG:----------------------------------------------------------------------------Bit 位置 31 [30:28] 27 26 [25:9] 8 [7:0]Bit 宽度 1 3 1 1 17 1 8说明R/W flag Function Number RAW flag Stuff Register Address Stuff Write Data or Stuff Bits----------------------------------------------------------------------------SCR 该寄存器保存的SD的特殊性信息(例如支持的总线位宽,SD 卡的版本),MMC卡没有此寄存器,获取该寄存器的数据需要从数据线读的.CSD 该寄存器保存着SD卡的详细信息,如块大小,SD卡的容量大小,文件系统等信息.RCA SD的相对地址(SD卡已经保存在芯片内部)OCR 该寄存器保存着SD的可供电范围,并且区别是否为HC卡(根据返回的ORC回应第30位是否置1).CIA (Card I/O Area)CID SD卡的唯一ID号CIS (Card Information Structure)跟Linux内核的参数TagList的存放方式很相似,都是以标识号和长度加后续内容表示一个节点.SD模式的命令说明:CMD0 GO_IDLE_STATE Mandatory Mandatory Used to change from SD to SPI mode /* 使SD卡进入Idle状态 */ CMD2 ALL_SEND_CID Mandatory CID not supported by SDIO /* 广播获取卡的CID信息 */CMD3 SEND_RELATIVE_ADDR Mandatory Mandatory /* 广播获取SD卡所分配的相对地址 */CMD4 SET_DSR Optional DSR not supported by SDIOCMD5 IO_SEND_OP_COND MandatoryCMD6 SWITCH_FUNC Mandatory1 Mandatory1 Added in Part 1 v1.10CMD7 SELECT/DESELECT_CARD Mandatory Mandatory /* 根据获取指定的RCA,选中SD卡,如果在选中一个卡的状态下,又选中其他的卡,那么之前的卡会自动取消选中,如果发送地址0,则表示取消选中全部卡 */CMD9 SEND_CSD Mandatory CSD not supported by SDIO /* 获取SD相关的存储信息,如块大小,容量等. */CMD10 SEND_CID Mandatory CID not supported by SDIO CMD12 STOP_TRANSMISSION Mandatory /* 停止多块传输操作 */CMD13 SEND_STATUS Mandatory Card Status includes only SDMEM information /* 获取卡的状态 */CMD15 GO_INACTIVE_STATE Mandatory MandatoryCMD16 SET_BLOCKLEN Mandatory /* 设置SD卡的块大小,CSD 寄存器有描述. */CMD17 READ_SINGLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取单个块 */CMD18 READ_MULTIPLE_BLOCK Mandatory /* 使SD卡进入传输状态,读取多个块,直到收到CMD12为止 */CMD24 WRITE_BLOCK Mandatory /* 使SD卡进入传输状态,写入单个块 */CMD25 WRITE_MULTIPLE_BLOCK Mandatory /* 使SD卡进入传输状态,写入多个块 */CMD27 PROGRAM_CSD Mandatory CSD not supported by SDIOCMD28 SET_WRITE_PROT OptionalCMD29 CLR_WRITE_PROT OptionalCMD30 SEND_WRITE_PROT OptionalCMD32 ERASE_WR_BLK_START MandatoryCMD33 ERASE_WR_BLK_END MandatoryCMD38 ERASE MandatoryCMD42 LOCK_UNLOCK OptionalCMD52 IO_RW_DIRECT MandatoryCMD53 IO_RW_EXTENDED Mandatory Block mode is optionalCMD55 APP_CMD Mandatory /* 特殊指令前命令,在发送ACMD类指令前,需要发送此命令 */CMD56 GEN_CMD MandatoryACMD6 SET_BUS_WIDTH Mandatory /* 设置SD卡的总线位宽,这个需要读取SCR确定 */ACMD13 SD_STATUS MandatoryACMD22 SEND_NUM_WR_BLOCKS MandatoryACMD23 SET_WR_BLK_ERASE_COUNT MandatoryACMD41 SD_APP_OP_COND Mandatory /* 获取SD电压值 */ ACMD42 SET_CLR_CARD_DETECT MandatoryACMD51 SEND_SCR Mandatory SCR not supported by SDIO /* 获取SD卡的SCR寄存器的值 */2410 SDI控制寄存器:SDICON 0x5A000000 R/W SDI control register /* 完成SD卡基础配置,包括大小端,中断允许,时钟使能和重启FIFO */SDIPRE 0x5A000004 R/W SDI baud rate prescaler register /* 对SD的时钟分频系数设置 */SDICARG 0x5A000008 R/W SDI command argument register /* 指令的参数存放在这里,不同的命令,参数的位数格式有不用含义 */ SDICCON 0x5A00000C R/W SDI command control register /* 控制指令形式的寄存器,配置SPI还是SDI指令,指令的反馈长度,是否等待反馈,是否运行指令,指令的索引等 */SDICSTA 0x5A000010 R/(W) SDI command status register /* 指令状态寄存器,指令是否超时,传送,结束,CRC是否正确等 */ SDIRSP0 0x5A000014 R SDI response register 0 /* SD回应状态寄存器,R1的回应都用这个,其他长回应会用到4个. */SDIRSP1 0x5A000018 R SDI response register 1SDIRSP2 0x5A00001C R SDI response register 2SDIRSP3 0x5A000020 R SDI response register 3SDIDTIMER 0x5A000024 R/W SDI data / busy timer register /* 设置超时时间 */SDIBSIZE 0x5A000028 R/W SDI block size register /* 设置Block的大小,FIFO共填充的数据.单位是字节*/ SDIDCON 0x5A00002C R/W SDI data control register /* 数据控制寄存器,配置是几线传输,数据发送方向,数据传送方式,要传送多少个块的数据等 */ SDIDCNT 0x5A000030 R SDI data remain counter register /* 数据保持计数器 */SDIDSTA 0x5A000034 R/(W) SDI data status register /* 数据状态寄存器,数据是否发送完,CRC效验,超时等*/ SDIFSTA 0x5A000038 R SDI FIFO status register /* FIFO状态寄存器,DMA 传输时不用判断FIFO */ SDIDAT 0x5A00003C (Li/W,Li/B, Bi/W) 0x5A00003F(Bi/B) R/W SDI data register /* 数据传输寄存器,要严格读完所请求的数据块,否则遗留的数据位将影响下一次的数据传输 */ SDIIMSK 0x5A000040 R/W SDI interrupt mask register /* 中断屏蔽 */SD/MMC 初始化流程步骤是:1)配置时钟,慢速一般为400K,设置工作模式2)发送CMD0,进入空闲态,该指令没有反馈3)发送CMD8,如果有反应,CRC值与发送的值相同,说明该卡兼容SD2.0协议。
MMC卡原理和操作分析
MMC卡原理和操作分析一、MMC卡的原理MMC卡是一种非易失性存储介质,采用了闪存技术进行数据存储。
闪存是一种基于电子存储技术的存储器,通过在晶体管上存储电荷来实现数据的存储和读取。
MMC卡内部包含一个控制器和一个或多个闪存芯片。
1.控制器:控制器是MMC卡的核心部分,负责实现MMC卡与设备的数据传输和管理。
它包含了控制数据传输的逻辑电路和命令解码电路,以及用于数据传输的接口电路。
控制器通过命令和数据线与设备进行通信,并根据设备的请求读取或写入数据。
2.闪存芯片:闪存芯片是存储数据的载体,通常采用NAND闪存芯片。
NAND闪存芯片采用了浮栅电晕效应来存储数据,数据以块为单位进行存储和读取。
一个闪存芯片通常包含多个存储块,每个存储块又可以分为多个页面。
通过控制器发送的写入命令,数据可以被存储到特定的页面中,而读取命令可以从特定页面中读取数据。
3. 文件系统:MMC卡通常使用一种文件系统来组织存储的数据。
常见的文件系统有FAT(File Allocation Table)和exFAT(ExtendedFile Allocation Table)。
文件系统负责管理存储空间,包括文件的分配、索引等。
用户可以通过操作指令来读取和写入文件系统中的数据。
二、MMC卡的操作MMC卡的操作通常通过设备驱动程序来实现,设备驱动程序将底层硬件与操作系统连接起来,使操作系统能够与MMC卡进行数据交互。
下面是MMC卡的典型操作流程:1.初始化:在MMC卡与设备连接之前,需要进行一些初始化操作。
首先,设备驱动程序会识别MMC卡是否存在,并获取卡的相关信息,如卡容量、卡类型等。
然后,驱动程序会对MMC卡进行初始化设置,包括电压设置、时钟频率设置等。
2. 建立通信:MMC卡与设备之间的通信采用SPI(SerialPeripheral Interface)或SD(Secure Digital)接口。
设备驱动程序会根据MMC卡的接口类型选择相应的通信模式,并与MMC卡建立通信连接。
XMC4000中文参考手册-第13章 SD MMC 接口(SDMMC)
参考手册 SDMMC,V1.5
13-5
V1.2, 2012-12 请遵守产品信息使用协议
Device Guide XMC4500 XMC4000 家族
SD/MMC 接口(SDMMC)
13.3
卡检测
当 检测 到 卡在 窄 槽内 插 入或移 出 时 , 状 态 会通过中 断方法 发送 给 CPU 。 低电平 卡 信 号 SDCD_n 在卡检测期间设置为 0。SDMMC_PRESENT_STATE.CARD_INSERTED 位表明卡 是 否 已 经 插 入 。 从 0 变 到 1 生 成 了 在 正 常 中 断 状 态 寄 存 器 SDMMC_INT_STATUS_NORM.CARD_INS=1 中的卡插入中断,并且从 1 变到 0 生成了在正 常中断状态寄存器 SDMMC_INT_STATUS_NORM.CARD_REMOVAL=1 中的卡移出中断。
Device Guide XMC4500 XMC4000 家族
SD/MMC 接口(SDMMC)
13
SD/MMC 接口(SDMMC)
本章描述了 SD/MMC 模块。XMC4500 使用以下 SD 和 MMC 卡标准规范。获取有关如何操作 SDMMC 界面的更多详细信息,请参考下面的 SD 和 MMC 参考规范。 参考 [10] SD 规格部分 A2,SD 主控制器标准规范,版本 2.00,2007 年 2 月 https:///developers/overview/host_controller/simple_spec [11] SD 规格部分 1,物理层规范,版本 2.00,2006 年 5 月 https:///downloads/pls [12] SD 规格部分 E1,SDIO 规范,版本 2.00,2007 年 1 月 https:///developers/overview/sdio/sdio_spec [13] SD 存储卡安全规范,版本 1.01 [14] 多媒体卡系统规范,版本 3.31,4.2 和 4.4 13.1 概述
【STM32H7教程】第87章STM32H7的SDMMC总线基础知识和HAL库API
【STM32H7教程】第87章STM32H7的SDMMC总线基础知识和HAL库API完整教程下载地址:第87章 STM32H7的SDMMC总线基础知识和HAL库API本章节为⼤家讲解SDMMC(Secure digital input/output MultiMediaCard interface)总线的基础知识和对应的HAL库API。
87.1 初学者重要提⽰87.2 SDMMC总线基础知识87.3 SDMMC总线的HAL库⽤法87.4 SDMMC总线源⽂件stm32h7xx_hal_sd.c87.5 总结87.1 初学者重要提⽰1. 对于SDMMC控制SD卡或者eMMC,掌握本章的知识点就够⽤了,更深⼊的认识可以看STM32H7的参考⼿册。
2. 注意,操作SD卡是采⽤的函数HAL_SD_XXXX,⽽操作eMMC是采⽤的函数HAL_MMC_XXXX,也就是说他们采⽤的函数前缀是不同的。
3. SD卡官⽹:。
4. SDMMC驱动eMMC⽀持1线,4线和8线模式,其中8线模式的最⾼速度可达208MB/S,实际速度受IO最⼤速度限制。
5. SDMMC驱动SD卡⽀持1线和4线模式。
6. STM32H7的SDMMC也⽀持eMMC:【普及贴】各个⼚家eMMC读写速度,镁光,东芝,三星,ISSI和旺宏H7的8线SDIO DMA驱动eMMC的裸机性能,读43MB/S,写18.8MB/S87.2 SDMMC总线基础知识87.2.1 SDMMC总线的硬件框图认识⼀个外设,最好的⽅式就是看它的框图,⽅便我们快速的了解SDMMC的基本功能,然后再看⼿册了解细节。
通过这个框图,我们可以得到如下信息:sdmmc_ker_ck输⼊SDMMC内核时钟。
sdmmc_hclk输⼊AHB时钟。
sdmmc_it输出SDMMC全局中断。
sdmmc_dataend_trg输出MDMA的SDMMC数据接收触发信号。
SDMMC_CMDSD/SDIO/MMC卡双向/响应信号。
SDMMC卡初始化及读写流程讲述
二、MMC/SD卡的模型和工作原理PIN脚、SD卡总线、SD卡结构、SD卡寄存器、上电过程SD卡寄存器:OCR:操作电压寄存器: 只读,32位第31位:表示卡上电的状态位CID: 卡身份识别寄存器只读128位生产厂商、产品ID,生产日期和串号等CSD:部分可写128位卡的容量、擦出扇区大小、读写最大数据块的大小、读操作的电流、电压等等 CSR: 卡配置寄存器64位数据位宽RCA:16位相关的卡地址寄存器,卡识别过程中主控器和卡协商出来的一个地址三、SD卡命令和响应格式命令和相应格式SD卡命令,命令类型,ACMD命令响应类型、卡类型、卡状态转换表命令的格式:48位起始位0 方向位(host to card: 1, card to host: 0)内容CRC7 结束位1·响应的格式:48位或者136位卡命令:命令的类型:bc: broadcast without Response 无响应的广播bcr: broadcast with Response 有响应的广播ac: Address(point-to-point) Command: 点对点,DATA0~DATA3数据线上无数据adtc: Adress(point-to-point) Data Transfer Commands 点对点,DATA0~DATA3数据线上有数据CMD0, CMD2, CMD3, CMD55, ACMD41 命令可能会导致卡的状态发生变化响应类型:R1,R1b, R2, R3,R6(SD2.0扩展了R7)扩展内容:SPI工作模式:要知道的特点:只支持一个卡,没有RCA,命令只是MMC/SD的基本的子集SDHC:(支持2GB~32GB):理解CMD8的作用,命令格式和响应,了解CSDV2.0寄存器做了扩展SDIO WIFI:增加CMD52,CMD53CMD8可以通过重新定义先前保留的位,来扩展一些已经存在的命令的新功能。
sdcc阅读笔记
SDCC是一种开源的、专门为嵌入式系统设计的编译器,它可以将C语言代码编译成可执行文件。
阅读SDCC的阅读笔记,可以按照以下步骤进行:
1. 了解SDCC的背景和目标:SDCC是为了编译C语言代码而设计的,适用于嵌入式系统开发。
它提供了一种简单的方法来编写、编译和调试C语言程序,以适应各种嵌入式系统的需求。
2. 学习SDCC的编译器结构:SDCC编译器由多个组件组成,包括预处理器、编译器、汇编器、链接器等。
了解这些组件的功能和作用,可以帮助你更好地理解SDCC编译过程。
3. 掌握SDCC的语法和语义:SDCC编译器使用标准的C语言语法和语义,因此需要掌握C 语言的语法和语义,以便更好地理解SDCC编译器的输出代码。
4. 学习SDCC的优化技术:SDCC编译器提供了多种优化技术,以提高代码的性能和效率。
了解这些优化技术,可以帮助你更好地理解SDCC编译器的输出代码,并指导你如何优化代码。
5. 实践SDCC的使用:通过编写和编译简单的C语言程序,可以更好地掌握SDCC的使用方法。
你可以尝试使用SDCC编译不同的程序,并比较使用其他编译器编译的代码的性能和效率。
6. 参考文档和社区资源:SDCC的官方文档和社区资源可以帮助你更好地了解和学习SDCC。
你可以查阅官方文档了解SDCC的详细信息和用法,同时可以在社区中与其他开发者交流和学习。
总的来说,阅读SDCC的阅读笔记需要一定的时间和精力,但通过不断实践和学习,你可以更好地掌握SDCC的使用方法,并提高你的嵌入式系统开发能力。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3、SD/SDIO/MMC/SPI之间的关系?
SD/SDIO/MMC是三种不同的卡,这3种卡的管脚很类似,卡的样子也类似。最开始是先由MMC卡,然后在MMC的基础上做了修改有了SD卡,SD卡的基础上有了SDIO卡。所以SD/SDIO/MMC的协议大同小异,只有少量差异。
SPI在SD的大军里,只是一种传输模式。若是慢速的情况下,可选择SPI传输模式,这样SD接口就变成SPI协议了。Host也要根据SPI的协议对卡进行操作。
还有SPI模式下,每个block的大小也一定是固定的512byte。
6、MMC4.0以下的卡中,小尺寸的卡称为RS-MMC。MMC4.0以上的卡中,大尺寸的卡称为MMCPLUS,小尺寸的卡称为MMCMOBILE,BGA封装的称为EMMC。
7、Inactive和IDLE状态的区别?
1、什么卡会处于busy状态?
当数据送到卡里,其实只是送到了卡的内部控制器的buffer中。真正存到存储单元里面去还需要过一阵子。当这个buffer处于full的时候,就是卡处于busy状态的一种情况。此时SDCLK会暂时终止。
2、CRC校验是必须的吗?
不是。SD卡,MMC卡都支持CRC校验,但是当SPI模式的时候,可以选择不做CRC校验,不过也可以有CRC校验,这个是由用户决定的。
具体的区别需参考各协议。
4、SDSC/SDHC/SDXC的区别?
容量上不同,速度上不同。每一种新的协议在原有基础上功能会变得更完善。
5、SD双沿采集的时候,data block size自动变成固定512bytes,不管是否设置了BLOCK_LEN。
SD双沿采集的时候,只是数据传输的时候是双沿的,其他时候还都是单沿的。包括CRC,start biSDXC中的SDR、DDR,是怎么回事?
这是速率上的一种叫法。DDR50标示电压1.8V,速度50MHz的一种模式。SDXC分为两种卡:UHS50和UHS104,他们都支持SDR、DDR模式。
11、同一个控制器,支持SD/MMC/SDIO的所以卡,如何区分出现在卡槽里的是个什么卡呢?
当卡进入inactive状态,卡不能被操作。只能通过重新上电才能回到IDLE状态。除了inactive以外的其他状态,CMD0都可以令卡回到IDLE状态。
8、SD/MMC/SDIO的命令格式都一样,所以三种卡才有可能通过同一个控制器来控制。
9、哪种MMC会事8个bit的?
所谓的8线MMC是指数据线为8线的MMC卡。当MMC4.x以上的卡,都支持8线的数据宽度,所以这类MMC就有13根线啦,其中data线占8根。
这个需要软件来区分。软件不停的循环访问卡,对卡按照一定的顺序发出对应格式的命令,那么不同的卡会做出不同的反应。几个CMD发完,根据不用的反应就可以分出是什么卡了。比如已经判断出是SD卡了,但是不知道是什么类型的SD卡。那么我们就发一个CMD8,如果没有response,那么这个卡就是SD1.X的卡;如果有response,那么就是SD2.0以上的卡。