Arduino控制SD卡(一)

来源:互联网 发布:js字符串转utf8编码 编辑:程序博客网 时间:2024/04/28 07:25
学习如何使用Arduino读写SD卡。SD卡读卡器是在淘宝上买的,下图右侧的SD卡是行车记录仪上面的。里面有文件夹和视频文件。
Arduino控制SD卡(一) - gc_2299 - gc_2299的博客
 
Arduino开发平台中自带了SD卡的示例程序,如下图所示:
Arduino控制SD卡(一) - gc_2299 - gc_2299的博客

总共六个示例程序。首先根据示例程序中的注释进行接图:其中的CLK在我买的读卡器上没有这个引脚,我的上面的引脚是SCK

* SD card attached to SPI bus as follows:
** MOSI - pin 11,连接到arduino的MOSI口,在UNO及兼容板上为11号引脚
** MISO - pin 12,连接到arduino的MISO口,在UNO及兼容板上为12号引脚
** CLK - pin 13,连接到arduino的SCLK口,在UNO及兼容板上为13号引脚
** CS - pin 4,TF卡片选,例程中需连接到4号脚(在没有使用其他SPI设备时可不连接)

接线示意图和实际接线图如下:
Arduino控制SD卡(一) - gc_2299 - gc_2299的博客
 
Arduino控制SD卡(一) - gc_2299 - gc_2299的博客
 
下面依次运行Arduino中的例子,显示运行结果:
第一个示例:CardInfo,这个示例是获取SD卡基本信息和SD卡上的文件夹和文件信息:


Initializing SD card...Wiring is correct and a card is present.

Card type: SDHC

Volume type is FAT32

Volume size (bytes): 1647312896
Volume size (Kbytes): 1608704
Volume size (Mbytes): 1571

Files found on the card (name, date and size in bytes):
NORMAL/ 2015-01-01 00:00:02
2016-0~1.MOV 2016-09-23 14:32:28 62947328
2016-0~2.MOV 2016-09-23 18:13:28 755269632
2016-0~3.MOV 2016-09-25 13:37:38 377618432
2016-0~4.MOV 2016-09-25 14:03:14 566460416
2016-0~5.MOV 2016-09-25 17:20:24 755269632
2016-0~6.MOV 2016-09-25 17:21:22 146866176
2016-0~7.MOV 2016-09-28 12:58:28 755269632
2016-0~8.MOV 2016-09-28 13:03:30 21004288
2016-0~9.MOV 2016-09-28 14:29:54 755269632
2016-~10.MOV 2016-09-28 14:30:06 41975808
2016-~11.MOV 2016-09-28 18:32:38 755269632
2016-~12.MOV 2016-09-28 18:36:54 650346496
2016-~13.MOV 2016-09-29 07:41:16 755269632
2016-~14.MOV 2016-09-29 07:50:26 629374976
2016-~15.MOV 2016-09-29 12:05:48 755269632
2016-~16.MOV 2016-09-29 12:20:14 188841984
2016-~17.MOV 2016-09-29 14:29:54 755269632
2016-~18.MOV 2016-09-29 14:34:54 755269632
2016-~19.MOV 2016-09-29 14:36:52 293732352
2016-~20.MOV 2016-09-30 12:07:58 755269632
2016-~21.MOV 2016-09-30 12:10:02 314703872
2016-~22.MOV 2016-09-30 14:26:52 272728064
2016-~23.MOV 2016-09-30 14:37:06 503513088
2016-~24.MOV 2016-09-22 16:45:36 755269632
2016-~25.MOV 2016-09-22 16:49:50 650346496
2016-~26.MOV 2016-09-23 07:50:40 755269632
2016-~27.MOV 2016-09-23 07:55:40 755269632
2016-~28.MOV 2016-09-23 08:00:40 755269632
2016-~29.MOV 2016-09-23 08:05:36 755269632
2016-~30.MOV 2016-09-23 12:11:30 755269632
2016-~31.MOV 2016-09-23 12:15:34 629374976
2016-~32.MOV 2016-09-23 12:39:40 755269632
2016-~33.MOV 2016-09-23 12:43:04 524484608
2016-~34.MOV 2016-09-23 14:32:12 755269632
2016-~35.MOV 2016-09-23 18:17:08 566460416
2016-~36.MOV 2016-09-25 13:35:14 755269632
2016-~37.MOV 2016-09-28 12:45:40 524484608
2016-~38.MOV 2016-09-28 13:03:28 755269632
2016-~39.MOV 2016-09-29 07:46:16 755269632
2016-~40.MOV 2016-09-29 12:09:48 608403456
2016-~41.MOV 2016-09-29 12:19:02 755269632
2016-~43.MOV 2016-09-23 14:27:12 755269632
2016-~44.MOV 2016-09-23 18:08:28 755269632
2016-~45.MOV 2016-09-25 17:15:24 755269632
2016-~46.MOV 2016-09-28 12:42:18 755269632
2016-~47.MOV 2016-09-28 18:44:08 713293824
2016-~48.MOV 2016-09-30 12:02:58 755269632
2016-~49.MOV 2016-09-28 14:24:54 755269632
2016-~50.MOV 2016-09-30 14:33:48 755269632
EVENT/ 2015-01-01 00:00:02
2016-0~1.MOV 2016-07-12 12:00:32 314703872
2016-0~2.MOV 2016-08-07 14:19:52 335675392
2016-0~3.MOV 2016-09-30 14:28:48 335675392
SYSTEM~1/ 2016-03-19 00:17:42
INDEXE~1 2016-03-19 00:17:44 76


第二个示例:DataLogger,这个示例是读模拟引脚0-2的值并记录到SD卡上。

Initializing SD card...card initialized.
538,540,434
470,498,466
463,475,465
455,458,457
446,443,444
438,435,434
433,430,429
427,425,424
419,416,416
409,405,406
398,395,395
389,384,385
379,374,374
371,367,366
367,364,362

第三个示例:DumpFile,这个示例是将SD卡上datalog.txt文件中的内容读出来并发送到串口

Initializing SD card...card initialized.
379,348,327
340,335,328
330,328,325
324,322,320
318,316,314
312,309,308
303,298,298
297,293,292
290,287,287
287,285,284
282,279,279
278,276,275
275,273,272

第四个示例:Files,这个示例是在SD卡上先创建然后删除文件example.txt

Initializing SD card...initialization done.
example.txt doesn't exist.
Creating example.txt...
example.txt exists.
Removing example.txt...
example.txt doesn't exist.

第五个示例:listfiles,该示例是递归读取SD卡上的文件夹,并列出文件夹中的文件和子文件夹信息

Initializing SD card...initialization done.
NORMAL/
2016-0~1.MOV62947328
2016-0~2.MOV755269632
2016-0~3.MOV377618432
2016-0~4.MOV566460416
2016-0~5.MOV755269632
2016-0~6.MOV146866176
2016-0~7.MOV755269632
2016-0~8.MOV21004288
2016-0~9.MOV755269632
2016-~10.MOV41975808
2016-~11.MOV755269632
2016-~12.MOV650346496
2016-~13.MOV755269632
2016-~14.MOV629374976
2016-~15.MOV755269632
2016-~16.MOV188841984
2016-~17.MOV755269632
2016-~18.MOV755269632
2016-~19.MOV293732352
2016-~20.MOV755269632
2016-~21.MOV314703872
2016-~22.MOV272728064
2016-~23.MOV503513088
2016-~24.MOV755269632
2016-~25.MOV650346496
2016-~26.MOV755269632
2016-~27.MOV755269632
2016-~28.MOV755269632
2016-~29.MOV755269632
2016-~30.MOV755269632
2016-~31.MOV629374976
2016-~32.MOV755269632
2016-~33.MOV524484608
2016-~34.MOV755269632
2016-~35.MOV566460416
2016-~36.MOV755269632
2016-~37.MOV524484608
2016-~38.MOV755269632
2016-~39.MOV755269632
2016-~40.MOV608403456
2016-~41.MOV755269632
2016-~43.MOV755269632
2016-~44.MOV755269632
2016-~45.MOV755269632
2016-~46.MOV755269632
2016-~47.MOV713293824
2016-~48.MOV755269632
2016-~49.MOV755269632
2016-~50.MOV755269632
EVENT/
2016-0~1.MOV314703872
2016-0~2.MOV335675392
2016-0~3.MOV335675392
DATALOG.TXT21944
SYSTEM~1/
INDEXE~176
done!

第六个示例:ReadWrite,这个示例是在SD卡上写、读文件test.txt

Initializing SD card...initialization done.
Writing to test.txt...done.
test.txt:
testing 1, 2, 3.

这六个示例已经把Arduino和SD卡的基本操作都包括了。
下一步计划下一个C#的上位机程序,该程序可以通过Arduino对SD卡进行基本的读、写、删等控制。

 参考文献:
1)http://www.arduino.cn/thread-2550-1-1.html
原创粉丝点击