stm32 sd

SD初始化-> SD擦除数据->SD写数据->SD读数据-> SD读写数据比较。

1. sd初始化  BSP_SD_Init();

    1.1 BSP_SD_MspInit

            CLK,引脚,DMA初始化

   1.2 HAL_SD_Init

         1.2.1 SDIO_Init

                  SD功能初始化,CLK, 位宽, 流控等初始化

         1.2.2 SD_PowerON

                  > send CMD0 ,NO RESP

                  > send CMD8 ,RESP7

                  >  send ACMD41 with Argument 0x80100000, first send CMD55 ; 知道卡的容量大小类型。

        1.2.3 SD_InitCard

                 > send CMD2,get CID info from RESP1/2/3/4, CID[4];

                 > send CMD3, get SD卡的RCA值

                 > send CMD9, 读取CSD寄存器获取卡的相关信息

                     。get Card CLASS and CSD parameters,其中CLASS可以知道卡支持的命令。

                 > send CMD7, sel and desel cmd.

                 > SDIO_Init ; 为什么还需要初始化。。-> 配置高速时钟,准备数据传输。

       /*

         以下内容摘抄与别处,未在stm32 库中发现:

             > 发送CMD55+ACMD51读取SCR寄存器,SD卡可以通过该值获得位宽,如果是MMC卡则需要使用主线测试来确定卡的位宽。

             > SD卡发送CMD55+ACMD6配置为4bit数据传输模式(根据SCR读出来的值确定),MMC卡发送CMD6来设置位宽

            > 发送CMD7,使能SD卡,使其进入传输状态),接着发送CMD16设置块大小(根据前面读取的CSD信息确定)。

            > 把命令参数设置为0,再次发送CMD7,取消选中所有卡。

     */

 

 2. SD擦除  BSP_SD_Erase(BLOCK_START_ADDR,  NUM_OF_BLOCKS);

                 > send CMD32, ERASE_GROUP_START

                 > send CMD33, erase_group_end

                 > send CMD38 erase select data area

3. SD 写数据 BSP_SD_WriteBlocks

                > send CMD16 ,set block size

                > if (block_num > 1) send CMD25,write multi block ; else send CMD24, write single block

                > config SD DPSM for data transfer,write SDIOx->DCTRL register

                > write block in polling mode

                       。SDIO_WriteFIFO,write data to SDIO Tx FIFO

                > send CMD12 to stop block data transfer

 4. SD 读数据 

                /*

                 以下内容摘抄与别处,未在stm32 库中发现

                 > 发送CMD7,以卡的相对地址为参数,选中该卡,并使其进入Tran状态

                */

                > send CMD16 ,set block size

                > if (block_num > 1) send CMD18,read multi block ; else send CMD17, read single block

                > read data from read FIFO in polling mode

                > send CMD12,stop data transfer

                > empty fifo and clear all static flags

                /*

                 以下内容摘抄与别处,未在stm32 库中发现

                 > 发送CMD7,以0作为命令参数,取消所有选中

                */

 

                

 

                  

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
STM32 SD2068 是一款由意法半导体公司(STMicroelectronics)生产的微控制器系列产品。该系列产品采用先进的 ARM Cortex-M4 内核,并具有丰富的外设和功能,适用于各种应用领域。 首先,STM32 SD2068 的 ARM Cortex-M4 内核在处理性能和能效方面具有卓越的表现。它采用了高级浮点单元(FPU),使其能够高效地处理浮点运算,并帮助实现更快的数据处理速度和更低的功耗。 其次,STM32 SD2068 提供了多种外设和接口,以满足不同应用的需求。它具有多个通用输入输出(GPIO)引脚,可以用于连接外部传感器、执行控制逻辑等。此外,它还支持多种通信接口,如 SPI、I2C 和 UART 等,使其可以方便地与其他设备进行通信。 另外,STM32 SD2068 内置的存储器和闪存编程能力使其成为一个理想的控制器选择。它具有大容量的闪存存储器,可用于存储应用程序代码和数据。同时,其内部存储器还可以进行编程和擦除操作,便于系统的维护和更新。 最后,STM32 SD2068 提供了丰富的开发工具和软件生态系统,使开发者能够轻松地进行产品开发。意法半导体公司提供了一套成熟的开发工具链和开发板,方便开发者进行代码编写、调试和测试。此外,还有大量的技术文档、应用笔记和代码示例可供参考,帮助开发者快速上手和解决问题。 综上所述,STM32 SD2068 是一款功能强大、性能优越、易用的微控制器产品,适合于各种嵌入式应用和系统设计。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值