【小陈睡不醒SD卡数据读取以及Altium Designer绘制stm32最小系统原理图及stm32+SD卡绘制】
一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卡绘制】相关推荐
- STM32最小系统|CSDN创作打卡
文章目录 STM32最小系统的构成 晶振电路 复位电路 电源电路 下载电路 STM32最小系统的构成 晶振电路 晶振在起振的一瞬间会产生电感,为了消除这些电感干扰,会在晶振的两端接入无极性电容(10- ...
- 绘制STM32最小系统电路原理图、STM32F103读取SD卡的数据
绘制STM32最小系统电路原理图.STM32F103读取SD卡的数据 文章目录 绘制STM32最小系统电路原理图.STM32F103读取SD卡的数据 1 AltiumDesigner 软件配置 2 A ...
- 运用STM32对SD卡数据读取
文章目录 一.利用Altium Designer 18绘制原理图 1 Altium Designer 18的安装 1.1 下载和破解 1.2 添加元件库 2 stm32最小系统的电路原理图 3 STM ...
- SD卡数据读取Altium Designer下载
目录 一.SD卡数据读取 1.SD卡简介 2.代码实现 1.所用软件及硬件 2.SD卡实物连线 3.运行 二.Altium Designer下载及原理图绘制 1.Altium Designer软件安装 ...
- 绘制一个stm32最小系统的电路原理图;完成STM32+SD卡 的系统原理图设计
一.实验要求 掌握电路原理图绘制.安装Altium Designer 18,学习使用Altium Designer绘制一个stm32最小系统的电路原理图,并在此基础上完成STM32+SD卡 的系统原理 ...
- 用Altium Designer绘制stm32最小系统的电路原理图并完成STM32+SD卡 的系统原理图设计
目录 一.安装Altium Designe18 二.用AD18绘制stm32最小系统的电路原理图 1.新建工程 2.添加原理图 3.下载并添加元件库 4.绘制芯片模块原理图 4.1 常见的工具栏介绍 ...
- STM32对SD卡数据读取和在Ubuntu、stm32下的C程序中堆、栈、全局、局部等变量的分配地址的对比分析
一.SD卡协议原理 1.SD卡简介 SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小.数据传输速度快.可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机.平板电脑和多媒体 ...
- 苹果电脑win10蓝牙音响卡顿_解决Macbook Pro下Win10双系统蓝牙鼠标无法连接及卡顿...
最近给公司配的macbook pro装上了双系统,因为原来在parallel desktop跑vs2017实在是太慢了,无奈只能换成了双系统,双系统刚装好,发现一切都好,就是蓝牙鼠标废了,怎么都连不上 ...
- STM32+SD卡的原理图绘制以及用32完成对SD卡的数据读取(fat文件模式)
目录 一.下载安装AD 1.1安装方法一 1.2安装方法二 二.绘制STM32最小系统原理图 2.1元件库 2.2新建工程 2.3绘制原理图 三.SD卡协议原理 3.1SD卡简介 3.2SD卡接口 3 ...
最新文章
- OSG的HUD抬头文字显示
- python Lambda 表达式
- Charm Bracelet(POJ-3624)
- 4月1号鸿蒙系统上线,4月1日太关键,鸿蒙迎来正式发布前的最后大考,华为将从此起飞...
- 黑客利用智能灯泡窃取用户数据!
- [再寄小读者之数学篇](2014-05-27 矩阵的迹与 Jacobian)
- OpenGL基础8:SOIL库
- tomcat是一个应用服务器
- Android聊天软件开发(基于网易云IM即时通讯)——环境搭建(一)
- 【Kaggle 教程】Data Visualization 数据可视化-画图-各种图
- 手机打不开html,如何解决手机浏览器打不开网页的问题,原来是这样的
- 完美国际真数苹果_苹果手机:Checkm8漏洞永久性破解A5-A11设备 全线旧设备实现完美越狱...
- SQL 存储过程 超市小票打印
- UR机器人装箱姿态_ur机器人坐标系说明来了,感兴趣的朋友可以看看
- c语言调用c 的库,C语言程序调用C库函数方法
- 为什么对渣土车的监控和管理如此重要
- is 简写 缩写_学会这些英语缩写,不用再对手机上老外发来的单词发懵啦
- Bash shell(二)-变量的丰富功能
- 方正无盘服务器,方正科技改革大学图书馆电子阅览室
- 万兴PDF程序安装及注意事项