硬件准备

ADSP-EDU-BF533:BF533开发板
AD-HP530ICE:ADI DSP仿真器

软件准备

Visual DSP++软件

硬件链接

功能介绍

代码实现了通过文件系统读取 SD 卡上的文件,并对文件和文件夹做读、写、删除、建立、文件列表、文件搜索等功能,代码以将文件系统和 SD 卡驱动挂载在一起,直接运行代码可对格式化过的 SD 卡进行文件建立等操作。

编译运行代码,代码会对 SD 卡根目录下的文件进行文件列表,然后将第一个文件进行复制,并保存为“2.txt”,通过计算机可以查阅复制的文件。

代码使用说明

工程下有两个文件夹:bf53x_sd_mmc_lib 和 fat32_lib 。 这两个文件夹分别是 SD 卡驱动的库源代码和文件系统的库源代码,直接运行这两个文件夹下的工程,会在各自的 DEBUG 文件夹下生成*.dlb 文件,这个文件就是库文
件。在工程文件夹的根目录下,已经有这两个库文件,这两个库文件被 BF53x_SD_FS.dpj 工程调用,实现文件系统功能。

SD 卡速度的配置:
void MMC_HardwareInitial(void)
{
*pFIO_DIR = PF2;
*pFIO_FLAG_S = PF2;
*pSPI_FLG = FLS2;
*pSPI_BAUD = 4;
*pSPI_CTL = 0x0000;
*pSPI_CTL = 0x0001 | MSTR ;
*pSPI_CTL = (*pSPI_CTL | SPE);
}

修改*pSPI_BAUD 的值进行配置,当为 2 时,速度最快,配置值不能小于 2。

当使用 SD 卡时,需通过 CPLD 打通 SD 卡链路,配置如下:

*pDEVICE_OE = ~SD_SEL;

文件列表函数:将“/”目录下所有文件和文件夹进行列表,并将文件和文件夹的名称和数量存入指定数组。

scan_files(“/”,file_name,file_count,dir_name,dir_count);

代码调试步骤

  1. 将 SD 卡格式化,并在 SD 卡根目录下存一些.txt 文件。
  2. 将 SD 卡插入开发板的 SD 卡接口,编译并运行代码。
  3. 待代码运行完成后,将 SD 卡插入计算机,查看建立的 2.txt 文件。

调试结果

在 SD 卡根目录下将文件列表的第一个文件行复制并将文件名改为 2.txt。

程序源码

cpu.c

#include <cdefBF533.h>

void Init_SDRAM(void)
{
*pEBIU_SDRRC = 0x00000817;
*pEBIU_SDBCTL = 0x00000013;
*pEBIU_SDGCTL = 0x0091998d;
ssync();
}

void Init_EBIU(void)
{
*pEBIU_AMBCTL0 = 0x7bb07bb0;
*pEBIU_AMBCTL1 = 0xffc07bb0;
*pEBIU_AMGCTL = 0x000f;
}

void Set_PLL(int pmsel,int pssel)
{
int new_PLL_CTL;
*pPLL_DIV = pssel;
asm(“ssync;”);
new_PLL_CTL = (pmsel & 0x3f) << 9;
*pSIC_IWR |= 0xffffffff;
if (new_PLL_CTL != *pPLL_CTL)
{
*pPLL_CTL = new_PLL_CTL;
asm(“ssync;”);
asm(“idle;”);
}
}

diskio.c

#include <cdefBF533.h>
#include “diskio.h”

void MMC_HardwareInitial(void)
{
*pSPI_FLG = FLS2;
*pSPI_BAUD = 550;
*pSPI_CTL = 0x0000;
*pSPI_CTL = 0x0001 | MSTR ;
*pSPI_CTL = (*pSPI_CTL | SPE);
}

DSTATUS disk_initialize ()
{
MMC_HardwareInitial();
MMC_Init();
return 0;
}

DSTATUS disk_shutdown ()
{
return 0;
}
DSTATUS disk_status ()
{
return 0;
}

DRESULT disk_read (BYTE buff, DWORD sect, BYTE cnt)//cnt = sector num
{
while(cnt–){
MMC_read_sector(sect,buff);
sect += 1;
buff += 512;
}
return 0;
}
#ifndef _READONLY
DRESULT disk_write (const BYTE
buff, DWORD sect, BYTE cnt)
{
while(cnt–){
MMC_Write_sector(sect,buff);
sect += 1;
buff += 512;
}
return 0;
}
#endif

main.c

#include <cdefBF533.h>
#include <stdio.h>
#include “ff.h”

FIL infile, outfile;
unsigned char buff[0x1000];
unsigned char file_name[100][12];
unsigned char dir_name[50][12];
int file_count[1];
int dir_count[1];

int main()
{
int i;
FRESULT retval = 0;
WORD lenth;

Set_PLL(16,4);
Init_EBIU();SD_Enable();
f_mountdrv();scan_files("/",file_name,file_count,dir_name,dir_count);
for(i=0;i<file_count[0];i++)printf("find file is :%s\n",file_name[i]);for(i=0;i<dir_count[0];i++)printf("find Dir is :%s\n",dir_name[i]);       retval = f_open(&infile, file_name[1], FA_OPEN_ALWAYS | FA_READ);
if (retval != 0){printf("can't open file\n");exit(-1);
}
retval = f_open(&outfile, "/2.txt", FA_CREATE_ALWAYS | FA_WRITE);
if (retval != 0){printf("can't open file\n");exit(-1);
}f_read(&infile, buff, 0x200000, &lenth);
f_write(&outfile, buff, lenth, &lenth);f_close(&infile);
f_close(&outfile);return 0;

}

ADI Blackfin DSP处理器-BF533的开发详解28:SD卡的文件系统(含源码)相关推荐

  1. ADI Blackfin DSP处理器-BF533的开发详解66:MP3解码(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 代码实现功能 代码实现了读取工程目录下的一个 ...

  2. ADI Blackfin DSP处理器-BF533的开发详解1:软件和硬件的准备

    BF533是ADI Blackfin系列DSP处理器里的最经典型号,这个DSP我用了20年,单就这一颗DSP来讲,我相信国内应该没有比我更资深的了,下面就来说一说这颗DSP. 这颗IC是Blackfi ...

  3. ADI Blackfin DSP处理器-BF533的开发详解3:GPIO(含源代码)

    我们从最基础的GPIO开始,先讲外设,这玩意不管是单片机,还是ARM,又或是FPGA,甚至SOC的芯片,都有GPIO,有共性,就好理解,让我们看看在ADI的DSP里头,GPIO是怎么一回事吧. 硬件准 ...

  4. ADI Blackfin DSP处理器-BF533的开发详解58:DSP控制ADXL345三轴加速度传感器的应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  5. ADI Blackfin DSP处理器-BF533的开发详解60:DSP控制ADXL345三轴加速度传感器-电子水平仪(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 MEMS三轴加速度传感器 我做了一个三轴加速度 ...

  6. ADI Blackfin DSP处理器-BF533的开发详解21:RTC实时时钟的原理及应用(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 ADSP-BF53x ...

  7. ADI Blackfin DSP处理器-BF533的开发详解55:CVBS输入-DSP和ADV7180的应用详解(含源码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 CVBS IN 视频输入 硬件实现原理 CVB ...

  8. ADI Blackfin DSP处理器-BF533的开发详解25:USB接口设计(含源代码)

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 硬件设计原理图 功能介绍 跟网口一样,USB这 ...

  9. ADI Blackfin DSP处理器-BF533的开发详解80:uClinux在BF上的应用详解

    硬件准备 ADSP-EDU-BF533:BF533开发板 AD-HP530ICE:ADI DSP仿真器 软件准备 Visual DSP++软件 硬件链接 Blackfin可以跑操作系统,因为他作为一个 ...

最新文章

  1. [JavaScript] 日期时间戳的使用与计算
  2. python 集合
  3. HOWTO:如何在代码中获取安装包目标机上的Windows Installer(MSI)版本
  4. uniapp实战项目仿糗事百科_项目设计最好用的底层思考模型——黄金圈
  5. sqlserver日期dateadd及STUFF等应用
  6. Struts2入门(二)——配置拦截器
  7. 学习笔记:MySQL字符串类型
  8. 点击MSFlexGrid数据控件的标题进行数据排序
  9. 常见NetBackup通讯问题及排错一般步骤
  10. js tooltip之wz_tooltip使用方法和参数备忘
  11. jms.jar 2.0_JMS API 2.0生产者和使用者
  12. windows 10安装python2.7、python3.6并配置环境变量
  13. 帮你躲坑:pip install tensorflow 报错怎么办,import tensorflow 报错怎么办?
  14. valgrind--CPP程序内存泄露检查工具
  15. 简易鼠标模拟器 python
  16. mysql修改字段的名称类型_MySQL修改字段名和字段数据类型
  17. 怎么判断二阶导数是否异号_二阶导数判断凹凸性 二阶导数怎么判断凹凸
  18. 力扣刷题 DAY_71 回溯
  19. 软考岗位设置与岗位描述
  20. Typora:明明保存了,但是却内容丢失了

热门文章

  1. Win10系统打开便签便利贴工具的方法
  2. PLC对模拟量信号是如何转换的?
  3. 电脑硬盘分区太多?分区合并有方法!
  4. 中国软件网 给大家拜年啦:辞旧迎新,新春喜乐!
  5. 通过微信模板消息跳转到小程序
  6. 根据cadence设计图学习硬件知识day05 了解一些芯片
  7. Day 31 - 使用 Amazon API Gateway 上传图片到 S3
  8. 【项目】健康项目day7总结
  9. Python解决文本分析问题,以酒店评价数据分析为例
  10. mc服务器皮肤和别人显示一样,我的世界获得别人皮肤,国际自制皮肤怎么让别人看到...