天天看点

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

目录

概述

硬件

SDIO

初始化    

SD卡

FATFS

测试

最后

概述

         本文主要是基于V2库的sdio fatfs读写sd卡。

         串口工具使用的Atlink自带的串口功能。

         工程建立、调试工具配置在前面章节有详细介绍。

硬件

        硬件方面使用的是自己画的板子,主控使用的AT32F403ARCT7,外设方面有usart2、usart3、can1、can2、spi、iic、usb、sdio;usart接的是max485的芯片;can的收发芯片都是sit1050(芯力特国产品牌,可替换tja1050);spi的是接了一颗W25Q128,16M的容量;iic接的是一颗AT24C04;sdio可插sd卡。仿真口以及串口1则使用的ATLINK的接口定义,直接使用ATLINK插上即可。usart2和usart3的485芯片,可以通过跳线帽对接起来;can1和can2也是一样。

        led2-4三个led的控制io分别是PC2/3/5,sd卡插在板子的背面。 

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

SDIO

         AT32F403A的SD/SDIO MMC 卡主机模块(SDIO)在 AHB 外设总线和多媒体卡(MMC)、SD 存储卡、SDIO 卡间提 供了操作接口。

         主要特点:

                   与 SD 储存卡 2.0 规格版本全兼容

                   与 SDI/O 卡 2.0 规格版本全兼容并支持 1 位和 4 位数据总线模式

                   与多媒体卡 4.2 规格版本全兼容并支持 1 位、4 位和 8 位数据总线模式

                   支持 DMA 传输

                   8 位总线模式下数据传输速率可达 50 MHz。

         注意:SDIO 并不兼容 SPI 的通信模式,并且在同一时间内只能支持一个 SD/SDIO/MMC 4.2 卡。

初始化    

         本文使用的AT32403ARCT7的SDIO1接口通过fatfs文件系统对SD卡进行读写操作,使用的IO分别为PC8、PC9、PC10、PC11、PC12、PD2,均设置为复用推挽输出。

         驱动以及测试代码主要是从bsp里面获取的,本文主要是对部分关键代码的说明,以及使用。

         初始化部分分为SD卡初始化和fatfs系统的初始化,其中fatfs的初始化是包含了sd卡的初始化的。

         对于fatfs系统来说主要的就是的修改,里面包含底层硬件初始化,底层的读写以及磁盘扇区大小、块大小等等。

         此例子的底层硬件初始化那就是sd卡的初始化。底层读写则是sd卡的读写,磁盘扇区等这些则是sd卡的相关参数,sd卡的参数可以从sd中里面获取到。sd卡的相关信息的结构体为sd_card_info_struct_type,初始化完后,可以读出数据到整个结构体里面。

SD卡

         Sd卡初始化部分,包含IO初始化,初始化卡,卡的初始化的速度是要在400k以下,获取卡的信息到结构体中,然后设置卡的速度、通讯模式(dma还是轮询)以及通讯位宽。

         IO初始化:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         初始化sd卡:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

        获取卡信息:     

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         设置卡的通讯速度:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         设置通讯模式:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         设置位宽:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         中断设置:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         Dma配置:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         当需要修改为其他的sdio口的时候,IO口,sdio口,dma配置,中断设置都需要修改。

FATFS

        本文是把sd卡作为磁盘1来操作,所以在fatfs的底层diskio.c文件中,要在磁盘1的初始化、状态、读、写、块参数中添加sd的相对于功能函数。DEV_MMC的值为1。

        fatfs初始化:  

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         状态:磁盘1直接返回0 

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         写:  

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         读:

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         块信息设置:   

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         当这些都正常后就可以使用fatfs文件系统来操作文件.

测试

         测试代码

         先挂载磁盘1,挂载成功后,对磁盘进行文件的打开、写、读、关闭操作,打印磁盘的容量,最后对比读出和写入的数据。

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

         测试结果

         对比数据成功通过,测试ok。

第二十八章 AT32F403A基于V2库 sdio fatfs读写sd卡概述硬件SDIO初始化    测试最后

最后

         有问题的可以加QQ群技术交流,同时相关代码上传到QQ群中。