SD卡_SPI总线协议
单片机系统中的SD卡接口技术及其应用场景解析
单片机系统中的SD卡接口技术及其应用场景解析引言随着电子设备的普及和技术的进步,存储媒体的需求日益增长。
SD(Secure Digital)卡作为一种常见的存储媒介,被广泛应用于各类电子设备中。
本文将对单片机系统中的SD卡接口技术进行解析,并探讨其应用场景。
一、SD卡简介SD卡是一种非易失性的随机存储器,具有高容量、高速度和可移动性的特点。
它的外形小巧,使用方便,能够提供可靠稳定的数据存储。
SD卡广泛应用于数码相机、移动电话、音乐播放器、车载导航等各种消费电子产品中。
二、SD卡接口技术SD卡接口技术是指将SD卡与单片机系统进行连接的方法和协议。
目前,常用的SD卡接口技术主要有SPI(Serial Peripheral Interface)接口和SDIO(Secure Digital Input/Output)接口。
1. SPI接口SPI接口是一种串行通信接口,通过四根线(SCLK、MISO、MOSI、CS)来连接单片机和SD卡。
SPI接口的优点是接线简单、易于实现,但数据传输速度相对较慢。
在低速应用场景下,如存储小容量数据或频繁读写文件的情况下,SPI接口是一种经济实用的选择。
2. SDIO接口SDIO接口是一种高速并行接口,通过多线传输数据,支持高速数据传输和访问。
SDIO接口可以提供更大的带宽和更高的速度,适用于需要大容量存储和高速数据交换的应用场景。
但是,相对于SPI接口,SDIO接口的设计和实现会更加复杂。
三、SD卡的应用场景1. 嵌入式系统SD卡广泛应用于各类嵌入式系统中,如工控设备、仪器仪表、智能家居等。
通过SD卡接口,嵌入式系统可以实现大容量数据存储、数据传输和固件升级等功能。
例如,在智能家居系统中,SD卡可以存储家庭视频监控设备的录像数据,方便用户随时回放和查看。
2. 物联网设备SD卡也被广泛应用于物联网设备中。
物联网设备通常需要高效地收集、处理和存储海量数据。
通过SD卡接口,物联网设备可以实现本地存储和离线数据处理。
sd卡协议
sd卡协议SD(Secure Digital)是一种插入式闪存存储卡,广泛应用于数码相机、手机等电子设备中,用于存储和传输数据。
SD卡协议定义了SD卡的物理接口、命令、数据传输等方面的规范,保证了SD卡与设备之间的正常通信和数据交互。
本文将对SD卡协议进行详细介绍。
首先,SD卡使用SPI(Serial Peripheral Interface)或者SD卡总线进行数据传输。
SPI总线包括时钟线、数据线和控制线,通过与主机设备进行交互来传输数据。
SD卡总线则是一种用于SD卡的专用接口,可以支持更高的数据传输率和更复杂的命令操作。
SD卡协议定义了一系列的命令来控制SD卡的读写操作。
例如,通过发送CMD0命令可以将SD卡设置为待机模式;通过CMD8命令可以获取SD卡的供电电压信息;通过CMD17命令可以读取指定扇区的数据等等。
这些命令通过SPI或SD卡总线发送给SD卡,并通过响应返回相应的状态或数据。
在数据传输方面,SD卡协议定义了多种数据格式和传输方式。
其中包括SDSC(Standard Capacity)和SDHC(High Capacity)两种存储容量类型。
SDSC最大支持2GB的存储容量,采用FAT16文件系统;而SDHC则支持最大32GB的存储容量,采用FAT32文件系统。
同时,SD卡还支持多种传输速率,从低速到高速不等。
除了基本的命令和数据传输,SD卡协议还定义了许多额外的特性和功能。
例如,SD卡可以通过密码进行保护,只有正确的密码才能访问数据;SD卡还支持写保护功能,可以防止数据被误写或删除;SD卡还可以通过CID(Card Identification)或CSD(Card Specific Data)等信息来识别和管理不同的SD卡等。
总之,SD卡协议是一套用于控制SD卡读写操作的规范,包括物理接口、命令、数据传输等方面的定义。
它保证了SD卡与设备之间的正常通信和数据交互,使得SD卡能够在各种电子设备中广泛应用。
SD卡的SPI模式的初始化顺序
SD卡的SPI模式的初始化顺序这些天没有出门,一直在家研究SD卡的SPI模式的初始化顺序,这里为大家总结了一下编写该程序所需要的知识:1.SD卡的官方资料SD卡的官方资料(我承认这个资料很垃圾,比起民间的技术总结它的内容可谓又臭又长,但是作为基础也要了解一下,SD协议不用看)2.清晰明了的MMC卡时序图清晰明了的MMC卡时序图(虽然这个是MMC卡的,但是在初始化的时候CMD0的时序是一样的) 电路:我用的SD卡的电路其实很简单,参考SD卡的官方资料中的电路链接就可以的。
供电问题:由于SD卡的电压是3.3V,所以你的CPU必须支持3.3V的IO端口输出。
再来说一说鸡毛蒜皮的细节:1.为了使SD卡初始化进入SPI模式,我们需要使用的命令有3个:CMD0,ACMD41,CMD55(使用ACMD类的指令前应先发CMD55,CMD55起到一个切换到ACMD类命令的作用)。
2.为什么在使用CMD0以后不使用CMD1?CMD1是MMC卡使用的指令,虽然本文并不想讨论MMC卡的问题,但是我还是要说:为了实现兼容性,上电或者发送CMD0后,应该首先发送CMD55+ACMD41确认是否有回应,如果有回应则为SD卡,如果等回应超时,则可能是MMC卡,再发CMD1确认。
3.正确的回应内容应该是:CMD0——0x01(SD卡处于in-idle-state)CMD55——0x01(SD卡处于in-idle-state)ACMD41——0x00(SD卡跳出in-idle-state,完成初始化准备接受下一条指令)这里要说的是如果最后的回应内容还是0x01的话,可以循环发送CMD55+ACMD41,直到回应的内容0x00。
4.在所有的指令中,唯独CMD0特殊,在向SD卡发送以前需要向SD卡发送74+个时钟。
那么为什么要74个CLK呢?因为在上电初期,电压的上升过程据SD卡组织的计算约合64个CLK周期才能到达SD卡的正常工作电压他们管这个叫做Supply ramp up time,其后的10个CLK是为了与SD卡同步,之后开始CMD0的操作,严格按照此项操作,一定没有问题。
SD卡SPI读写中文资料
7S P I模式本文是小弟自己翻译的(处女作哦~~~~~),难免有不妥之处,望交流指教!联系方式 QQ:286225453 Email:ioro55555@7.1介绍SPI模式SPI模式由二次传递协议组成,这个协议由Flash(基于SD卡)提供。
本模式是SD卡协议的子协议,目的是用SPI信道通讯。
SPI模式在SD卡上电后第一个复位指令(CMD0)执行后被选择,并且在接通电源时不能改变。
SPI标准定义7.2 SPI总线SD卡信道由指令和数据位(起始位和结束位)组成,SPI信道由字节定向。
每一个指令或数据块由8位的字节和CS标志构成。
类似SD卡协议, SPI通讯由指令、响应和数据组成。
全部的主机与SD卡之间的通信由主机控制。
主机执行每一跟CS标志为低的总线。
SPI模式与SD模式的响应特性有以下三方面不同∶1、被选择的卡始终对指令作出反应。
2、一个附加的(8BIT)响应产生。
3、在SD卡遇到数据检索问题时,它会作出错误反应,而不是像在SD模式中一样执行一次空操作。
除命令响应之外,每一个数据块在写操作期间会作出专门的信息响应标志反应发送给SD卡。
数据块可以大到一个扇区小到一个字节。
读/写操作由CSD(指令信号译码器)寄存器操作。
7.2.1模式选择SD卡在上电后自动SD模式。
如果CS标志在接受复位指令(CMD0)期间为低,它将进入SPI模式并且处于空闲状态。
如果SD卡识别到需要保持SD模式,它不会对指令作出任何反应并且保持在SD模式中。
如果需要SPI模式,SD卡将转到SPI模式并且进行SPI模式R1响应。
回到SD模式的必须重新上电。
在SPI 模式下,SD卡遵守部分协议系统。
支持SPI模式的SD卡指令始终有效。
7.2.2总线传送保护SPI模式每一个SD卡在总线上的数据传输由CRC(循环冗余码校验)保护。
在SPI模式, SD卡提供一种非保护模式(起动系统,建立可靠的数据联系来排除硬件或固件需要执行的CRC(循环冗余码校验)生成并且核验操作)。
SD卡的读取(SPI)
SPI模式下MCU对SD卡的控制及操作命令一、前言SD 卡有两个可选的通讯协议:SD 模式和 SPI模式 SD 模式是SD 卡标准的读写方式,但是在选用SD 模式时,往往需要选择带有SD 卡控制器接口的 MCU,或者必须加入额外的SD卡控制单元以支持SD 卡的读写然而,大多数MCU都没有集成SD 卡控制器接口,若选用SD 模式通讯就无形中增加了产品的硬件成本。
在SD卡数据读写时间要求不是很严格的情况下,选用 SPI模式可以说是一种最佳的解决方案因为在 SPI模式下,通过四条线就可以完成所有的数据交换,并且目前市场上很多MCU都集成有现成的SPI接口电路,采用 SPI模式对 SD卡进行读写操作可大大简化硬件电路的设计二、硬件电路实现以NXP的LPC2210 ARM7MCU为例,下图是周立功开发的实现板电路这里,将LPC2210MCU的SPI0用于SD卡的控制和数据读写。
对SPI0的两个数据线加了上拉电阻以便于MMC卡兼容。
卡供电采用了可控方式,通过GPIO口控制MOS管对其进行供电。
卡检测电路也使用GPIO口实现。
通过读GPIO口数据,检查卡是否写保护和完全插入。
具体内容可以参考周立功的说明书,百度文库里边有三、SD卡物理接口我们看到的SD卡一包如下所示,包含9个引脚和一个写保护开关:其引脚定义如下:注:1. S:电源;I:输入;O:推挽输出;PP:推挽I/O。
2. 扩展的DAT线(DAT1 ~ DAT3)在上电后处于输入状态。
它们在执行SET_BUS_WIDTH命令后作为DAT线操作。
当不使用DAT1 ~ DAT3 线时,主机应使自己的DAT1~DAT3线处于输入模式。
这样定义是为了与MMC卡保持兼容。
3. 上电后,这条线为带50KΩ上拉电阻的输入线(可以用于检测卡是否存在或选择 SPI 模式)。
用户可以在正常的数据传输中用 SET_CLR_CARD_DETECT(ACMD42)命令断开上拉电阻的连接。
spi总线协议
spi总线协议SPI总线协议。
SPI(Serial Peripheral Interface)是一种用于在数字集成电路之间进行通信的同步串行通信协议。
它通常用于连接微控制器和外围设备,例如存储器芯片、传感器、显示器和无线模块等。
SPI总线协议具有简单、高效、灵活等特点,因此在许多嵌入式系统中得到广泛应用。
本文将对SPI总线协议的基本原理、通信方式、时序特性以及应用进行介绍。
SPI总线协议基本原理。
SPI总线由四根信号线组成,分别为时钟信号(SCLK)、主设备输出(MOSI)、主设备输入(MISO)和片选信号(SS)。
在SPI总线中,通信的主设备通过SCLK信号产生时钟脉冲,控制数据的传输。
MOSI信号用于主设备向从设备发送数据,MISO信号用于从设备向主设备发送数据。
片选信号用于选择从设备,使得主设备可以与多个从设备进行通信。
SPI总线协议通信方式。
SPI总线协议采用全双工通信方式,即主设备和从设备可以同时发送和接收数据。
通信开始时,主设备通过片选信号选择从设备,并在时钟信号的控制下,通过MOSI信号向从设备发送数据,同时从设备通过MISO信号向主设备发送数据。
通信结束后,主设备通过片选信号取消对从设备的选择,从而完成一次数据传输。
SPI总线协议时序特性。
在SPI总线协议中,数据的传输是在时钟信号的控制下进行的。
通常情况下,数据的传输是在时钟的上升沿或下降沿进行的,具体取决于SPI设备的工作模式。
此外,SPI总线协议还可以通过调整时钟信号的极性和相位来适应不同的外设要求,从而实现更灵活的通信方式。
SPI总线协议应用。
SPI总线协议在各种嵌入式系统中得到广泛应用,例如单片机、嵌入式系统、传感器网络等。
在单片机中,SPI总线协议通常用于连接外部存储器、显示器、通信模块等外围设备。
在嵌入式系统中,SPI总线协议可以用于连接各种外设,实现系统的功能扩展和升级。
在传感器网络中,SPI总线协议可以用于连接各种传感器节点,实现数据的采集和传输。
SD卡中文资料
7S P I模式本文是小弟自己翻译的(处女作哦~~~~~),难免有不妥之处,望交流指教!联系方式 QQ:286225453 Email:ioro55555@7.1介绍SPI模式SPI模式由二次传递协议组成,这个协议由Flash(基于SD卡)提供。
本模式是SD卡协议的子协议,目的是用SPI信道通讯。
SPI模式在SD卡上电后第一个复位指令(CMD0)执行后被选择,并且在接通电源时不能改变。
SPI标准定义只不过是物理链接,而不是完全的数据传送协议。
SD卡的SPI设备使用SD卡协议的子协议和部分指令。
SPI模式的优势在于可以使用标准主机,从而把外设减少到最低。
SPI模式相对于SD模式的缺点是损失了性能。
7.2 SPI总线SD卡信道由指令和数据位(起始位和结束位)组成,SPI信道由字节定向。
每一个指令或数据块由8位的字节和CS标志构成。
类似SD卡协议, SPI通讯由指令、响应和数据组成。
全部的主机与SD卡之间的通信由主机控制。
主机执行每一跟CS标志为低的总线。
SPI模式与SD模式的响应特性有以下三方面不同∶1、被选择的卡始终对指令作出反应。
2、一个附加的(8BIT)响应产生。
3、在SD卡遇到数据检索问题时,它会作出错误反应,而不是像在SD模式中一样执行一次空操作。
除命令响应之外,每一个数据块在写操作期间会作出专门的信息响应标志反应发送给SD卡。
数据块可以大到一个扇区小到一个字节。
读/写操作由CSD(指令信号译码器)寄存器操作。
7.2.1模式选择SD卡在上电后自动SD模式。
如果CS标志在接受复位指令(CMD0)期间为低,它将进入SPI模式并且处于空闲状态。
如果SD卡识别到需要保持SD模式,它不会对指令作出任何反应并且保持在SD模式中。
如果需要SPI模式,SD卡将转到SPI模式并且进行SPI模式R1响应。
回到SD模式的必须重新上电。
在SPI 模式下,SD卡遵守部分协议系统。
支持SPI模式的SD卡指令始终有效。
SPI总线协议介绍
SPI总线协议及SPI时序图详解SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。
假设主机和从机初始化就绪:并且主机的sbuff=0xaa (10101010),从机的sbuff=0x55 (01010101),下面将分步对spi的8个时钟周期的数据情况演示一遍(假设上升沿发送数据)。
---------------------------------------------------脉冲主机sbuff 从机sbuff sdi sdo---------------------------------------------------0 00-0 10101010 01010101 0 0---------------------------------------------------1 0--1 0101010x 10101011 0 11 1--0 01010100 10101011 0 1---------------------------------------------------2 0--1 1010100x 01010110 1 02 1--0 10101001 01010110 1 0---------------------------------------------------3 0--1 0101001x 10101101 0 13 1--0 01010010 10101101 0 1---------------------------------------------------4 0--1 1010010x 01011010 1 04 1--0 10100101 01011010 1 0---------------------------------------------------5 0--1 0100101x 10110101 0 15 1--0 01001010 10110101 0 1---------------------------------------------------6 0--1 1001010x 01101010 1 06 1--0 10010101 01101010 1 0---------------------------------------------------7 0--1 0010101x 11010101 0 17 1--0 00101010 11010101 0 1---------------------------------------------------8 0--1 0101010x 10101010 1 08 1--0 01010101 10101010 1 0---------------------------------------------------这样就完成了两个寄存器8位的交换,上面的0--1表示上升沿、1--0表示下降沿,sdi、 sdo相对于主机而言的。
sd协议基本概念
sd协议基本概念SD协议(Secure Digital Protocol)是一种用于存储卡(如SD 卡、SDHC卡、SDXC卡等)的通信协议,它定义了存储卡与主机设备(如相机、手机、电脑等)之间的接口和通信规则。
SD协议的基本概念包括:1. 物理层:SD协议定义了存储卡的物理接口,包括卡片上的引脚排列和电气特性。
SD卡通常使用SPI(Serial Peripheral Interface)或SDIO(Secure Digital Input/Output)接口进行通信。
2. 数据传输层:SD协议规定了数据如何在存储卡和主机设备之间传输。
它使用命令响应式数据传输机制,即主机设备发送命令到存储卡,存储卡响应命令并返回数据。
3. 应用层:SD协议定义了一系列的命令集,这些命令用于管理存储卡上的数据,包括文件的读取、写入、删除等操作。
此外,SD 协议还支持多种文件系统格式,如FAT12、FAT16、FAT32和exFAT。
4. 安全性:SD协议提供了数据加密和访问控制的功能,以保护存储在卡片上的数据不被未授权访问。
这些功能通常通过密码保护和加密算法实现。
5. 速度等级:随着技术的发展,SD协议也不断更新,支持更高的数据传输速度。
例如,UHS(Ultra High Speed)SD卡支持更高的读写速度,适用于需要高速数据传输的应用场景。
6. 兼容性:SD协议设计为向后兼容,这意味着新版本的SD卡可以被旧版本的主机设备使用,尽管可能无法发挥新版本的全部性能。
7. 电气特性:SD协议定义了存储卡的电气特性,包括工作电压、电流消耗、数据传输速率等。
SD协议的这些基本概念共同构成了存储卡的标准,使得不同厂商和不同型号的存储卡能够与各种主机设备兼容,并确保数据的安全和高效传输。
SPI总线协议介绍(易懂)
SPI总线协议介绍(易懂)目录CONTENTS•SPI总线协议产生背景•SPI总线协议内容介绍•SPI总线协议总结一、SPI总线协议背景12 SPI是由摩托罗拉(Motorola)公司于1979年开发的全双工同步串行总线,是微处理控制单元(MCU)和外围设备之间进行通信的同步串行端口。
主要应用在EEPROM、Flash、实时时钟(RTC)、数模转换器(ADC)、网络控制器、MCU、数字信号处理器(DSP)以及数字信号解码器之间。
SPI,全称Serial Peripheral Interface,中文意思是串行外部设备接口,是一种全双工、高速、同步的通信总线。
SPI 总线器件可直接与各个厂家生产的多种标准外围器件直接接口,一般使用4 条线:串行时钟线SCLK、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI 和低电平有效的从机选择线CS3SPI总线术语及定义,如表(1)所示:表(1) SPI总线术语及定义二、SPI总线协议内容1<1>.SPI总线采用主从模式架构,支持多从设备应用,一般只支持单主设备;<2>.当主设备想要和某从设备进行通信时候,主设备需要先向对应从设备的片选线(CS)山发送使能信号(高电平或者低电平,按从设备而定),表示选中该从设备;<3>.时钟由主设备控制,数据在时钟脉冲下按位传输,高位在前;<4>.目前应用中的数据速率可达几Mbps。
2SPI设备之间采用全双工模式通信,是一个主机和一个或者多个从机的主从模式。
主机负责初始化帧,这个数据传输帧可以用于读与写两种操作,片选线可以从多个从机选择一个来响应主机的请求。
如图(1)、图(2)、图(3)和图(4)所示图(1)SPI连接类型首先Master产生时钟,时钟频率小于或等于Slave支持的最大频率;随后Master通过产生时钟信号(SCLK)来控制数据传输,并通过将特定Slave的芯片选择(CS)线拉低来进行通信。
SPI通信与SD卡
SPI通信与SD卡一、前言SD 卡有两个可选的通讯协议:SD 模式和SPI模式SD 模式是SD 卡标准的读写方式,但是在选用SD 模式时,往往需要选择带有SD 卡控制器接口的MCU,或者必须加入额外的SD卡控制单元以支持SD 卡的读写然而,大多数MCU都没有集成SD 卡控制器接口,若选用SD 模式通讯就无形中增加了产品的硬件成本。
在SD卡数据读写时间要求不是很严格的情况下,选用SPI模式可以说是一种最佳的解决方案因为在SPI 模式下,通过四条线就可以完成所有的数据交换,并且目前市场上很多MCU都集成有现成的SPI接口电路,采用SPI模式对SD卡进行读写操作可大大简化硬件电路的设计二、硬件电路实现以NXP的LPC2210 ARM7MCU为例,下图是周立功开发的实现板电路这里,将LPC2210MCU的SPI0用于SD卡的控制和数据读写。
对SPI0的两个数据线加了上拉电阻以便于MMC卡兼容。
卡供电采用了可控方式,通过GPIO口控制MOS管对其进行供电。
卡检测电路也使用GPIO口实现。
通过读GPIO口数据,检查卡是否写保护和完全插入。
具体内容可以参考周立功的说明书,百度文库里边有三、SD卡物理接口我们看到的SD卡一包如下所示,包含9个引脚和一个写保护开关:其引脚定义如下:注:1. S:电源;I:输入;O:推挽输出;PP:推挽I/O。
2. 扩展的DAT线(DAT1 ~ DAT3)在上电后处于输入状态。
它们在执行SET_BUS_WIDTH命令后作为DAT线操作。
当不使用DAT1 ~ DAT3 线时,主机应使自己的DAT1~DAT3线处于输入模式。
这样定义是为了与MMC卡保持兼容。
3. 上电后,这条线为带50KΩ上拉电阻的输入线(可以用于检测卡是否存在或选择SPI 模式)。
用户可以在正常的数据传输中用SET_CLR_CARD_DETECT(ACMD42)命令断开上拉电阻的连接。
MMC卡的该引脚在SD模式下为保留引脚,在SD模式下无任何作用。
SD卡SPI模式控制方式总结
SD卡SPI模式控制方式总结---值得参考2010-08-01 14:041.SD卡的命令格式:SD卡的指令由6字节(Byte)组成,如下:Byte1:0 1 x x x x x x(命令号,由指令标志定义,如CMD39为100111即16进制0x27,那么完整的CMD39第一字节为01100111,即0x27+0x40)Byte2-5:Command Arguments,命令参数,有些命令没有参数Byte6:前7位为CRC(Cyclic Redundacy Check,循环冗余校验)校验位,最后一位为停止位0 2.SD卡的命令SD卡命令共分为12类,分别为class0到class11,不同的SDd卡,主控根据其功能,支持不同的命令集如下:Class0 :(卡的识别、初始化等基本命令集)CMD0:复位SD 卡.CMD1:读OCR寄存器.CMD9:读CSD寄存器.CMD10:读CID寄存器.CMD12:停止读多块时的数据传输CMD13:读 Card_Status 寄存器Class2 (读卡命令集):CMD16:设置块的长度CMD17:读单块.CMD18:读多块,直至主机发送CMD12为止 .Class4(写卡命令集) :CMD24:写单块.CMD25:写多块.CMD27:写CSD寄存器 .Class5 (擦除卡命令集):CMD32:设置擦除块的起始地址.CMD33:设置擦除块的终止地址.CMD38: 擦除所选择的块.Class6(写保护命令集):CMD28:设置写保护块的地址.CMD29:擦除写保护块的地址.CMD30: Ask the card for the status of the write protection bitsclass7:卡的锁定,解锁功能命令集class8:申请特定命令集。
class10 -11 :保留其中class1, class3,class9:SPI模式不支持对SD卡的驱动主要有初始化、读、写、擦除等。
硬件学习之通信协议篇-SPI总线
一、概述SPI:Serial Peripheral Interface,串行外围设备接口。
是由摩托罗拉在20世纪80年代中期开发的同步串行总线接口规范(带有时钟信号,通过时钟极性和时钟相位来控制采样,即同步传输)。
1、支持半双工、全双工通信模式。
2、没有流控制和应答机制来确认是否接收到数据(UART有校验或流控制)。
3、没有一个固定的传输速率规定,已有器件SPI输出速率达到50Mbps以上(I2C有明确规定速率)。
4、只能板内的短距离传输(RS232、RS485输出距离远)。
5、没有限制传输bit数量,常用的是8bit或9bit。
6、不需要硬件地址(I2C要地址),采用片选。
7、主从模式,一托多。
二、3线和4线模式3线SPI和4线SPI各个模式下信号定义:3线9bit I型接口信号:SCL、CS、SDA3线9bit II型接口信号:SCL、CS、SDO、SDI4线8bit I型接口信号:SCL、CS、DCX、SDA4线8bit II型接口信号:SCL、CS、DCX、SDO、SDI3线9bit2data Lane接口信号:SCL、CS、D0、D1对于3线或4线来区分,并不是信号线的数量,也不是网上说的半双工和全双工,或者数据线数量差异。
3线说的是时钟、片选、数据信号(不管是一根数据线,还是两根数据线),共三种信号。
4线说的是时钟、片选、数据信号、数据或命令控制线(确定发送的是数据还是命令),共4中信号。
三、SPI四种工作模式通过CPOL时钟极性和CPHA时钟相位的搭配来得到四种工作模式:CPOL时钟极性定义的是SCLK时钟线空闲状态时的电平CPOL=0,即SCLK=0,表示SCLK时钟信号线在空闲状态时的电平为低电平,因此有效状态为高电平。
CPOL=1,即SCLK=1,表示SCLK时钟信号线在空闲状态时的电平为高电平,因此有效状态为低电平。
CPHA时钟相位定义的是数据位相对于时钟线的时序(即相位)CPHA=0,即表示输出(out)端在上一个时钟周期的后沿改变数据,而输入(in)端在时钟周期的前沿(或不久之后)捕获数据。
SPI总线协议及SPI时序图详解
SPI总线协议及SPI时序图详解SPI,是英语Serial Peripheral Interface的缩写,顾名思义就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
SPI是一个环形总线结构,由ss(cs)、sck、sdi、sdo构成,其时序其实很简单,主要是在sck的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi上的电平将被接收到主设备的寄存器中。
假设主机和从机初始化就绪:并且主机的sbuff=0xaa (10101010),从机的sbuff=0x55 (01010101),下面将分步对spi的8个时钟周期的数据情况演示一遍(假设上升沿发送数据)。
---------------------------------------------------脉冲主机sbuff 从机sbuff sdi sdo---------------------------------------------------0 00-0 10101010 01010101 0 0---------------------------------------------------1 0--1 0101010x 10101011 0 11 1--0 01010100 10101011 0 1---------------------------------------------------2 0--1 1010100x 01010110 1 02 1--0 10101001 01010110 1 0---------------------------------------------------3 0--1 0101001x 10101101 0 13 1--0 01010010 10101101 0 1---------------------------------------------------4 0--1 1010010x 01011010 1 04 1--0 10100101 01011010 1 0---------------------------------------------------5 0--1 0100101x 10110101 0 15 1--0 01001010 10110101 0 1---------------------------------------------------6 0--1 1001010x 01101010 1 06 1--0 10010101 01101010 1 0---------------------------------------------------7 0--1 0010101x 11010101 0 17 1--0 00101010 11010101 0 1---------------------------------------------------8 0--1 0101010x 10101010 1 08 1--0 01010101 10101010 1 0---------------------------------------------------这样就完成了两个寄存器8位的交换,上面的0--1表示上升沿、1--0表示下降沿,sdi、sdo相对于主机而言的。
mmceMMCSD-cardSPISDIO
mmceMMCSD-cardSPISDIO起初引⽤了⼀篇MMC相关⽂档,然⽽终究还是有些不明所以,忽觉博客不就是加⼯整理⾃⼰的思想吗,遂百度众⽂,整理归纳如下.MMC(multiMedia card)是早起记忆卡标准,于1997年由西门⼦和SanDisk推出了多媒体卡;SD卡(Secure Digital Memory Card)是⼀种基于半导体快闪记忆器的新⼀代记忆设备。
于1999年8⽉由⽇本松下、东芝及美国SanDisk公司开发研制。
SD与MMC都是存储设备的标准,包括物理硬件与协议软件,SD的软件协议与MMC的软件协议是不同的协议,物理硬件也不同。
SD相对MMC增加了数据权限功能,防⽌数据被他⼈复制,增加了安全性。
SD卡与MMC卡的引脚定义是不⼀样的,接⼝不兼容,当然现在市⾯上应该很难见到MMC存储卡了。
MMC协议⽀持两种模式:SPI和MMC,MMC模式为MMC协议的标准模式,SPI模式为MMC的单线模式,以保证MMC设备在现有硬件上的兼容性。
⽬前有这么⼏种类型的存储卡以MMC框架为基础,它们分别是:MMC Plus、MMC Mobile和MMC Micro、eMMC,2018年存活的也就剩下eMMC了。
SD协议⽀持三种模式:4-wire mode, 1-wire mode, SPI mode, SPI mode是required,应该也是出于兼容性考虑的吧。
三种模式的信号定义如下:SD与 MMC 的兼容性MMC协议与SD协议都⽀持SPI mode,如果有SPI总线,⽆论使⽤SD卡还是MMC卡都不是问题。
虽然MMC的SPI mode不是required,然⽽基本上所有的MMC都⽀持SPI mode。
SPI模式⽀持不带CRC校验的传输⽅式,可以降低硬件要求MMC 的 SPI mode 最⼤传输速率为 20 Mbit/s; SD 的 SPI mode 最⼤传输速率为 25 Mbit/s。
MMC卡与SD卡两者在时序上也是⼀致的,读写命令控制也完全⼀样,这就是为什么经常把两者混在⼀起写的原因。
spi总线协议
spi总线协议SPI(Serial Peripheral Interface)总线协议是一种用于在多个芯片之间进行通信的串行通信协议。
它是针对短距离通信,高速数据传输和简单控制信号交互而设计的。
SPI总线协议广泛应用于嵌入式系统中,特别是在连接存储器、传感器、外设以及其他硬件设备时。
SPI总线协议的设计旨在提供一种灵活而高效的通信解决方案。
它使用一组由主设备和从设备共享的信号线,并采用全双工的通信方式。
在SPI总线上,数据传输是以位为单位进行的,主设备通过时钟信号来同步从设备的响应。
SPI总线协议通常使用四根线来传输数据:时钟线(SCK),主设备输出信号(MOSI),主设备输入信号(MISO)以及片选信号(SS)。
SPI总线协议的工作方式如下:首先,主设备通过片选信号选择要与其通信的从设备,在从设备中,可以有多个设备共享同一根片选信号。
然后,主设备通过时钟线同步数据传输的速度,并在MOSI线上发送数据。
同时,从设备通过MISO线将响应数据发送回主设备。
通过这种方式,主设备和从设备之间实现了双向的、同步的数据传输。
SPI总线协议的特点之一是其高速性能。
由于SPI总线使用并行传输方式,数据可以在一个时钟周期中同时传输多个位,从而实现了高速的数据传输。
另外,SPI总线还具有较低的延迟和较低的功耗,使其成为一种适用于高性能嵌入式系统的通信解决方案。
在使用SPI总线协议进行通信时,需要对从设备进行配置。
从设备的配置通常包括设置传输模式、时钟频率和数据位顺序等参数。
SPI总线协议支持多种传输模式,如主设备模式和从设备模式等。
主设备模式下,主设备发出时钟信号并控制通信过程;从设备模式下,从设备接收时钟信号并进行响应。
时钟频率的选择取决于设备之间的距离和通信需求,较短的距离和较高的速率可以实现更高的传输速度。
数据位顺序指定了数据的传输顺序,可以是最高有效位(MSB)优先或最低有效位(LSB)优先。
尽管SPI总线协议有许多优点,但它也存在一些限制。
sd卡总线协议
编号:_______________本资料为word版本,可以直接编辑和打印,感谢您的下载sd卡总线协议甲方:___________________乙方:___________________日期:___________________sd卡总线协议篇一:sd卡接口的完整规范sd卡接口规范的完整翻译特性:◎容虽:32mb/64mb/128mb/256mb/512mb/1gbyte ◎兼容规范版本1.01 ◎卡上错误校正◎支持cpRm◎两个可选的通信协议:sd模式和spi模式◎可变时钟频率0— 25mh应通信电压范围:2.0-3.6V 工作电压范围:2.0-3.6V◎低电压消耗:自动断电及自动睡醒,智能电源管理◎ 无需额外编程电压◎卡片带电插拔保护◎正向兼容mmc^◎高速串行接口带随即存取----- 支持双通道闪存交叉存取----- 快写技术:一个低成本的方案,能够超高速闪存访问和高可靠数据存储---- 最大读写速率:10mbyte/s◎最大10个堆叠的卡(20mhz,Vcc=2.7-3.6V) ◎数据寿命:10万次编程/擦除◎ ce和Fcc认证◎ pip封装技术◎尺寸:24mm® x 32mn#x 1.44mm厚说明:本sd卡高度集成闪存,具备串行和随机存取能力。
可以通过专用优化速度的串行接口访问,数据传输可靠。
接口允许几个卡垛叠,通过他们的外部连接。
接口完全符合最新的消费者标准,叫做sd卡系统标准,由sd卡系统规范定义。
sd卡系统是一个新的大容虽存储系统,基于半导体技术的变革。
它的出现,提供了一个便宜的、结实的卡片式的存储媒介,为了消费多媒体应用。
sd 卡可以设计出便宜的播放器和驱动器而没有可移动的部分。
一个低耗电和广供电电压的可以满足移动电话、电池应用比如音乐播放器、个人管理器、掌上电脑、电子书、电子白科全书、电子词典等等。
使用非常有效的数据压缩比如mpeg, sd卡可以提供足够的容虽来应付多媒体数据。
MicroSD卡(TF卡)spi模式实现方法
MicroSD卡(TF卡)spi模式实现方法现在我们手机的内存卡多为Micro SD卡,又叫TF卡,所以Micro SD卡比SD卡常见。
自己曾经也想写写SD卡的读取程序,但又不想特地再去买个SD卡,这时想起手机内存卡不是和SD卡很像吗?在网上查了以后发现SD卡和Micro SD卡其实也就大小和引脚不一样,它们的操作其实是一样的,所以网上的SD卡读写代码其实可以直接拿来用。
关于SD卡和Micro SD卡的引脚定义和不同可见下两表:我们可以发现Micro SD卡只有8个引脚是因为比SD卡少了一个Vss。
当然你也可以买个卡套套在Micro SD卡上,这样一来大小就和SD卡一样大,这时候卡套上的9个引脚就和SD卡一样了,你可以完全当做SD卡来操作。
spi下电路的连接非常简单,接上电源线Vdd和地线Vss,再接上spi的CS,SCLK,DI(MOSI)和DO(MISO)就可以了,其他引脚可以放空。
注意SD卡的电源和操作电压都为2.7-3.6V,5V的单片机要进行电平转换或串电阻限流。
还有记得SD卡的CS,SCLKh和DI要用10~100K的电阻上拉。
我是套了卡套接的电路,因为Micro SD卡的引脚太密了,不好焊接,SD卡相对引脚好焊。
因为没有卡座,而且也没专门的PCB我就直接焊到卡套上,诶牺牲了一个卡套。
下面是我自己画的电路图:上面Micro SD卡的硬件电路就好了,下面我们讲讲Micro SD卡的软件驱动和指令集。
SD卡的命令格式如下,6字节共48位,传输时最高位(MSB)先传输:SD卡的command(命令)占6 bit,一般叫CMDx或ACMDx,比如CMD1就是1,CMD13就是13,ACMD41就是41,依此类推。
Command Argument(命令参数)占4 byte,并不是所有命令都有参数,没有参数的话该位一般就用置0。
最后一个字节由7 bit CRC校验位和1 bit停止位组成。
在SPI模式下,CRC是被忽略的,可以都置1或置0.但是发送CMD0时要记得加上CRC,即最后1字节为0x95(因为发送CMD0时还未进入SPI模式,PS:CMD8也要,但一般大家都把发送CMD8省略了)。