SD卡通信协议主要包括物理层、数据传输层和应用层三个部分。
物理层:SD卡使用SPI或SDIO两种物理层协议进行通信。SPI是一种同步串行通信协议,使用4根信号线进行通信;SDIO是一种异步串行通信协议,使用9根信号线进行通信。
数据传输层:SD卡使用命令响应式数据传输(Command Response Data Transfer)协议进行数据传输。该协议采用命令-响应机制,每个命令都有一个响应,响应的类型有四种,分别是R1、R2、R3和R7。在数据传输过程中,SD卡可以使用多种数据传输模式,如单块传输、多块传输、数据读取和数据写入等。
应用层:SD卡应用层协议主要包括文件系统和命令集两个部分。文件系统包括FAT12、FAT16、FAT32和exFAT等多种文件系统格式,用于管理SD卡中存储的文件和目录。命令集包括SD卡的基本命令集和扩展命令集,用于控制SD卡的读写操作。
命令响应式数据传输(Command Response Data Transfer)协议是SD卡数据传输层的协议,用于控制SD卡的读写操作。
该协议采用命令-响应机制,每个命令都有一个响应,响应的类型有四种,分别是R1、R2、R3和R7。
命令格式:
SD卡命令由6个字节组成,其中第一个字节为命令码,后面的5个字节为命令参数。命令码和命令参数组合成完整的命令,用于控制SD卡的读写操作。
响应格式:
SD卡的响应由1个到3个字节组成,响应类型有四种,分别是R1、R2、R3和R7。其中,R1响应是最常见的响应类型,用于表示命令是否执行成功。R2响应用于CID和CSD寄存器的读取操作,包含16个字节的寄存器数据。R3响应用于SD卡初始化操作,包含32位的OCR寄存器数据。R7响应用于CMD8命令的响应,包含8个字节的响应数据。
数据传输:
SD卡支持多种数据传输模式,包括单块传输、多块传输、数据读取和数据写入等。在数据传输过程中,SD卡会根据命令和响应的类型进行数据传输,以完成读写操作。
总之,命令响应式数据传输协议是SD卡数据传输层的核心协议,用于控制SD卡的读写操作。掌握该协议的原理和实现方式,对于开发SD卡驱动程序和应用程序具有重要意义。
比如以读取SD卡CID寄存器为例,以下是命令响应式数据传输协议的具体实现步骤:
发送CMD10命令,CMD10命令的命令码为0x0A,表示读取CID寄存器,命令参数为0x00000000,表示读取第0个块的数据。
等待SD卡响应,SD卡会返回R1响应,R1响应的第一字节为0x00,表示命令执行成功。
继续等待SD卡响应,SD卡会返回R2响应,R2响应包含16个字节的CID寄存器数据,这些数据包含了SD卡的制造商信息、容量信息等。
解析CID寄存器数据,提取需要的信息,比如SD卡的制造商ID、产品系列号、容量等。
完成CID寄存器的读取操作。
以上就是读取SD卡CID寄存器的命令响应式数据传输协议的实现步骤。
【最后一个bug】多平台都有更新和发布,大家可以一键三连,关注+星标,不错过精彩内容~

我构建了两个需要相互通信和发送文件的Rails应用程序。例如,一个Rails应用程序会发送请求以查看其他应用程序数据库中的表。然后另一个应用程序将呈现该表的json并将其发回。我还希望一个应用程序将存储在其公共(public)目录中的文本文件发送到另一个应用程序的公共(public)目录。我从来没有做过这样的事情,所以我什至不知道从哪里开始。任何帮助,将不胜感激。谢谢! 最佳答案 无论Rails是什么,几乎所有Web应用程序都有您的要求,大多数现代Web应用程序都需要相互通信。但是有一个小小的理解需要你坚持下去,网站不应直接访问彼此
最近在学习CAN,记录一下,也供大家参考交流。推荐几个我觉得很好的CAN学习,本文也是在看了他们的好文之后做的笔记首先是瑞萨的CAN入门,真的通透;秀!靠这篇我竟然2天理解了CAN协议!实战STM32F4CAN!原文链接:https://blog.csdn.net/XiaoXiaoPengBo/article/details/116206252CAN详解(小白教程)原文链接:https://blog.csdn.net/xwwwj/article/details/105372234一篇易懂的CAN通讯协议指南1一篇易懂的CAN通讯协议指南1-知乎(zhihu.com)视频推荐CAN总线个人知识总
MIMO技术的优缺点优点通过下面三个增益来总体概括:阵列增益。阵列增益是指由于接收机通过对接收信号的相干合并而活得的平均SNR的提高。在发射机不知道信道信息的情况下,MIMO系统可以获得的阵列增益与接收天线数成正比复用增益。在采用空间复用方案的MIMO系统中,可以获得复用增益,即信道容量成倍增加。信道容量的增加与min(Nt,Nr)成正比分集增益。在采用空间分集方案的MIMO系统中,可以获得分集增益,即可靠性性能的改善。分集增益用独立衰落支路数来描述,即分集指数。在使用了空时编码的MIMO系统中,由于接收天线或发射天线之间的间距较远,可认为它们各自的大尺度衰落是相互独立的,因此分布式MIMO
尝试通过SSL连接到ImgurAPI时出现错误。这是代码和错误:API_URI=URI.parse('https://api.imgur.com')API_PUBLIC_KEY='Client-ID--'ENDPOINTS={:image=>'/3/image',:gallery=>'/3/gallery'}#Public:Uploadanimage##args-Theimagepathfortheimagetoupload#defupload(image_path)http=Net::HTTP.new(API_URI.host)http.use_ssl=truehttp.verify
一、什么是MQTT协议MessageQueuingTelemetryTransport:消息队列遥测传输协议。是一种基于客户端-服务端的发布/订阅模式。与HTTP一样,基于TCP/IP协议之上的通讯协议,提供有序、无损、双向连接,由IBM(蓝色巨人)发布。原理:(1)MQTT协议身份和消息格式有三种身份:发布者(Publish)、代理(Broker)(服务器)、订阅者(Subscribe)。其中,消息的发布者和订阅者都是客户端,消息代理是服务器,消息发布者可以同时是订阅者。MQTT传输的消息分为:主题(Topic)和负载(payload)两部分Topic,可以理解为消息的类型,订阅者订阅(Su
一、RIPV2协议简介 RIP(RoutingInformationProtocol)路由协议是一种相对古老,在小型以及同介质网络中得到了广泛应用的一种路由协议。RIP采用距离向量算法,是一种距离向量协议。RIP-1是有类别路由协议(ClassfulRoutingProtocol),它只支持以广播方式发布协议报文。RIP-1的协议报文无法携带掩码信息,它只能识别A、B、C类这样的自然网段的路由,因此RIP-1不支持非连续子网(DiscontiguousSubnet)。RIP-2是一种无类别路由协议(ClasslessRoutingProtocol),支持路由标记,在路由策略中可根据路由标记对
功能需求:主机使用一个串口,与两个从机进行双向通信,主机向从机发送数据,从机能够返回数据,由于结构限制,主机与从机之间只有3根线(电源、地、数据线),并且从机上没有设物理的电源开关,需要通过与主机连接的数据线来控制开机,总结如下:1、数据线只有1根2、能够双向通信3、主机能够控制从机开机4、主机可以单独向1个从机发数据,也可以同时向两个从机发送数据根据需求,设计出如下电路:工作原理分析:VCC_24V_IN、GND、LINE_L(LINE_R)三根线接线连接到从机,电源开启电路是从机内部的电源控制。开机的逻辑:*主机先上电,LINE_L因为主机的R1上拉而有高电平,使Q6导通,Q5的G极电压被
目录一、什么是Websocket二、WebSocket部分header介绍三、HTTPVSWebSocket四、什么时候使用WebSockets五、关于SockJS和STOMP一、什么是Websocket根据RFC6455标准,Websocket协议提供了一种标准化的方式在客户端和服务端之间通过TCP连接建立全双工、双向通信渠道。它是一种不同于HTTP的TCP协议,但是被设计为在HTTP基础上运行。Websocket交互始于HTTP请求,该请求会通过HTTPUpgrade请求头去升级请求,进而切换到Websocket协议。请求报文如下:GET/spring-websocket-portfoli
2022年伊始,默安科技联合数世咨询举办以“软件供应链安全的时与势”为主题的访谈活动,由数世咨询创始人李少鹏主持,邀请贝壳安全研发负责人李文鹏、北京邮电大学副教授张文博、默安科技副总裁沈锡镛三位行业大咖做客网安小酒馆,从产业、企业、学术的不同维度,共同探讨软件供应链安全建设的新思路,为业界呈现了一场开年网安盛宴。随着全球软件供应链安全事件频发,软件供应链安全逐渐成为业界关注焦点,也成为影响国家重要信息系统安全与关键信息基础设施安全的重要因素,以及网络安全保障体系和能力建设的重要环节。嘉宾们围绕软件供应链安全发展的主要驱动力、关基行业中的实施现状和落地难点、产学研成果转化、软件供应链安全的重要性
我有一个RaspberryPiTFT7"触摸屏显示器,我想创建一个简单的应用程序来显示和输出系统数据(即CPU使用率、温度等)。我注意到目前常见的实现方法是使用pygame库输出到显示器连接到的帧缓冲区/dev/fb1。我想执行相同的操作,但使用Ruby,因为我更熟悉这门语言。有人可以为我指明正确的方向,让我知道如何开始吗?我查看了rubygame和gosu库,它们似乎能够做我想做的事情,即绘制屏幕,但我找不到任何关于如何将输出定向到的信息帧缓冲区本身。 最佳答案 rubycorelib有一个IO您应该能够使用该类将输出定向