利用SD存储介质扩展MAXQ20000的非易失性数据存储空间

news2024/10/7 20:37:03

        SD存储卡是一种可移动存储介质,通常用于相机、手机、平板电脑等设备中存储照片、视频、音乐等数据。SD存储卡的全称为Secure Digital Memory Card,是由SD Card Association制定的一种标准格式。它具有体积小、存储容量大、读写速度快、价格低廉等优点。目前,市场上常见的SD存储卡有SD、SDHC、SDXC等不同类型,其存储容量也从几百MB到几十GB不等。

图 1. MAXQ2000 与SD 存储卡的接口非常简单

        图 1 的电路图给出了一个典型应用电路。SD 卡要求全双工、8 位 SPI 操作。数据 从 MAXQ2000 的 MOSI 引脚同步输入SD卡的DI 引脚,并由SD卡的DO线同步输入MAXQ2000的MISO 引脚。数据在CLK信号的上升沿同步输入和输出。在每次数据传输的末尾还必须提供8个额外的时钟,以允许SD完成任何未完结的操作。对应这些额外时钟的输入数据必须全为 1.识别阶段的时钟频率必须限定在 400kHz 以内,但SD 卡一经识别后,时钟频率便可提高到 25MHz。

MAXQ2000 的 SPI 模块

MAXQ2000包含一个硬件SPI模块,可以方便地针对SD卡接口进行配置.为了配置时钟极性和数据长度,需将SPICF寄存器置为全零。这种SPI模块配置在时钟的上升沿锁存数据,并将数据长度设置为8位。对于本应用, MAXQ2000的系统时钟频率为16MHz.在这种情况下,需要将SPICK寄存器置为Ox28,从而使SPI时钟频率接近380kHz.必须将 SPICN 寄存器的低 2 位置位,以使能 SPI 主机模式。

SD SPI 数据格式

        SD卡的SPI协议与SD总线协议相似。如果一片SD卡没有数据要发送,则将DO引脚保持在全1的空闲状态,因此不是在每个时钟沿都从SD卡的DO引脚接收有效数据。当SD卡有数据要回送给主机时,要在数据之前先发送一些以0 为起始位的特定令牌。当这些令牌发送完毕之后,SD 卡要发送的所有定长数据立即被发送出去。由于接收器事先已经知道要接收的字节数,因而响应中不包含表征长度的字节。此外,由于在起始令牌和数据都发送完毕后才会进入空闲状态,所以全部数据字节都以不带前缀的原始形式发送。和总线上其它所有通信过程一样,令牌大小也要和SPI 传输的8 位边界对齐。主机发送给 SD卡的指令和数据都进循类似的格式,以全 1 指示总线空闲。除了状态令牌以外,所有传输都由附加在数据末尾的循环冗余校验(CRC)码进行保护,系统提供两种CRC算法: CRC-7用于小数据块, CRC-16则用于大数据块。CRC 是SD SPI 接口的可选部分,但除非应用系统限制它的使用,否则应该使用 CRC 来确保数据的完整性。

循环冗余校验

        CRC 算法通常用于检测由不可靠的通信通道引起的误差。特定CRC类型的选择根据需要保护的数据长度来决定。对于基于 SD 存储介质的数据,采用CRC-7 和 CRC-16 编码方式.

        CRC 算法将被保护的数据用选中的除数进行除法运算,产生一个余数。因为该算法中用得的是多项式,所以该除法运算不含进位逻辑。无需考虑进位时,除法运算可通过逻辑XOR操作来实现。所选中的除数通常用CRC的多项式来表示。接着,计算出的余数和数据一起传输,接收器用此余数来检查确认数据在传输过程中是否正常

        对于 CRC-7,余数可通过一个 7 位移位寄存器在软件中计算。计算开始时,将该移位寄存器初始化置为全零。当受保护数据的每一位(MSB在先)被移入移位寄存器的LSB 时,移出移位寄存器的MSB,并进行检查。如果移出的位为 1则用CRC-7多项式系数0x09进行异或运算,以此来修正移位寄存器的内容。如果从移位寄存器中移出的位为0.则无需XOR操作。受保护数据的最后一位被移入移位寄存器且完成了条件XOR操作后,必须按此类似方式移入6个或更多 0. 这一过程称作扩张并完成多项式除法运算。此时,CRC-7 值可从移位寄存器直接读出。

图2.通过移位寄存器架构计算CRC-7.

        当接收器收到所有受保护的数据后,接收器可计算基于受保护数据的CRC-7值并将改值与接收到的CRC-7值进行比较.如果这两个值不同,接收器就能判断出受保护数据在传输过程中出现错误。如果这两个值相同,则接收器可完全判定通信通道上的数据是完整的.

        CRC-16 算法可用同样的方式来构建。在这种情况下,移位寄存器长度为 16 位而不是 7 位:多项式系数改为 0×1021.且输入数据通过 16 个 0 位来扩张。

SD 命令格式

        发送给 SD 卡的命令采用 6 字节的格式(图 3)。命令的第1 个字节可通过将6 位命令码与 16 进制码 0x40 进行或运算得到。如果命令需要,则在接下来的 4 个字节中提供一个 32 位的参数:最后 1 个字节包含了从第 1 个字节到第 5 个字节的CRC-7校验和。表 1 列出了一些重要的SD命令.

图3. 发送给存储卡的SPI 模式SD 命令采用6 字节格式。

表 1. 部分 SD 存储卡命令

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1226904.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Triage沙箱监控

Triage沙箱可以免费分析恶意软件样本。最先进的恶意软件分析沙箱,具有您需要的所有功能。 在可定制的环境中提交大量样本,并对许多恶意软件系列进行检测和配置提取。立即查看公开报告并对您的恶意软件进行分类! 官方网址:https:…

关于链表的几道算法题

1.删除链表的倒数第n个节点 力扣https://leetcode.cn/submissions/detail/482739445/ /*** Definition for singly-linked list.* public class ListNode {* int val;* ListNode next;* ListNode() {}* ListNode(int val) { this.val val; }* ListNode(…

Spring Boot中实现支付宝、微信和银联支付的功能

Spring Boot中实现支付宝、微信和银联支付的功能 在Spring Boot中实现支付宝、微信和银联支付的功能,通常需要使用它们各自的SDK(Software Development Kit)。以下是一个简单的示例代码,演示了如何在Spring Boot项目中集成支付宝…

22. 深度学习 - 自动求导

Hi,你好。我是茶桁。 咱们接着上节课内容继续讲,我们上节课已经了解了拓朴排序的原理,并且简单的模拟实现了。我们这节课就来开始将其中的内容变成具体的计算过程。 linear, sigmoid和loss这三个函数的值具体该如何计算呢? 我们…

使用Spring Boot结合JustAuth实现支付宝、微信、微博扫码登录功能

使用Spring Boot结合JustAuth实现支付宝、微信、微博扫码登录功能 在使用Spring Boot结合JustAuth实现支付宝、微信、微博扫码登录功能之前,需要先确保已经配置好Spring Boot项目,并且添加了JustAuth的依赖。你可以在项目的pom.xml文件中添加如下依赖&a…

麦克风阵列入门

文章引注: http://t.csdnimg.cn/QP7uC 一、麦克风阵列的定义 所谓麦克风阵列其实就是一个声音采集的系统,该系统使用多个麦克风采集来自于不同空间方向的声音。麦克风按照指定要求排列后,加上相应的算法(排列算法)就可…

2 Redis的高级数据结构

1、Bitmaps 首先,最经典的应用场景就是用户日活的统计,比如说签到等。 字段串:“dbydc”,根据对应的ASCII表,最后可以得到对应的二进制,如图所示 一个字符占8位(bit),…

【GCN】GCN学习笔记一

谱域图卷积 卷积 卷积定义离散空间的卷积 图卷积简介 卷积定理谱域图卷积实现思路如何定义图上的傅里叶变换拉普拉斯矩阵 (Laplacian Matrix)拉普拉斯矩阵的性质拉普拉斯矩阵的谱分解拉普拉斯矩阵与拉普拉斯算子 图傅里叶变换 图上的信号表示经典傅里叶变…

常见Web安全

一.Web安全概述 以下是百度百科对于web安全的解释: Web安全,计算机术语,随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台…

性格懦弱怎么办?如何改变懦弱的性格?

性格懦弱是一个比较常见的话题了,懦弱带来的苦恼和困扰,深深影响着我们的生活,人际关系,以及事业的发展。然后如何摆脱懦弱,却并非易事,尤其是对于成年人来说,这种懦弱的性格特征,已…

关于缓存和数据库一致性问题的深入研究

如何保证缓存和数据库一致性,这是一个老生常谈的话题了。 但很多人对这个问题,依旧有很多疑惑: 到底是更新缓存还是删缓存?到底选择先更新数据库,再删除缓存,还是先删除缓存,再更新数据库&…

算法设计与分析复习--贪心(一)

文章目录 上一篇贪心的性质活动安排问题贪心背包问题最优装载哈夫曼编码下一篇 上一篇 算法设计与分析复习–动态规划 贪心的性质 贪心和动态规划都要求问题具有最优子结构; 可用贪心方法时,动态规划可能不适用 可用动态规划方法时,贪心方法…

C/C++关于main函数参数问题

文章目录 前言不带参数的main带参数的main为什么会有带参数的main总结 前言 每次写C/C程序,基本上就是一个int main(){return 0;}。但是后来在linux里面涉及到很多带参数的main函数,我一直不太理解,这里就写篇博客记录一下。 不带参数的main…

10、背景分离 —— 大津算法

上一节学习了通过一些传统计算机视觉算法,比如Canny算法来完成一个图片的边缘检测,从而可以区分出图像的边缘。 今天再看一个视觉中更常见的应用,那就是把图片的前景和背景的分离。 前景和背景 先看看什么是前景什么是背景。 在图像处理和计算机视觉中,"前景"…

SpringCloudAlibaba系列之Nacos服务注册与发现

目录 说明 认识注册中心 Nacos架构图 Nacos服务注册与发现实现原理总览 SpringCloud服务注册规范 服务注册 心跳机制与健康检查 服务发现 主流服务注册中心对比 小小收获 说明 本篇文章主要目的是从头到尾比较粗粒度的分析Nacos作为注册中心的一些实现,很…

AcWing 3. 完全背包问题 学习笔记

有 N� 种物品和一个容量是 V� 的背包,每种物品都有无限件可用。 第 i� 种物品的体积是 vi��,价值是 wi��。 求解将哪些物品装入背包,可使这些物品的总体积不…

Elasticsearch中的语义检索

一、传统检索的背景痛点 和传统的基于关键词的匹配方式不同,语义检索,利用大模型,将文本内容映射到神经网络空间,最终记忆token做检索。 例如想要搜索中国首都,例如数据集中,只有一篇文章在描述北京&#x…

Zabbix实现故障自愈

一、简介 Zabbix agent 可以运行被动检查和主动检查。 在被动检查模式中 agent 应答数据请求。Zabbix server(或 proxy)询求数据,例如 CPU load,然后 Zabbix agent 返还结果。 主动检查处理过程将相对复杂。Agent 必须首先从 Z…