我已经尝试了几个示例程序将数据写入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卡并从中读取。将所有内容放在一起后I wrote an article,万一其他人都面临同样的问题。
答案 0 :(得分:2)
最新版本的Arduino Ethernet Shield使用“ICSP”接头(板右侧的3x2,6针接头)进行通信。进入SD卡的输入/输出数据将通过这些引脚。
我们在Netduino中包含了这些相同的标题以实现兼容性;要使用这个盾牌,你需要将适当的标题焊接到你的Netduino上。那你应该好好去!
BTW,Netduino Plus集成了MicroSD和快速以太网网络......这也是一个简单的解决方案。 http://www.netduino.com/netduinoplus/Chris(Secret Labs LLC)
答案 1 :(得分:0)
我在此论坛页面http://forums.netduino.com
上找到了参考“你现在需要在D10和D4之间插上一根跳线才能获得 SD卡可以工作 - 虽然这不是必需的 生产v4.1.1 firwmare(这将让你指定SD卡的 芯片选择线)。“
这让我觉得您需要使用D4而不是D10作为SD卡。我在同一页面上发现了一些其他参考文献,提到D10是以太网的SS引脚。其下载页面上的固件目前仅为4.1.0,因此您可能需要跳线。我无法测试这个,但论坛链接应该是一个很好的起点。