必须吐槽下open1081的接口,最近发现,但凡双排的插口,总会带来无尽的低级错误。比如这次把sd卡插到SPI2里面去了,因为从上往下看,这双排的看着就像一排,直接插了上面那个。呵呵。还对着manual看了半天,一直是fail,中途还拿出来格式化了一下等等。最后才发现。。。。。。
换了口就好了。顺利读写成功。
下面来看看大致流程。首先看包含的头文件。
platform里面有uart的定义,这个是用来输出读写信息的。SPI_MSD_Driver.h里面有两类函数,一个是SPI的读写,另一个是SD卡底层读写驱动,后者建立在前者基础上。
再往上走就是diskio.h。这里面提供的函数就是给主函数和fatfs调用的。比如在sd卡最开始初始化,没有卡时就返回1,初始化成功返回0。
printf("SD Card Initialization:%d\r\n",disk_initialize(0));
然后就是挂载文件系统。
printf("Mounting SD Card:%d\r\n",f_mount(0, &fs));
接下来就要读写操作了。先打印文件信息。因为最开始的时候我格式化过了,所以没有任何信息。为了后续实验,我把audio.wav也copy进去了,这样现在文件夹下有三个文件,顺便新建一个文件夹。回头可以在运行一次看看。同时我们看到windows文件名是不区分大小写的,因此代码中文件名都是小写,新建的结果则是大写的。
最后一个读取文件内容,发现了个小问题,串口打印的提示信息中文件名写的不对,顺手改了,然后编译下载,运行,看新结果。
顺便想说,这MDK512怎么这么容易死机呢!!!
有文件夹的,死了,现象就是读完三个文件名后,就不往下走了
去掉文件夹,上一个中文长文件。ok,但是显示是dos下短文件名的格式,带小辫子的。
使用长文件名,编译没通过,有1-3三个参数,都编译不通过。
短文件名,继续文件夹,英文短文件名,还是死机。说明示例程序中不能有文件夹。