一SD卡介绍

1、SD卡
SD存储卡(Secure Digital Memory Card)是一种基于半导体快闪存储器的新一代高速存储设备。SD存储卡的技术是从MMC卡(MultiMedia Card格式上发展而来,在兼容SD存储卡基础上发展了SDIO(SD Input/ Output)卡,此兼容性包括机械,电子,电力,信号和软件,通常将SD、SDIO卡俗称SD存储卡

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

驱动模式
SD卡有两种驱动模式:SPI模式与SDIO模式。它们所使用的接口信号是不同的。在SPI模式下,只会用到SD卡的4根信号线,即CS、DI、SCLK与DO(分别是SD卡的片选、数据输入、时钟与数据输出)。

传输模式
SD卡共支持三种传输模式:SPI模式(独立序列输入和序列输出),1位SD模式(独立指令和数据通道,独有的传输格式),4位SD模式(使用额外的针脚以及某些重新设置的针脚。支持四位宽的并行传输)。

本篇文章主要使用SPI方式进行验证,关于SPI介绍可以参考我之前的博客
、FATFS
FATFS 是一个通用的文件系统(FAT/exFAT)模块,用于在小型嵌入式系统中实现FAT文件系统。 FatFs 组件的编写遵循ANSI C(C89),完全分离于磁盘 I/O 层,因此不依赖于硬件平台。它可以嵌入到资源有限的微控制器中,如 8051, PIC, AVR, ARM, Z80, RX等等,不需要做任何修改。

FATFS提供了以下文件访问函数:
f_open - 打开/创建文件 f_close - 关闭打开的文件f_read - 从文件中读取数据f_write - 将数据写入文件
f_lseek - 移动读/写指针,扩展大小 f_truncate - 截断文件大小
f_sync - 刷新缓存的数据f_forward - 将数据转发到流
f_expand - 为文件分配连续块 f_gets - 读取字符串
f_putc - 写一个字符 f_puts - 编写字符串 f_printf - 编写格式化字符串
f_tell - 获取当前读/写指针 f_eof - 测试文件结尾
f_size - 获取尺寸f_error - 测试错误
二.分析
1代码分析
1.1.SD卡写入文件名及写入内容

char SD_FileName[] = "hello.txt";
uint8_t WriteBuffer[] = "小小星亮晶晶 631907030123\n";

1.2.main函数

int main(void)
{HAL_Init();SystemClock_Config();MX_GPIO_Init();MX_SPI1_Init();MX_FATFS_Init();MX_USART1_UART_Init();HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1);    //enable uart   printf(" mian \r\n");Get_SDCard_Capacity();   //得到使用内存并选择格式化while (1){WritetoSD(WriteBuffer,sizeof(WriteBuffer)); //写入SD卡 HAL_Delay(500);WriteBuffer[0] = WriteBuffer[0] +10;WriteBuffer[1] = WriteBuffer[1] +10; write_cnt ++;while(write_cnt > 10){    printf(" while \r\n");HAL_Delay(500);}        }
}

1.3.SD初始化并得到使用内存函数

void Get_SDCard_Capacity(void)
{FRESULT result;FATFS FS;FATFS *fs;DWORD fre_clust,AvailableSize,UsedSize;  uint16_t TotalSpace;uint8_t res;res = SD_init();       //SD卡初始化if(res == 1){printf("SD卡初始化失败! \r\n");      }else{printf("SD卡初始化成功! \r\n");        }/* 挂载 */res=f_mount(&FS,"0:",1);        //挂载if (res != FR_OK){printf("FileSystem Mounted Failed (%d)\r\n", result);}res = f_getfree("0:", &fre_clust, &fs);  /* 根目录 */if ( res == FR_OK ) {TotalSpace=(uint16_t)(((fs->n_fatent - 2) * fs->csize ) / 2 /1024);AvailableSize=(uint16_t)((fre_clust * fs->csize) / 2 /1024);UsedSize=TotalSpace-AvailableSize;              /* Print free space in unit of MB (assuming 512 bytes/sector) */printf("\r\n%d MB total drive space.\r\n""%d MB available.\r\n""%d MB  used.\r\n",TotalSpace, AvailableSize,UsedSize);}else {printf("Get SDCard Capacity Failed (%d)\r\n", result);}
}

1.4.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);      //取消挂载}

2、连线
接线如下:

确保SD格式化成FAT文件模式

STM32的供电和SD卡模块的供电最好是5V,不然可能带不动

连接使用的杜邦线尽可能的短,且连线最好紧一点,稍微的松动都可能写入失败(别问!问就是有经验)

可能要等一会才初始化成功,别急(太久就算了,放弃吧!)

3、编译工程并烧录
点击编译按钮进行编译

烧录

使用读卡器打开SD卡可以看到里面生成了一个HELLO.TXT文件

打开该TXT文件没有问题

三 Altium Designer绘制stm32最小系统原理图及stm32+SD卡绘制
新建工程文件
说明:

一个工程项目包括:原理图、PCB、原理图库、PCB库。

首先创建好原理图库,如电阻、电容模型提前绘制好;
之后将绘制好的元器件放在原理图中,进行导线连接、网络标号等;
之后进入PCB库,将原理图绘制的器件映射到电路板中,相当于制作实物模型,尺寸一定要精准,可以1:1对应;
最后在PCB中,进行布线和排版。
打开AD,新建工程文件,设置好文件名及保存路径

在文件中创建项目:原理图、PCB、原理图库、PCB库

打开后保存好,得到如下所示情况。

三、绘制STM32F103C8T6准备
因为是绘制STM32F103C8T6的原理图,这里我直接先去淘宝找了原理图的样子,这样在入门的时候,我们只要照着画就好了。
网盘链接(淘宝商家):https://pan.baidu.com/share/init?surl=ipHs1nPdf6Xq3H_OH5j7DA
提取码:7hqu

四 ,原理图绘制
1、元器件绘制
这里强烈推荐学习该视频(18分钟),了解绘制器件的流程
https://www.bilibili.com/video/BV16t411N7RD?p=5
根据视频讲解,练习如何绘制电阻、电容等元器件。

2、导入现成元器件库
下载原理图库和PCB库
链接:https://pan.baidu.com/s/1s7EwYp18qpeWSuCOlQnwkA
提取码:mlkt

掌握画元器件的流程之后,我们就可以逐步实现整个元器件库的制作,但是由于耗费时间过长,这里我直接根据C8T6所需器件,直接导入相关元器件。


将下表器件从找到的元器件资源库中复制到自己的原理图库中。

操作示例:

ctrl+v到自己的原理图库这里,其他元件也像这样导入就好了

我们可以边绘制原理图,边导入需要的元器件,这样更加节约时间。
每个模块对照进行绘制,可以提高绘图的准确和速度。


注意:多加练习使用快捷键;空格可以实现器件的旋转。

实现镜像旋转的操作:
输入法切换至英文状态,选中该器件后,鼠标左键按住元件不放,鼠标呈十字状,器件为可移动状态。此时按住键盘上的X或Y,X为水平左右翻转;Y为垂直上下翻转。

对原理图进行排版布局。

将各模块分割好之后,根据红色波浪线的提示,进行修改,因为波浪线提示的地方说明有错误有问题,可能是元件名字重了,也可能是线没有连接好等等。

五、绘制STM32+SD卡原理图
1、SD卡模块说明


2、绘制SD卡模块原理图
因为之前的STM32图纸放不下了,重新新建了一个原理图文件
绘制如下,相关器件可以从之前的元器件库导入

3、STM32与SD卡模块之间的连线
根据SD卡模块的设计,可以知道各管脚连线如下:

将之前画好的STM32的CPU搬过来(复制),因为这里连线只需要CPU,就没有将之前的所有模块都复制过来(当然实际工程上放置好需要所有模块)

更改STM32的对应管脚标签,使其与SD卡模块对应即可


六、总结
本次实验搞得我很焦灼,尤其是画图部实在是大脑壳,那些画图软件我根本玩不明白,还好这些东西网上都有教程,最后历经千辛万苦完成了本次作业,感觉多学习一点东西还是有用的。

【小陈睡不醒SD卡数据读取以及Altium Designer绘制stm32最小系统原理图及stm32+SD卡绘制】相关推荐

  1. STM32最小系统|CSDN创作打卡

    文章目录 STM32最小系统的构成 晶振电路 复位电路 电源电路 下载电路 STM32最小系统的构成 晶振电路 晶振在起振的一瞬间会产生电感,为了消除这些电感干扰,会在晶振的两端接入无极性电容(10- ...

  2. 绘制STM32最小系统电路原理图、STM32F103读取SD卡的数据

    绘制STM32最小系统电路原理图.STM32F103读取SD卡的数据 文章目录 绘制STM32最小系统电路原理图.STM32F103读取SD卡的数据 1 AltiumDesigner 软件配置 2 A ...

  3. 运用STM32对SD卡数据读取

    文章目录 一.利用Altium Designer 18绘制原理图 1 Altium Designer 18的安装 1.1 下载和破解 1.2 添加元件库 2 stm32最小系统的电路原理图 3 STM ...

  4. SD卡数据读取Altium Designer下载

    目录 一.SD卡数据读取 1.SD卡简介 2.代码实现 1.所用软件及硬件 2.SD卡实物连线 3.运行 二.Altium Designer下载及原理图绘制 1.Altium Designer软件安装 ...

  5. 绘制一个stm32最小系统的电路原理图;完成STM32+SD卡 的系统原理图设计

    一.实验要求 掌握电路原理图绘制.安装Altium Designer 18,学习使用Altium Designer绘制一个stm32最小系统的电路原理图,并在此基础上完成STM32+SD卡 的系统原理 ...

  6. 用Altium Designer绘制stm32最小系统的电路原理图并完成STM32+SD卡 的系统原理图设计

    目录 一.安装Altium Designe18 二.用AD18绘制stm32最小系统的电路原理图 1.新建工程 2.添加原理图 3.下载并添加元件库 4.绘制芯片模块原理图 4.1 常见的工具栏介绍 ...

  7. STM32对SD卡数据读取和在Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址的对比分析

    一.SD卡协议原理 1.SD卡简介 SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小.数据传输速度快.可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机.平板电脑和多媒体 ...

  8. 苹果电脑win10蓝牙音响卡顿_解决Macbook Pro下Win10双系统蓝牙鼠标无法连接及卡顿...

    最近给公司配的macbook pro装上了双系统,因为原来在parallel desktop跑vs2017实在是太慢了,无奈只能换成了双系统,双系统刚装好,发现一切都好,就是蓝牙鼠标废了,怎么都连不上 ...

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

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

最新文章

  1. OSG的HUD抬头文字显示
  2. python Lambda 表达式
  3. Charm Bracelet(POJ-3624)
  4. 4月1号鸿蒙系统上线,4月1日太关键,鸿蒙迎来正式发布前的最后大考,华为将从此起飞...
  5. 黑客利用智能灯泡窃取用户数据!
  6. [再寄小读者之数学篇](2014-05-27 矩阵的迹与 Jacobian)
  7. OpenGL基础8:SOIL库
  8. tomcat是一个应用服务器
  9. Android聊天软件开发(基于网易云IM即时通讯)——环境搭建(一)
  10. 【Kaggle 教程】Data Visualization 数据可视化-画图-各种图
  11. 手机打不开html,如何解决手机浏览器打不开网页的问题,原来是这样的
  12. 完美国际真数苹果_苹果手机:Checkm8漏洞永久性破解A5-A11设备 全线旧设备实现完美越狱...
  13. SQL 存储过程 超市小票打印
  14. UR机器人装箱姿态_ur机器人坐标系说明来了,感兴趣的朋友可以看看
  15. c语言调用c 的库,C语言程序调用C库函数方法
  16. 为什么对渣土车的监控和管理如此重要
  17. is 简写 缩写_学会这些英语缩写,不用再对手机上老外发来的单词发懵啦
  18. Bash shell(二)-变量的丰富功能
  19. 方正无盘服务器,方正科技改革大学图书馆电子阅览室
  20. 万兴PDF程序安装及注意事项

热门文章

  1. 蓄电池内阻、电压及温度在线监测系统应用方案
  2. 安卓盒子装mysql_IT入门必备 篇二:安卓盒子改造六核web服务器
  3. 基于单片机的步进电机调速系统设计(#0509)
  4. kylin OS 软件源
  5. Windows 7 更新补丁(解决无法安装Axure RP 9)亲测可用
  6. SAP PP工艺路线主数据概念
  7. 大数据领域各职业介绍与发展路线
  8. 基于Intel E5V4计算刀片的RapidIO性能测试
  9. 学校报告厅无线覆盖解决方案
  10. python字符串解密代码_几种字符串加密解密的方法