查看: 7983|回复: 2

intel Curie/Arduino 101入门开发套件之-TF卡模块读写使用教程1

[复制链接]
本帖由 Leonardo 同步到 yvuke 的微博!

该用户从未签到

发表于 2016-6-16 14:17 | 显示全部楼层 |阅读模式
本帖最后由 Leonardo 于 2016-6-16 14:26 编辑

     TF卡读写储存模块是互动媒体设备最常用存储模块,采用SPI接口。模块可以通过杜邦线与Arduino传感器扩展板连接,编写相应的程序可以实现各种传感器(如温湿度传感器、光线传感器,GPS 等等)数据记录等功能,通过读卡器将TF卡数据读出,便可轻松加以分析利用,模块并带有两个LED灯以指示TF卡工作状态。(指示灯说明:1、当接上电源未插卡时,一个LED常亮,表示模块供电正常。2、插入卡后常亮的LED开始闪速,表示TF卡已经插入。3、另一个LED闪烁是表示正在通信。)    在配合Arduino101的使用中接线方式可以与uno相同:

1
CD
用户可用来检测卡是否插入,不使用可不连接(例程中不使用)
2
CS
TF卡片选,例程中需连接到4号脚(在没有使用其他SPI设备时可不连接)
3
MOSI
连接到arduino的MOSI口,在101上为11号引脚
4
MISO
连接到arduino的MISO口,在101上为12号引脚
5
SCK
连接到arduino的SCLK口,在101上为13号引脚
6
VCC
电源供电正端,连接到5V
7
GND
电源供电负端,连接到电源负极,GND
card3.png
硬件连接好以后,打开Arduino IDE找到文件-示例-SD-Cardlnfo。 card.PNG

kittenblock中小学创客名师推荐的图形化编程软件

/*
  SD card test

 This example shows how use the utility libraries on which the'
 SD library is based in order to get info about your SD card.
 Very useful for testing a card when you're not sure whether its working or not.

 The circuit:
  * SD card attached to SPI bus as follows:
 ** MOSI - pin 11 on Arduino Uno/Duemilanove/Diecimila
 ** MISO - pin 12 on Arduino Uno/Duemilanove/Diecimila
 ** CLK - pin 13 on Arduino Uno/Duemilanove/Diecimila
 ** CS - depends on your SD card shield or module.
                 Pin 4 used here for consistency with other Arduino examples


 created  28 Mar 2011
 by Limor Fried
 modified 9 Apr 2012
 by Tom Igoe
 */
// include the SD library:
#include <SPI.h>
#include <SD.h>

// set up variables using the SD utility library functions:
Sd2Card card;
SdVolume volume;
SdFile root;

// change this to match your SD shield or module;
// Arduino Ethernet shield: pin 4
// Adafruit SD shields and modules: pin 10
// Sparkfun SD shield: pin 8
const int chipSelect = 4;

void setup() {
  // Open serial communications and wait for port to open:
  Serial.begin(9600);
  while (!Serial) {
    ; // wait for serial port to connect. Needed for native USB port only
  }


  Serial.print("\nInitializing SD card...");

  // we'll use the initialization code from the utility libraries
  // since we're just testing if the card is working!
  if (!card.init(SPI_HALF_SPEED, chipSelect)) {
    Serial.println("initialization failed. Things to check:");
    Serial.println("* is a card inserted?");
    Serial.println("* is your wiring correct?");
    Serial.println("* did you change the chipSelect pin to match your shield or module?");
    return;
  } else {
    Serial.println("Wiring is correct and a card is present.");
  }

  // print the type of card
  Serial.print("\nCard type: ");
  switch (card.type()) {
    case SD_CARD_TYPE_SD1:
      Serial.println("SD1");
      break;
    case SD_CARD_TYPE_SD2:
      Serial.println("SD2");
      break;
    case SD_CARD_TYPE_SDHC:
      Serial.println("SDHC");
      break;
    default:
      Serial.println("Unknown");
  }

  // Now we will try to open the 'volume'/'partition' - it should be FAT16 or FAT32
  if (!volume.init(card)) {
    Serial.println("Could not find FAT16/FAT32 partition.\nMake sure you've formatted the card");
    return;
  }


  // print the type and size of the first FAT-type volume
  uint32_t volumesize;
  Serial.print("\nVolume type is FAT");
  Serial.println(volume.fatType(), DEC);
  Serial.println();

  volumesize = volume.blocksPerCluster();    // clusters are collections of blocks
  volumesize *= volume.clusterCount();       // we'll have a lot of clusters
  volumesize *= 512;                            // SD card blocks are always 512 bytes
  Serial.print("Volume size (bytes): ");
  Serial.println(volumesize);
  Serial.print("Volume size (Kbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);
  Serial.print("Volume size (Mbytes): ");
  volumesize /= 1024;
  Serial.println(volumesize);


  Serial.println("\nFiles found on the card (name, date and size in bytes): ");
  root.openRoot(volume);

  // list all files in the card with date and size
  root.ls(LS_R | LS_DATE | LS_SIZE);
}


void loop(void) {

}

烧写官方的例程,上传程序后,等待系统启动(大约5s);
打开串口监视器,可以看到Arduino 101返回的信息,此时,如果TF卡里有内容的话,就会返回目录下的文件信息;
card2.png
需要注意的是,TF或SD卡的文件格式必须为FAT32或FAT16,否则系统无法读取内存卡的信息。


   







打赏作者鼓励一下!
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

热门推荐

新人 if else if语句问题
新人 if else if语句问题
想要的效果是分别输入1;2;3;4;时 分别输出1;2;3;4,输入其他时输出输出code
【Arduino】u8g2中文字库制作教程 小白请进
【Arduino】u8g2中文字库
我知道对于这个话题许多大佬们都会,发这个贴子也算是炒冷饭了,所以一开始我也十分纠
请问Arduino可以和这种NB-IOT模块连接吗
请问Arduino可以和这种NB-
如图
【干货分享】mega2560原理图PCB图纸altium designer18
【干货分享】mega2560原理
分享一下mega2560的板子 AD版本 **** 本内容被作者隐藏 **** ergo
一文教你选择Arduino开发板,小白进
一文教你选择Arduino开发
笔者在2016年接触了Arduino,跳了万条坑,行了千里弯,到今天也算是Arduino的一
Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
快速回复 返回顶部 返回列表