查看: 4217|回复: 10

Arduino 101 SerialFlash库读写例程

[复制链接]
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

    发表于 2017-1-5 00:59 | 显示全部楼层 |阅读模式
    发现example居然没读取的示例,自己写了个:

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

    /*
    Arduino 101 SPI Flash读文件
    奈何col 2017.1.11
    www.arduino.cn
    */
    #include <SerialFlash.h>
    #include <SPI.h>
    
    // 文件名 
    const char *filename = "Arduino101.txt";
    // 片选引脚
    const int FlashChipSelect = 21;
    
    void setup() {
      Serial.begin(9600);
      while (!Serial) ;
      delay(500);
      // 初始化SPI Flash芯片
      SerialFlash.begin(FlashChipSelect);
    
      // 如果文件不存在,则输出提示
      // 如果文件存在,则读取文件内容
      if(!SerialFlash.exists(filename)) {
        Serial.println("File " + String(filename) + " does not exist");
      }
      else {
        SerialFlashFile file;
        file = SerialFlash.open(filename);
        int len = file.size();
        char fileBuffer[len];
        file.read(fileBuffer, len);
        Serial.println("file:" + String(filename));
        Serial.println("size:" + len);
        Serial.println("contents:\r\n" + String(fileBuffer));
      }
    }
    
    void loop() {
    }
    


    原写文件示例不够清晰,也重新修改:

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

    
    /*
    Arduino 101 SPI Flash写文件
    奈何col 2017.1.11
    www.arduino.cn
    */
    
    #include <SerialFlash.h>
    #include <SPI.h>
    
    // 文件大小
    #define FSIZE 256
    // 文件名
    const char *filename = "Arduino101.txt";
    // 文件内容
    const char *contents = "The groundbreaking Intel Curie module expands the possibilities of what tech can do.";
    // 片选引脚
    const int FlashChipSelect = 21; 
    
    void setup() {
      Serial.begin(9600);
      while (!Serial) ;
      delay(500);
      // 初始化SPI Flash芯片
      SerialFlash.begin(FlashChipSelect);
    
      // 如果文件已存在,则输出提示
      // 如果文件不存在,则创建文件并写入
      if(SerialFlash.exists(filename)) {
          Serial.println("File " + String(filename) + " already exists");
      }
      else {
          Serial.println("Creating file " + String(filename));
          SerialFlash.create(filename, FSIZE);
          // 新建SerialFlashFile对象用于文件操作
          SerialFlashFile file;
          file = SerialFlash.open(filename);
          file.write(contents, strlen(contents) + 1);
          Serial.println("String \"" + String(contents) + "\" written to file " + String(filename));
      }
    }
    
    void loop() {
    }
    
    




    如果以上内容对你有帮助,你可以通过打赏支持作者
  • TA的每日心情
    开心
    2018-11-28 10:20
  • 签到天数: 262 天

    [LV.8]以坛为家I

    发表于 2017-2-17 21:29 | 显示全部楼层
    2m的flash,一定试试,感谢分享。
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2018-1-28 01:04 | 显示全部楼层
    实际操作无法读取,完全没反应,请问是可能什么原因?

    该用户从未签到

    发表于 2018-1-28 08:45 | 显示全部楼层
    hanspond 发表于 2018-1-28 01:04
    实际操作无法读取,完全没反应,请问是可能什么原因?

    有可能是因为你没有先擦除干净
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2018-1-28 14:00 | 显示全部楼层
    Zoologist 发表于 2018-1-28 08:45
    有可能是因为你没有先擦除干净

    擦拭板子?
    我后来改用了CurieSerialFlash.h

    SerialFlash.begin(ONBOAR_FLASH_SPI_PORT,ONBOARD_FLASH_CS_PIN)
    现在可以正常擦写了。原文帖子里面的指定SerialFlash.begin(21)不行

    该用户从未签到

    发表于 2018-1-28 16:42 | 显示全部楼层
    hanspond 发表于 2018-1-28 14:00
    擦拭板子?
    我后来改用了CurieSerialFlash.h

    哦 我说的是每次写入之前最好先清空  spi

    101要用 CurieSerialFlash
    打赏作者鼓励一下!

    该用户从未签到

    发表于 2018-1-28 22:02 | 显示全部楼层
    Zoologist 发表于 2018-1-28 16:42
    哦 我说的是每次写入之前最好先清空  spi

    101要用 CurieSerialFlash

    感觉不是擦除的问题,写入的时候就没反应(写入的下一个语句的serialprint十几分钟都没反应),然后载入检查spi有没文件也是显示0。改用curieserialflash就没问题了。

    该用户从未签到

    发表于 2018-2-4 11:20 | 显示全部楼层
    请问该如何将结构体对象存储在文件中,再读取出来

    点评

    参考:用共用体结构保存其他类型的数据到EEPROM: http://www.arduino.cn/thread-2684-1-1.html  详情 回复 发表于 2018-2-4 19:49
  • TA的每日心情
    郁闷
    2018-12-6 22:21
  • 签到天数: 48 天

    [LV.5]常住居民I

     楼主| 发表于 2018-2-4 19:49 | 显示全部楼层
    ouyangxin 发表于 2018-2-4 11:20
    请问该如何将结构体对象存储在文件中,再读取出来

    参考:用共用体结构保存其他类型的数据到EEPROM: http://www.arduino.cn/thread-2684-1-1.html
    如果以上内容对你有帮助,你可以通过打赏支持作者

    该用户从未签到

    发表于 2018-2-7 13:28 | 显示全部楼层
    ouyangxin 发表于 2018-2-4 11:20
    请问该如何将结构体对象存储在文件中,再读取出来

    谢谢。可以用结构体的定义方法替代共用体吗
    您需要登录后才可以回帖 登录 | 立即注册  

    本版积分规则

    热门推荐

    [发布帖]RPG游戏 无人世界
    [发布帖]RPG游戏 无人世界
    视频攻略:https://www.bilibili.com/video/av43790997/ 剧情:主角是一只猫又,在逃
    arduino oled 时钟 可设置闹钟 表
    arduino oled 时钟 可设置
    呆板教程,固件是编译好的,有上传工具,这次不是IDE了
    Arduino 蓝牙机械臂
    Arduino 蓝牙机械臂
    蓝牙机械臂(这次没用BLINKER,改
    求助!!!!!!!!
    求助!!!!!!!!
    求助?????错在哪里了?谢谢
    max30102问题
    max30102问题
    最近网上买了个max30102的心率血氧模块,用卖家给的单个例程的时候数据还算准确,但是
    Copyright   ©2015-2016  Arduino中文社区  Powered by©Discuz!   ( 蜀ICP备14017632号-3 )
    快速回复 返回顶部 返回列表