Cyrus 发表于 2012-6-5 15:15:25

直接显示
Initializing SD card...Card failed, or not present
error opening datalog.txt
error opening datalog.txt
error opening datalog.txt
error opening datalog.txt
。。。
这种情况是什么意思?已经按照要求格式化卡了

MicroCao 发表于 2012-9-23 10:46:48

弘版,有FAT32的SD库可用,http://code.google.com/p/sdfatlib/downloads/list

弘毅 发表于 2012-9-23 10:52:28

MicroCao 发表于 2012-9-23 10:46 static/image/common/back.gif
弘版,有FAT32的SD库可用,http://code.google.com/p/sdfatlib/downloads/list

好东东~

MicroCao 发表于 2012-9-23 10:58:28

弘毅 发表于 2012-9-23 10:52 static/image/common/back.gif
好东东~

那劳烦您更新一下教程啦,:lol

弘毅 发表于 2012-9-24 22:13:32

MicroCao 发表于 2012-9-23 10:58 static/image/common/back.gif
那劳烦您更新一下教程啦,

{:soso_e154:} 抽空玩玩更新进去

╰☆_Roke 发表于 2012-9-25 15:28:18

学习学习~~~

shenhaiyu 发表于 2012-9-28 14:15:06

本帖最后由 shenhaiyu 于 2012-9-28 16:12 编辑

弘版,想问个SD库使用的问题。我在使用中发现三个问题不知道怎么解决:

1.SD库默认使用的端口是不是在库中的 Sd2PinMap.h,修改这个里面的内容就可以改默认端口号吧?还有SD库都使用了哪些端口啊?看说明即使不用10号口也要让10号口HIGH输出,这是为什么?

2. 1.0.1的SD库是不是支持FAT32了?看描述是支持的,我简单测试了一下能用,但是不知道下面一条问题是不是由于FAT32引起的。

3.SD卡初始化之后怎么才能确定卡是否还在插槽里?我成功初始化SD卡之后,程序运行过程中再把卡拔下来,程序居然还能继续读写SD卡,于是很想知道如何检测卡是否在插槽里,以及初始化之后如何再次初始化。我测试WaveHC的库就可以多次初始化SD卡,但只能读,没有写功能。而Arduino自带的SD库第二次初始化就出错了。

也希望有熟悉的朋友帮忙回答一下,谢谢各位了

弘毅 发表于 2012-9-28 19:28:54

shenhaiyu 发表于 2012-9-28 14:15 static/image/common/back.gif
弘版,想问个SD库使用的问题。我在使用中发现三个问题不知道怎么解决:

1.SD库默认使用的端口是不是在库 ...

SD库使用了13,12,11,4这四个引脚

13是SCLK
12是MISO
11是MOSI
4是CS

不使用10号口也要悬空,这个是指的只用官方W5100带SD卡扩展板的情况下,因为官方W5100板子,默认W5100的CS引脚是10号,如果不悬空就会和SD卡冲突,不过如果你单独用SD模块,就不存在这个问题。

FAT32前两天试了下,确实可以用了。

额。。。运行中把SD拔下来,检查是否在,我觉得可以用SD库下的exists()函数。

shenhaiyu 发表于 2012-9-29 11:14:03

弘毅 发表于 2012-9-28 19:28 static/image/common/back.gif
SD库使用了13,12,11,4这四个引脚

13是SCLK


谢谢~~~~
我用exists()测试SD卡是否拔出不管用,即使卡拔出了,依然能检测到拔出前存在的文件,而且能正常写入……还没测试能否读出,真是奇怪……

弘毅 发表于 2012-9-29 18:44:55

shenhaiyu 发表于 2012-9-29 11:14 static/image/common/back.gif
谢谢~~~~
我用exists()测试SD卡是否拔出不管用,即使卡拔出了,依然能检测到拔出前存在的文件,而且能正 ...

囧。。。。。。

shenhaiyu 发表于 2012-9-30 00:06:36

弘毅 发表于 2012-9-29 18:44 static/image/common/back.gif
囧。。。。。。

弘版,你这样试试:
#include <SD.h>

const int chipSelect = 4;//设定CS接口

void setup()
{
Serial.begin(9600);//设置串口通信波特率为9600

    Serial.print("Initializing SD card...");//串口输出数据Initializing SD card...
pinMode(10, OUTPUT);

if (!SD.begin(chipSelect)) {//如果从CS口与SD卡通信失败,串口输出信息Card failed, or not present
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
}
Serial.println("card initialized.");//与SD卡通信成功,串口输出信息card initialized.

}

void loop()
{
delay(10000);

if(SD.exists("datalog.txt")) {
Serial.println("exists test ok");
}
else{
Serial.println("exists test err");
}


}
运行后在串口监视器会每隔10秒钟看到一行“exists test ok”,但是如果这时把SD卡拔出,依然会“exists test ok”,而不是err,所以我就不知道初始化之后如何检测SD卡了……

shenhaiyu 发表于 2012-9-30 00:29:08

我还发现,如果初始化之后没有文件读写操作,exists就不起作用,如果有读写操作,SD卡被拔出后会有提示:#include <SD.h>

const int chipSelect = 10;//设定CS接口

void setup()
{
Serial.begin(9600);//设置串口通信波特率为9600
Serial.print("Initializing SD card...");//串口输出数据Initializing SD card...
pinMode(10, OUTPUT);

if (!SD.begin(chipSelect)) {//如果从CS口与SD卡通信失败,串口输出信息Card failed, or not present
    Serial.println("Card failed, or not present");
    // don't do anything more:
    return;
}
Serial.println("card initialized.");//与SD卡通信成功,串口输出信息card initialized.
}

void loop()
{
delay(10000);
if(SD.exists("datalog.txt")) {
    Serial.println("exitst test ok");
    File dataFile = SD.open("datalog.txt");
    if (dataFile) {//打开datalog.txt文件
      while (dataFile.available()) {//检查是否dataFile是否有数据
      Serial.write(dataFile.read());//如果有数据则把数据发送到串口
      }
      dataFile.close();//关闭dataFile
    }
    else {
      Serial.println("error opening datalog.txt");//如果文件无法打开串口发送信息error opening datalog.txt
    }
}
else
{
    Serial.println("exitst test err");
}
}

比如这个程序,插好卡初始化之后,至少读过一次卡之后,中途拔掉SD卡,exist会false……

但是此时再插入卡也不会认出来,而且无法再次初始化,只能重启……

星_star_雲 发表于 2012-10-22 15:48:27

为什么我的编译器显示SD未被定义呀...
请各位帮忙解答呀

无趣 发表于 2012-12-13 08:40:10

楼主,为嘛我的1G,FAT格式的SD卡,初始化不成功:Q:Q

弘毅 发表于 2012-12-13 21:50:59

无趣 发表于 2012-12-13 08:40 static/image/common/back.gif
楼主,为嘛我的1G,FAT格式的SD卡,初始化不成功

额。。。传说中的挑卡?
页: 1 [2] 3 4 5 6 7
查看完整版本: arduino学习笔记18 - SD卡读写实验