您当前的位置:首页 > 今日分享头条 > 正文

STM32内存优化,STM32CubeMx之SD卡驱动

STM32内存优化,STM32CubeMx之SD卡驱动

1.SD卡简介SD存储卡(安全数字存储卡)是基于半导体闪存的新一代高速存储设备。SD存储卡的技术是从MMC(多媒体卡)格式发展而来,SDIO(SD输入/输出)卡是在兼容SD存储卡的基础上发展而来。这种兼容性包括机械、电子、电源、信号和软件,SD和SDIO卡通常称为SD存储卡。SD卡具有存储容量大、数据传输速度快、移动灵活性大和安全性好等特点,广泛应用于数码相机、平板电脑和多媒体播放器等便携式设备中。SD卡支持两种总线模式:SD模式和SPI模式。SD模式采用6线制,使用CLK、CMD、DAT0~DAT3进行数据通信。而SPI采用4线制,使用CS、CLK、DataIn、DataOut进行数据通信。SD模式下的数据传输速度比SPI模式下更快。STM32F103ZE自带SDIO接口驱动,4位模式下最高速度可达24MHZ,8位总线模式下最高速度可达48MHZ。本章将介绍如何使用HAL库驱动SD卡。

2.SDIO SD/SDIO MMC卡主机模块(SDIO)简介提供AHB外设总线与多媒体卡(MMC)、SD存储卡、SDIO卡和CE-ATA设备之间的操作接口。SDIO的主要职能如下:

完全兼容多媒体卡系统规范4.2版。支持三种不同的数据总线模式:1位(默认)、4位和8位。与早期多媒体卡系统规范版本完全兼容(向前兼容)。与早期多媒体卡系统规范版本完全兼容(向前兼容)。完全兼容SD存储卡规范2.0版。它完全兼容SD I/O卡规范2.0版,支持不同的数据总线模式:1位(默认)和4位。完全支持CE-ATA功能(完全兼容CE-ATA数字协议版本1.1)。8位总线模式下数据传输速率可达48MHz。3.硬件接口引脚SDIOSPIDIO _ D2 (PC10)数据线SDIO_D3(PC11)数据线SPI_CS片选SDIO_CMD(PD2)控制线SPI_MOSI主机输出SDIO_SCK(PC12)时钟SPI_SCK时钟线SDIO_D0(PC8)数据线SPI_MISO主机输入SDIO _ D1 (PC8) 4数据线软件设置5代码生成1。对于1的配置。SD初始化,请参考STM32中文参考手册_ v1.0中的20.9.2时钟控制寄存器SDIO_CLKCR

2.SD读写扇区功能为了方便后续的FATFS文件系统移植,我们在这里封装了两个功能:SD卡写扇区和读扇区。

void SD_WriteDisk(uint8_t *buf,uint32_t sector_add,uint 32 _ t cnt){ HAL _ SD _ write blocks(HSD,buf,sector_add,CNT,5000);//标清卡写块while(HAL_SD_GetCardState(hsd)!=HAL _ SD _ CARD _ TRANSFER);//等待数据传输完成}void SD_ReadDisk(uint8_t *buf,uint32_t sector_add,uint 32 _ t cnt){ HAL _ SD _ read blocks(HSD,buf,sector_add,CNT,5000);//标清卡读块while(HAL_SD_GetCardState(hsd)!=HAL _ SD _ CARD _ TRANSFER);//等待数据传输完成}3.主函数uint 8 _ t buf _ tx[4096]=南达科他州卡SDIO驱动硬件抽象层(硬件抽象层的缩写)库配置测试数据STM 32 f 103 zet 6-ver 1.0 uint 8 _ t buf _ rx[4096];MX _ GPIO _ Init();MX _ FSMC _ Init();MX _ SDIO _ SD _ Init();MX _ usart 1 _ UART _ Init();MX _ SPI 2 _ Init();char buff[200];nt 35310 _ Init();//液晶显示器初始化LCD _ Display _ Str(LCD _ WIDTH/2-strlen(南达科他州卡初始化)/2*8,20,16,(u8 *)南达科他州卡初始化,黑色);如果(hsd .状态!=HAL _ SD _ STATE _ READY){ LCD _ Display _ Str(20,40,16,(u8 *)SD初始化错误红色);}else{LCD_Display_Str(20,40,16,(u8 *)SD初始化正常红色);'LCD_Display_Str(20,60,16,(u8 *)卡类型:'红色);如果(hsd .SdCard。CardType==卡_SDHC_SDXC)//2.0告诉卡{ LCD _ Display _ Str(20 8 strlen(卡类型:')*8,60,16,(u8 *)SDHC 红色);}else if(hsd .SD卡。卡类型==卡_ SDSC)//2.0普通卡{ LCD _ Display _ Str(20 8 strlen(卡类型:')*8,60,16,(u8 *)SDSC 红色);}snprintf(buff,sizeof(buff),块大小:%d字节\ n ,hsd .SD卡。块大小);LCD_Display_Str(20,80,16,(u8 *)缓冲区,红色);'snprintf(buff,sizeof(buff),卡容量大小:% .2f GB \ n ,(hsd .SD卡。缸体编号11)/1024.0);LCD_Display_Str(20,100,16,(u8 *)缓冲区,红色);} LCD _ Display _ Str(LCD _ WIDTH/2-strlen(南达科他州数据读写测试)/2*8,130,16,(u8 *)南达科他州数据读写测试,黑色);SD_WriteDisk(buf_tx,100,2);LCD_Display_Str(20,150,16,(u8 *)标清写数据:好红色);SD_ReadDisk(buf_rx,100,3);LCD_Display_Str(20,170,16,(u8 *)标清读数据:好红色);'LCD_Display_Str(20,190,16,(u8 *)数据内容:'红色);LCD_Display_Str(20,210,16,(u8 *)buf_rx,蓝色);

标签:SD卡SDIO


声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时间联系我们修改或删除,谢谢。

上一篇: 楼宇对讲系统(楼宇对讲系统十大品牌)

下一篇: 笔记本电源适配器通用吗(戴尔和惠普的笔记本电源适配器能通用吗)



推荐阅读