| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 嵌入式 -> STM32 HAL库 实现基于SPI模式的SD卡、TF卡FATS文件系统+模拟U盘的应用笔记 -> 正文阅读 |
|
[嵌入式]STM32 HAL库 实现基于SPI模式的SD卡、TF卡FATS文件系统+模拟U盘的应用笔记 |
前言????????很多单片机不带SDIO接口,所以在使用SD卡时必须使用SPI模式进行读写。 ????????想做一个基于SPI的SD卡文件系统读写SD卡上的文件,再配合USB接口做一个模拟U盘。只能利用业余时间慢慢更新,也不知道能不能坚持下去。 ? ? ? ? 我会把从零开始开发一个程序需要经历的过程一一的记录下来。做成一个奶妈级的单片机开发笔记。 ?一、硬件简介? 1.SD卡和MicroSD卡(TF卡)的区别? ? ? ? 由下图可以很容易的看出TF卡只是比SD卡少了一个3脚Vss脚,其它的管脚顺序是完全一样的。MicroSD卡也叫做TF卡,为了方便描述,之后的文章中把SD卡和TF卡统称为SD卡。 ? 2.工作模式? ? ? ? SD卡有两种工作模式,SD BUS模式和SPI模式。SD BUS模式采用4个数据线和1个时钟线。而在SPI模式下,需要1个数据输出线、1个数据输入线、1个时钟线和1个片选线。 ? ? ? ? 本文重点介绍SD卡的SPI工作模式,SD BUS工作模式就不做过多的阐述。 ? 3.硬件电路?? ? ? ? ?SD卡只能使用3.3V的I/O电平,SPI模式下信号线要加10-100K的上拉电阻。下图是SPI模式下的硬件连接方式。 二、编程前的准备工作? 1.SPI端口的配置?????????SD卡的SPI的时钟线空闲时应该为高电平,在时钟的第二边沿也就是时钟线的电平由低变高时采集数据。所以配置SPI的极性和相位时应配置成:CPOL=1,CPHA=1 。 ?????????下面简单解释一下SPI的极性和相位,感觉没必要看的可以直接跳过。 ? ? CPOL极性????????先说什么是SCLK时钟的空闲时刻,其就是当SCLK在发送8个bit比特数据之前和之后的状态,于此对应的,SCLK在发送数据的时候,就是正常的工作的时候,有效active的时刻了。其英文精简解释为:Clock Polarity = IDLE state of SCK。 ????????SPI的CPOL,表示当SCLK空闲idle的时候,其电平的值是低电平0还是高电平1: ????????CPOL=0,时钟空闲idle时候的电平是低电平,所以当SCLK有效的时候,就是高电平,就是所谓的active-high。 ????????CPOL=1,时钟空闲idle时候的电平是高电平,所以当SCLK有效的时候,就是低电平,就是所谓的active-low。 ? ? CPHA相位????????首先说明一点,capture strobe = latch = read = sample,都是表示数据采样,数据有效的时刻。相位,对应着数据采样是在第几个边沿(edge),是第一个边沿还是第二个边沿,0对应着第一个边沿,1对应着第二个边沿。 ????????CPHA=0,表示第一个边沿: ????????对于CPOL=0,idle时候的是低电平,第一个边沿就是从低变到高,所以是上升沿; ????????对于CPOL=1,idle时候的是高电平,第一个边沿就是从高变到低,所以是下降沿; ????????CPHA=1,表示第二个边沿: ????????对于CPOL=0,idle时候的是低电平,第二个边沿就是从高变到低,所以是下降沿; ????????对于CPOL=1,idle时候的是高电平,第二个边沿就是从低变到高,所以是上升沿; ? ? 极性和相位的组合????????CPOL和CPHA,分别都可以是0或时1,对应的组合就是如下四种: ? ? 2.常用命令简介????????SPI命令格式为6字节构成,高位在前(MSB)。 ????????字节1的最高2位固定是01,低6位为命令号(CMD0就是0,CMD16就是16,以此类推);字节2-5为命令参数,有些命令是没有参数的;字节6的高7位为CRC,最低位恒为1。 ? ? ? ? 下表为比较常用的几个命令。
? 3.SD卡的初始化? ? 初始化步骤? ? ? ? ? 1.初始化配置单片机的SPI接口和片选IO口。 ?三、开始编程【视频】? 1.建立工程????????使用CubeMX建立一个工程。 ? ? ? ? 视频地址: ? ? ? ???https://www.bilibili.com/video/BV1mb4y1U7V8?share_source=copy_web ? 2.打造一个自己的调试开发环境? ? ? ? 俗话说得好,工欲善其事必先利其器,没有金刚钻不揽瓷器活。做电子开发没有好的工具或者工具不齐全是非常影响工作效率的。 ? 3.基础函数的编写总结还没有写完,有空再更新。 代码部分很难用一两句文字描述清楚,打算用视频的形式进行分析。 本人不才,请多指教! |
|
嵌入式 最新文章 |
基于高精度单片机开发红外测温仪方案 |
89C51单片机与DAC0832 |
基于51单片机宠物自动投料喂食器控制系统仿 |
《痞子衡嵌入式半月刊》 第 68 期 |
多思计组实验实验七 简单模型机实验 |
CSC7720 |
启明智显分享| ESP32学习笔记参考--PWM(脉冲 |
STM32初探 |
STM32 总结 |
【STM32】CubeMX例程四---定时器中断(附工 |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 23:22:54- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |