绘制STM32最小系统电路原理图、STM32F103读取SD卡的数据
文章目录
1 AltiumDesigner 软件配置
- 安装连接:百度网盘
提取码:fnr9 - 解压——安装包——双击打开AltiumDesigner18Setup.exe——
利用AD软件,完成以下任务
用Altium Designer绘制一个stm32最小系统的电路原理图,并在此基础上完成STM32+SD卡 的系统原理图设计。
2 AltiumDesigner 绘制STM32最小系统原理图
2.1 建立工程文件
- File——New——Project——PCB Project
(记得将工程保存在文件夹下。)
- File——New——Project——PCB Project——Schematic
- 导入元件库:右上角“库”——Libraries——可用库——右下角“添加库”——选指定的元件库——打开。
2.2 基本绘制方法
- 选择芯片,将其拖入界面(STM32C8T6)。要放置其余原件也是类似方式。
- 延长引脚线,设置标签。
- 点击原件,按空格键可以旋转 90°。
2.3 绘制其余模块
系统供电稳压
调试JTAG、SW模块
复位模块
I/O接口
扩展供电接口
STM32USB
数据存储E2
OLED
STM32
3 AltiumDesigner 绘制STM32+SD卡原理图
如图示STM32F103CT6 和 SD 卡的原理图。
4 SD卡概述
4.1 SD 卡简介
SD存储卡是一种基于半导体快闪记忆器的新一代记忆设备,由于它体积小、数据传输速度快、可热插拔等优良的特性,被广泛地于便携式装置上使用,例如数码相机、平板电脑和多媒体播放器等。
4.2 SD 卡模块结构
各个部分的功能:
一共有6个接口,分别是GND,VCC,CS,SCK,MOSI,MISO。VCC是供电,GND是接地。其他4根是SPI通讯时用的,CS是片选,SCK是时钟信号,MOSI为主输出从输入,MISO为主输入从输出。
4.3 SD 卡的寄存器
名称 | 宽度 | 描述 |
---|---|---|
CID | 128 | 卡标识寄存器 |
RCA | 16 | 相对卡地址寄存器:本地系统中卡的地址,动态变化,在卡的初始化时确定。(SPI模式中没有) |
CSD | 128 | 卡描述数据寄存器:卡操作条件相关的信息数据 |
SCR | 64 | SD配置寄存器:SD卡特定信息数据 |
OCR | 32 | 操作条件寄存器 |
4.4 SD 卡操作
-
SD卡初始化过程(知道 SD 卡的类型V1、 V2、 V2HC 或者 MMC):
初始化与 SD 卡连接的硬件条件(MCU 的 SPI 配置, IO 口配置); 上电延时(>74 个 CLK)(因为 SD 卡内部有个供电电压上升时间,大概为 64 个 CLK,剩下的 10 个 CLK 用于 SD 卡同步,之后才能开始 CMD0 的操作); 复位卡(CMD0),进入 IDLE 状态; 发送 CMD8,检查是否支持 2.0 协议; 根据不同协议检查 SD 卡(命令包括: CMD55、 CMD41、 CMD58 和 CMD1 等); 取消片选,发多 8 个 CLK(提供 SD 卡额外的时钟,完成某些操作),结束初始化;
-
SD卡读取数据(CMD17):
发送 CMD17; 接收卡响应 R1; 接收数据起始令牌 0XFE; 接收数据; 接收 2 个字节的 CRC,如果不使用 CRC,这两个字节在读取后可以丢掉。 禁止片选之后,发多 8 个 CLK;
-
SD卡写数据(CMD24):
发送 CMD24; 接收卡响应 R1; 发送写数据起始令牌 0XFE; 发送数据; 发送 2 字节的伪 CRC; 禁止片选之后,发多 8 个 CLK;
5 SD卡数据读取实作
用STM32F103完成对SD卡的数据读取(fat文件模式)。
5.1 源代码
工程文件连接:
百度网盘
提取码:e63q
-
main函数中修改文件名以及输出内容
int main(void) { /* USER CODE BEGIN 1 */ /* USER CODE END 1 */ /* MCU Configuration--------------------------------------------------------*/ /* Reset of all peripherals, Initializes the Flash interface and the Systick. */ HAL_Init(); /* USER CODE BEGIN Init */ /* USER CODE END Init */ /* Configure the system clock */ SystemClock_Config