1

我已经尝试了几个示例程序来将数据写入安装在Ethernet shield上的 SD 卡,但没有一个有效。SD 卡大小为 4 GB,格式为FAT32

以太网屏蔽如下:

(在亚马逊上购买 - Arduino Ethernet Shield

在此处输入图像描述

这是在创建 Netduino 应用程序(不是 Netduino Plus 应用程序)时不起作用的示例代码(第一行引发异常):

public static void Main()
{
    StorageDevice.MountSD("SD1", SPI_Devices.SPI1, Pins.GPIO_PIN_D10);

    string[] directories = System.IO.Directory.GetDirectories(@"\");
    Debug.Print("directory count: " + directories.Length.ToString());

    for (int i = 0; i < directories.Length; i++)
    {
        Debug.Print("directory: " + directories[i]);
    }

    string[] files = System.IO.Directory.GetFiles(@"\SD1");
    Debug.Print("file count: " + files.Length.ToString());

    for (int i = 0; i < files.Length; i++)
    {
        Debug.Print("filename: " + files[i]);
        FileStream fs = new FileStream(files[i], FileMode.Open, FileAccess.Read, FileShare.None, 512);
        StreamReader sr = new StreamReader(fs);
        Debug.Print("contents: " + sr.ReadToEnd());
    }
}

有示例工作程序吗?

解决方案:

感谢 Chris 和 James,我设法写入 SD 卡并从中读取。把所有东西放在一起后,我写了一篇文章,以防其他人面临同样的问题。

4

2 回答 2

2

最新版本的 Arduino 以太网扩展板使用“ICSP”接头(板右侧的 3x2、6 针接头)进行通信。进入 SD 卡的输入/输出数据正在通过这些引脚。

为了兼容性,我们在 Netduino 上包含了这些相同的标头;要使用此屏蔽,您需要将适当的接头焊接到您的 Netduino 上。那你应该好好去!

顺便说一句,Netduino Plus 集成了 MicroSD 和快速以太网网络……这也可能是一个简单的解决方案。 http://www.netduino.com/netduinoplus/

克里斯(秘密实验室有限责任公司)

于 2011-10-21T09:00:17.603 回答
0

我在这个论坛页面http://forums.netduino.com上找到了一个参考

“您目前需要在 D10 和 D4 之间放置一根跳线以使 SD 卡工作——尽管生产 v4.1.1 firwmare 不需要这样做(它可以让您指定 SD 卡的芯片选择线) 。”

这让我觉得你需要使用 D4 而不是 D10 作为 SD 卡。我在同一页面上发现了一些其他参考资料,其中提到 D10 是以太网的 SS 引脚。他们下载页面上可用的固件目前只有 4.1.0,因此您可能需要跳线。我无法对此进行测试,但论坛链接应该是一个很好的起点。

于 2011-10-20T16:58:00.123 回答