SD卡有两个可选的通信协议:SD模式和SPI模式。为了电路和程序的简化,选用SPI模式。ZC09的SD与STM32通过SPI1连接。因为STM32内部集成了SPI控制器,所以只需简单的配置,就能实现SPI时序。
一、配置SPI1控制器
1、首先要打开SPI1的时钟,并且要打开SPI1信号线所在GPIO口的时钟。由于SPI1的信号线是在GPIOA上,所以用以下代码打开所需要时钟。这里要注意的是,打开SPI1和GPIOA 最好一起打开,因为本人试过先打开SPI1的时钟,然后再相隔了几行代码后才打开GPIOA的时钟,这样导致SD卡操作失败。
2、将GPIOA的5、6、7脚配置为复用推挽输出、50MHz 。
3、SD卡的使能脚直接连接到STM32的GPIOB的15脚上,所以也想对此脚进行配置。
4、接下来是配置SPI1控制器,根据SD卡的数据手册,配置SPI1控制器的寄存器。
5、配置好后就可以启动SPI1控制器。
二、编写其它SPI驱动
1、由于SD上电后的操作是处于低速模式下的,所以SD卡上电后的操作必需在小于400kHz,因此我们要写一个可以设置SPI速度的接口。
2、SPI读写驱动
关键字:STM32 SPI驱动 SD卡
引用地址:
STM32_SPI驱动分析(SD卡)
推荐阅读最新更新时间:2024-03-16 16:11
STM32 SWD下载出现no target connect解决方法
一、问题再现 二、问题原因 程序中把 swd 下载那两个下载引脚给复用了,然后st-link 就无法通过下载引脚,连接你的单片机了,所以就显示无法检测到目标。 三、解决方法 第一种: STEP1: BOOT0引脚拉高使用ISP下载模式. STEP2: 用STM32 ST-LINK Utility连接芯片,然后Target- Erase Chip。 STEP3: 再次进入keil界面,拉低BOOT0,点击LOAD即可下载! 第二种: 可以按住复位按键,单击下载 然后立即松开复位 就可以下载程序。 这是单片机启动过程 单片机上电复位后执行的是内部的启动程序 还没有执行你 自己的程序 所以开始都是默认状
[单片机]
SD卡简介(SDIO方式)
一。 SD卡的常用寄存器 SDIO可以带多个SD卡,通过RCA(相对卡地址寄存器)可以确定要访问哪个卡。 二。 SD卡初始化流程 通过初始化后就可以区分出四种卡。 VHS的四位一般设置为0001b。所以CMD8指令一般参数为0x1AA。 对于2.0的卡,CCS=1为SDHC的卡,CCS=0为SDSC的卡,对于1.0的卡忽略该位。 三。 SD卡单块数据块读取流程 四。SD卡多块数据块的读取流程 五。 SD卡单块写数据块流程 六。 SD卡多块数据块写入流程 这里重点看“card status”位,SD卡的状态。
[单片机]
IAR EW6.30版本下建立STM32工程(芯片型号STM32F105VC)
参考博客及文档有: 1,http://www.cnblogs.com/ele-eye/archive/2011/11/28/2266229.html 2,http://www.cnblogs.com/king-77024128/articles/2512997.html(CMSIS介绍) 3, http://wenku.baidu.com/link?url=2blE__GxI1lmJglihBi5xJQPolza-NMxcZqGThxwysiY80ZOe6hLl5k6mowbTN2j30WsPftFZsBe1pRt8WlCDIT7Ce5EIReo4uGCEyegh7S(IAR 新建 STM32工程) 4,
[单片机]
STM32单片机对正交编码器的驱动
STM32正交编码器驱动,引入(突变)带进位的位置环和速度环 #include “stm32f10x.h” #include “stm32f10x_encoder.h” #include “sys.h” #include “usart.h” #include “led.h” #define COUNTER_RESET(u16)0 #define ICx_FILTER(u8) 0 // 6《-》 670nsec #define TIMx_PRE_EMPTION_PRIORITY 1 #define TIMx_SUB_PRIORITY 0 //#define MAX_COUNT ENCODER_TIM_PERIOD/2 volat
[单片机]
STM32的GPIO口的8种配置模式
一、 STM32的输入输出管脚有下面8种(4输入+2输出+2复用输出)可能的配置: ① 浮空输入_IN_FLOATING ② 带上拉输入_IPU ③ 带下拉输入_IPD ④ 模拟输入_AIN ⑤ 开漏输出_OUT_OD ⑥ 推挽输出_OUT_PP ⑦ 复用功能的推挽输出_AF_PP ⑧ 复用功能的开漏输出_AF_OD 1.1 I/O口的输出模式下,有3种输出速度可选(2MHz、10MHz和50MHz),这个速度是指I/O口驱动电路的响应速度而不是输出信号的速度,输出信号的速度与程
[单片机]
STM32单片机的PSAM卡驱动模块设计
引言 刷卡消费随着人们生活水平的提高已经成为常用的支付方式之一。为了保证刷卡消费的安全性,将PSAM卡内嵌于各种终端刷卡设备中。PSAM(Purchase SecureAccess Module,销售点终端安全存取模块),由IC卡发行主管部门或者应用主管机构发行,是可以用于对IC卡进行脱机消费交易认证的安全认证卡,主要应用于商用POS、网点终端、直连终端等设备上,支持多级发卡机制,适用于多应用的环境,符合识别卡、带触点的集成电路卡标准、ISO/IEC 7816—1/2/3/4以及《中国人民银行PSAM卡规范》。 1 PSAM卡简介 PSAM卡是接触式CPU卡的一种。CPU卡也称智能卡,卡内集成电路带有微处理CPU,存储
[单片机]
STM32 DMA串口发送模式配置及使用简单分享
赠人玫瑰,手有余香;很感谢网上其他楼主的分享;我这个贴子是关于STM32 DMA USART 发送模式的调试分享,我为什么要建这个帖子呢,因为我不想看到还有其他人跟我一样,为了调通DMA串口,而花上大半天的时间,这很不利于大家高效率的开发,网上的经验都是从头教到尾的,内容极多,对于有点小经验的人,或者是想很快达到目的的人,这个很不适合他们;我的这个很简单(本帖不适合不熟悉配置STM32串口的玩家),他只是说串口的DMA怎么配置,还有我用的是DMA1_通道4,因为我的是串口1的TX长话短说:直接po代码: DMA_InitTypeDef DMA_InitStruct; //DMA类型声明 RCC_AHBPeriphC
[单片机]
STM32学习手记:数据的保存与毁灭
从51开始,单片机玩了很长时间了,有51,PIC,AVR等等,早就想跟潮流玩玩ARM,但一直没有开始,原因-----不知道玩了ARM可以做什么(对我自己而言)。如果为学习而学习,肯定学不好。然后cortex-m3出来了,据说,这东西可以替代单片机,于是马上开始关注。也在第一时间开始学习,可惜一开始就有点站错了队,选错了型(仍是对我自己而言)。我希望这种芯片应该是满大街都是,随便哪里都可以买得到,但我选的第一种显然做不到。为此,大概浪费了一年多时间吧,现在,回到对我来说是正确的道路上来啦,边学边写点东西 这里写的是我的学习的过程,显然,很多时候会是不全面的,不系统的,感悟式的,甚至有时会是错误的,有些做法会是不专业的。
[单片机]