MSP430 SD卡SPI读写操作(4) —— FatFs文件系统实现(以MSP430F5438A为例)

本节介绍MSP430F5438A FatFs文件系统的移植。

FatFs是一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统。FatFs模块与IO是分开的,因此移植时需要实现下面几个底层函数:

DSTATUS disk_initialize (BYTE drv); //初始化存储器
DSTATUS disk_status (BYTE drv); //获取存储器状态
DRESULT disk_read (BYTE drv, BYTE* buff, DWORD sector, UINT count); //读存储器
DRESULT disk_write (BYTE drv, const BYTE* buff, DWORD sector, UINT count); //写存储器
DRESULT disk_ioctl (BYTE drv, BYTE ctrl, void* buff); //额外功能
DWORD get_fattime (void); //获取时间(此函数可以没有,和FatFs模块配置有关)

根据不同的处理器平台,需要修改 integer.h 相应的数据类型定义。
修改 ffconf.h 可以配置FatFs的功能。

下面是本人实现的MSP430F5438A平台的移植,使用官方函数库msp430_driverlib_2_60_00_02,使用IAR for msp430 6.3通过编译。

本节代码对SD卡进行了区分,程序在金士顿 8GB SDHC microSD卡经过验证可以正常运行。


diskio.h

/*-----------------------------------------------------------------------/
/  Low level disk interface modlue include file   (C)ChaN, 2014          /
/-----------------------------------------------------------------------*/
 
#ifndef _DISKIO_DEFINED
#define _DISKIO_DEFINED
 
#ifdef __cplusplus
extern "C" {
#endif
 
#include "integer.h"
 
 
/* Status of Disk Functions */
typedef BYTE    DSTATUS;
 
/* Results of Disk Functions */
typedef enum {
    RES_OK = 0,     /* 0: Successful */
    RES_ERROR,      /* 1: R/W Error */
    RES_WRPRT,      /* 2: Write Protected */
    RES_NOTRDY,     /* 3: Not Ready */
    RES_PARERR      /* 4: Invalid Parameter */
} DRESULT;
 
#define SD_INIT_CLK 125000
#define SD_HIGH_CLK 3125000
#define SD_CS_PORT GPIO_PORT_P9
#define SD_CS_PIN  GPIO_PIN0
 
/* MMC/SD command (SPI mode) */
#define CMD0 (0)           /* GO_IDLE_STATE */
#define CMD1 (1)           /* SEND_OP_COND */
#defi
  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值