IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 嵌入式 -> SD卡数据读取 -> 正文阅读

[嵌入式]SD卡数据读取

一安装 Altium Designer18 并用其绘制 stm32 最小系统的电路原理图


1.下载与安装

?

?

2.文件配置

?打开下载的 AltiumDesigner 软件,选择 license ,选择文件进行保存。

?

?3.绘制 stm32 最小系统的电路原理图


3.1绘制前目标

使用 Altium Designer 绘制一个 stm32 最小系统的电路原理图。

何为stm32 最小系统的电路原理图
最小系统为单片机工作的最低要求,不含外设控制,原理简单,分析最小系统是嵌入式入门的基础。
stm32 最小系统的电路原理图如下,我们的目标就是绘制出下面的原理图。

3.2创建工程

点击?File?->?New?->?Project?->?PCD Project,新建一个 PCD 工程,得到如下界面:

?右击?PCD_Project1.PrjPCB,选择?Add New to Project?->?Schematic,新建一个原理图,等待加载完毕后,得到如下界面:

3.3元件库

将三个元件库加入到里面

3.4绘制开始

?打开的元件库里找到 stm32f103c8t6 芯片,并双击打开,然后点击左将元件放在中间

将所有引脚都延长,可以复制粘贴

?选择下面的元件

3.5绘制结果

STM32芯片

R:Miscellaneous Devices LC.IntLib 元件库中搜索 0805 10k?

stm32 去耦电路?

晶振电路

复位电路?

降压电路

下载方式选择及程序烧录接口

?输入、输出电源

排针

4 SD卡原理图

5.最终原理图STM32C8T6+SD

?

??

二、掌握SD卡协议原理,用STM32F103完成对SD卡的数据读取(fat文件模式)。


sd卡协议

下图是SD卡的体系架构,可以看到内部包含了一系列的寄存器:

SD Memory Card Architecture

各个寄存器的详细信息如下:

SD Memory Card Registers

?SD配置寄存器提供SD卡的特殊特性信息,其大小为64位。该寄存器由厂商编程,主机不能对它进行编程。

1.stm32cube配置

我用的这个芯片

?sys配置

??配置PA4

SPI1

?USART1

?

时钟配置

最后一步?

??2.文件工程配置

?将这两个文件放在本目录下

??添加下面代码、

HAL_UART_Receive_IT(&huart1,&aRxBuffer1,1); 	//enable uart	
 
	printf(" mian \r\n");
 
	Get_SDCard_Capacity();	//得到使用内存并选择格式化

 
		WritetoSD(WriteBuffer,sizeof(WriteBuffer));		
 
		
		
		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);
		}		

?

修改user_diskio.c文件

1.添加头文件 #include "diskio.h" /* Declarations of disk functions */

#include "SDdriver.h"

2.将下面代码放在指定位置,修改函数内容:USER_initialize、USER_status、USER_read、USER_write、USER_ioctl
?

 uint8_t res;
	res = SD_init();//SD_Initialize() 
		 	if(res)//STM32 SPI的bug,在sd卡操作失败的时候如果不执行下面的语句,可能导致SPI读写异常
			{
				SPI_setspeed(SPI_BAUDRATEPRESCALER_256);
				spi_readwrite(0xff);//提供额外的8个时钟
				SPI_setspeed(SPI_BAUDRATEPRESCALER_2);
			}
	if(res)return  STA_NOINIT;
	else return RES_OK; //初始化成功

 switch (pdrv)
	{
		case 0 :
			return RES_OK;
		case 1 :
			return RES_OK;
		case 2 :
			return RES_OK;
		default:
			return STA_NOINIT;
	}

 uint8_t res;
	if( !count )
	{    
		return RES_PARERR;  /* count不能等于0,否则返回参数错误 */
	}
	switch (pdrv)
	{
		case 0:
		    res=SD_ReadDisk(buff,sector,count);	 
				if(res == 0){
					return RES_OK;
				}else{
					return RES_ERROR;
				}                                               
		default:
			return RES_ERROR;
	}

?可以直接下载我后面参考博客的代码。

3.效果展示

参考链接:

(57条消息) SD卡数据读取_m0_61816657的博客-CSDN博客

  嵌入式 最新文章
基于高精度单片机开发红外测温仪方案
89C51单片机与DAC0832
基于51单片机宠物自动投料喂食器控制系统仿
《痞子衡嵌入式半月刊》 第 68 期
多思计组实验实验七 简单模型机实验
CSC7720
启明智显分享| ESP32学习笔记参考--PWM(脉冲
STM32初探
STM32 总结
【STM32】CubeMX例程四---定时器中断(附工
上一篇文章      下一篇文章      查看所有文章
加:2021-12-26 22:21:45  更:2021-12-26 22:24:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/9 15:58:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码