一、SD卡简介

1、SD卡引脚图

SD卡一般支持两种读写模式,SPI和SDIO模式,SD卡的引脚排序如下图所示。

SD卡引脚功能描述如下表所示:

2、SD卡物理结构

一张SD卡包括有存储单元、存储单元接口、电源检测、卡及接口控制器和接口驱动器5个部分,见图 362。存储单元是存储数据部件,存储单元通过存储单元接口与卡控制单元进行数据传输;电源检测单元保证SD卡工作在合适的电压下,如出现掉电或上状态时,它会使控制单元和存储单元接口复位;卡及接口控制单元控制SD卡的运行状态,它包括有8个寄存器;接口驱动器控制SD卡引脚的输入输出。

SD卡总共有8个寄存器,用于设定或表示SD卡信息。这些寄存器只能通过对应的命令访问,对SD卡进行控制操作并不是像操作控制器GPIO相关寄存器那样一次读写一个寄存器的,它是通过命令来控制,SDIO定义了64个命令,每个命令都有特殊意义,可以实现某一特定功能,SD卡接收到命令后,根据命令要求对SD卡内部寄存器进行修改,程序控制中只需要发送组合命令就可以实现SD卡的控制以及读写操作。

二、SPI

什么是SPI
SPI 是英语Serial Peripheral interface的缩写,顾名思义就是串行外围设备接口。是Motorola(摩托罗拉)首先在其MC68HCXX系列处理器上定义的。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,主要应用在 EEPROM,FLASH,实时时钟,AD转换器,还有数字信号处理器和数字信号解码器之间。
SPI主从模式
SPI分为主、从两种模式,一个SPI通讯系统需要包含一个(且只能是一个)主设备,一个或多个从设备。提供时钟的为主设备(Master),接收时钟的设备为从设备(Slave),SPI接口的读写操作,都是由主设备发起。当存在多个从设备时,通过各自的片选信号进行管理。
SPI是全双工且SPI没有定义速度限制,一般的实现通常能达到甚至超过10 Mbps
SPI信号线
SPI接口一般使用四条信号线通信:
SDI(数据输入),SDO(数据输出),SCK(时钟),CS(片选)
MISO: 主设备输入/从设备输出引脚。该引脚在从模式下发送数据,在主模式下接收数据。
MOSI: 主设备输出/从设备输入引脚。该引脚在主模式下发送数据,在从模式下接收数据。
SCLK:串行时钟信号,由主设备产生。
CS/SS:从设备片选信号,由主设备控制。它的功能是用来作为“片选引脚”,也就是选择指定的从设备,让主设备可以单独地与特定从设备通讯,避免数据线上的冲突。

三、主要代码

本次实验使用现成的代码,代码为其他文章分享

链接:https://pan.baidu.com/s/1MFVI8M022kbmuOlGbAl6aw 提取码:xhc1

主函数部分

while (1){WritetoSD(WriteBuffer,sizeof(WriteBuffer));        HAL_Delay(500);WriteBuffer[0] = WriteBuffer[0] +0;WriteBuffer[1] = WriteBuffer[1] +1;write_cnt ++;while(write_cnt > 10){   printf(" while \r\n");HAL_Delay(500);}

SD卡写入函数

void WritetoSD(BYTE write_buff[],uint8_t bufSize)
{FATFS fs;FIL file;uint8_t res=0;UINT Bw;  res = SD_init();       //SD卡初始化if(res == 1){printf("SD卡初始化失败! \r\n");      }else{printf("SD卡初始化成功! \r\n");        }res=f_mount(&fs,"0:",1);        //挂载//  if(test_sd == 0)      //用于测试格式化if(res == FR_NO_FILESYSTEM)      //没有文件系统,格式化{//      test_sd =1;                //用于测试格式化printf("没有文件系统! \r\n");      res = f_mkfs("", 0, 0);      //格式化sd卡if(res == FR_OK){printf("格式化成功! \r\n");     res = f_mount(NULL,"0:",1);      //格式化后先取消挂载res = f_mount(&fs,"0:",1);            //重新挂载  if(res == FR_OK){printf("SD卡已经成功挂载,可以进进行文件写入测试!\r\n");}  }else{printf("格式化失败! \r\n");      }}else if(res == FR_OK){printf("挂载成功! \r\n");       }else{printf("挂载失败! \r\n");}  res = f_open(&file,SD_FileName,FA_OPEN_ALWAYS |FA_WRITE);if((res & FR_DENIED) == FR_DENIED){printf("卡存储已满,写入失败!\r\n");      }f_lseek(&file, f_size(&file));//确保写词写入不会覆盖之前的数据if(res == FR_OK){printf("打开成功/创建文件成功! \r\n");        res = f_write(&file,write_buff,bufSize,&Bw);       //写数据到SD卡if(res == FR_OK){printf("文件写入成功! \r\n");            }else{printf("文件写入失败! \r\n");}     }else{printf("打开文件失败!\r\n");} f_close(&file);                     //关闭文件      f_mount(NULL,"0:",1);      //取消挂载}

四、硬件调试

1、接线图


CS->PB0
SCK->PA5
MISO->PA6
MOSI->PA7
注:使用5V电源,尽量使用杜邦线直接连接

2、实现效果


五、总结

本次实验过程较为艰难,开始一直卡在初始化部分,无法初始化成功,后来经老师提醒改成使用5V供电。改了后依旧经常无法初始化成功,后来采用杜邦线直接连接,不使用面包板,还需要不断调整线的连接才勉强成功。

六、参考

https://blog.csdn.net/m0_58414679/article/details/122036435
https://blog.csdn.net/zhanglifu3601881/article/details/89236537
https://blog.csdn.net/qq_39758638/article/details/103573843
https://blog.csdn.net/flyleaf91/article/details/52325539
https://blog.csdn.net/z_jinye/article/details/23276877
https://blog.csdn.net/as480133937/article/details/105764119

基于STM32F103对SD卡的数据读取相关推荐

  1. 基于STM32F103完成对SD卡的数据读取(fat文件模式)

    文章目录 实验内容 一.SD卡协议 (一).SD卡简介 (二).SD 卡物理结构 (三).SD卡总线 二.基于STM32F103完成对SD卡的数据读取 (一).创建工程 (二).修改代码 (三).串口 ...

  2. STM32F103完成对SD卡的数据读取(fat文件模式)

    目录 一.关于SD卡 1.简介 2.SD卡的寄存器 3.SD卡读取与写入(SPI模式) 二.实验操作 1.仪器 2.代码 3.连线 4.烧录程序 5.串口调试助手初始化并写入文件 6.sd卡里hell ...

  3. 使用Altium Designer 绘制原理图并且使用STM32F103完成对SD卡的数据读取

    使用Altium Designer 绘制原理图并且使用STM32F103完成对SD卡的数据读取 前言 实验要求 一. 电路原理图绘制 软件安装配置过程 (一)绘制stm32最小系统的电路原理图 1.新 ...

  4. STM32F103完成对SD卡的数据读取

    目录 一.SD卡介绍 1.概述 2.SD模式 3.SD卡读取与写入(SPI模式) 二. STM32F103完成对SD卡的数据读取 1.代码部分 2.U盘格式化 3.电路连接 4.具体实现 三.参考资料 ...

  5. STM32F103最小板完成对SD卡的数据读取(fat文件模式)

    目录 一.SD卡协议原理介绍 1.SD卡简介 2.SDIO设备分类 3.SD卡物理结构 4.SD卡寄存器 5.SD模式 驱动模式 传输模式 二. 实现对SD卡的数据读取 1.硬件准备 2.芯片模块与S ...

  6. STM32F103之完成对SD卡的数据读取

    文章目录 一. 认识SD卡 1. 介绍SD卡 2. SD卡的物理结构 3. SD卡寄存器 4. SD卡模式 5. 初始化SD卡过程 6. SD卡读取数据 二. 实验操作--对SD卡进行数据读取 1. ...

  7. 用STM32F103完成对SD卡的数据读取

    目录 SD卡协议原理 STM32+SD卡 的系统原理图设计 具体原理 代码 所用软件及硬件: 成果 参考文献 SD卡协议原理 功能 SD卡是存储卡,它的功能就是存储. 分类 SD卡按容量分类,可以分为 ...

  8. 【嵌入式20】STM32F103完成对SD卡的数据读取详细操作

    本文主要利用STM32F103完成对SD卡的数据读取,介绍该实验的详细操作 一.题目要求 二.SD卡协议原理 1.SD卡简述 2.SD卡物理结构 3.SD卡寄存器 4.SD卡操作模式 5.SD卡初始化 ...

  9. STM32+SD卡的原理图绘制以及用32完成对SD卡的数据读取(fat文件模式)

    目录 一.下载安装AD 1.1安装方法一 1.2安装方法二 二.绘制STM32最小系统原理图 2.1元件库 2.2新建工程 2.3绘制原理图 三.SD卡协议原理 3.1SD卡简介 3.2SD卡接口 3 ...

  10. 基于FPGA的SD卡的数据读写实现(SD NAND FLASH)

    文章目录 1.存储芯片分类 2.NOR Flash 与 NAND Flash的区别 3.什么是SD卡? 4.什么是SD NAND? 5.SD NAND的控制时序 6.FPGA实现SD NAND读写 6 ...

最新文章

  1. The only supported ciphers are AES-128-CBC and AES-256-CBC
  2. 我怎么在AD里面找到已经改名的Administrator账户?
  3. 国产最大AI开源框架再升级:一口气发布9大新产品,顺便送出亿元GPU算力
  4. C#序列化反序列化对象为base64字符串
  5. APP远程调试及网络自动化测试
  6. mysql数据库的函数_详解数据库_MySQL: mysql函数
  7. mysql 去重后拼接_mysql学习笔记(三)—— 查询select
  8. DE15 Introduction to Fourier Series
  9. 合并两个有序链表-递归
  10. python ar_四种AR的实现方式
  11. 怎么样查看视图+mysql_如何查看视图的sql语句
  12. 我用 10 张脑图,征服了一系列大厂面试官。
  13. 2015年史上最全的SEO网站优化方案流程
  14. 什么情况下我可以认为我就是我最大的骄傲
  15. Android Studio部分汉化中文包
  16. 移动MM首届手机软件设计及创意大赛决赛取得圆满成功
  17. 图片噪声 降噪 边缘检测
  18. python for循环从第二个元素开始遍历
  19. 学习Linux命令(3)
  20. 关于进入uboot后卡住,无法进入内核

热门文章

  1. java.util 时间操作之Date类
  2. Python数据序列
  3. linux程序后台运行
  4. 如何解决Windows版64位SQLite,sqlite3安装
  5. 化妆品活性成分的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
  6. 一文搞定Python读取文件的全部知识
  7. 使用Scala首先运行加特林负载测试
  8. (附源码)django学生就业管理系统 计算机毕设24237
  9. JS设计模式——揭示模块模式
  10. mysql数据库cap理论_CAP相关理论