Arduino максимальный объем sd карты

Arduino.ru

С каким объемом работает библиотека SD.h?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

На сомом сайте http://arduino.cc/en/Reference/SD где лежит библиотека написано что работает она с файловыми системами FAT16 и FAT32 и стандартамикарт SD и SDHC. Но вот про объем никто ничего не написал.

Попробовал подключить карту 8ГБ. Скетч из примеров http://arduino.cc/en/Tutorial/CardInfo видит ее как 4ГБ.

Отсюда и возник вопрос — какой максимальный объем поддерживается?

Конечно устанавливать для логгирования карут 128ГБ нет планов, но и карту 2ГБ уже найти проблематично.

А так же может кто объяснит по простому, почему 10 цифровой контакт надо устанавликать как вывод?

// (10 on most Arduino boards, ) must be left as an output
// or the SD library functions will not work.
pinMode ( 10 , OUTPUT ) ;

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

есть куча утилит для работы с сд-картой, которые её могут отформатировать в совершенно любой размер.

там же комментарий написан по этому поводу- потому что этот пин (причем не обязательно №10, он зависит от того какая сд-карта используется) зарезервирован библиотекой в качестве выхода для сигнала CS (cable select)

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

есть куча утилит для работы с сд-картой, которые её могут отформатировать в совершенно любой размер.

Дело не в форматировании под какой либо объем. Вопросс именно такой — С каким объемом работает библиотека SD.h? Если кто в курсе ткните в описание или документацию.

По поводу пина 10

Там написано, что для корректной работы библиотеки он должен быть именно OUTPUT. А каокй пин будет соединятся к CS кардридера неважно. В примере это 4 пин. Отсюда и вопрос если у меня управляет 4 или 8 пин то почему библиотеке важно чтобы 10 был непременно OUTPUT? Может это както связано с родным Ethernet шилдом Arduino?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

смотрите стандатрты юсб версия 1.1 больше 4 Гб данный формат не поддерживает.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

вот коменты авторов либы SDfat lib на которой базируется стандартная ардуиновская SD либа.

Get the «TinyFAT» Arduino Software Library here:
You can find the latest version of the library at http://www.henningkarlsen.com/electronics
The library supports FAT16 formatted SD cards up to 2GB in size. 4GB FAT16 formatted SD cards might work, but is untested. Long filenames are not supported. Keep your filenames compliant with the old 8.3 standard. The SD card should be connected to the SPI-pins on your Arduino. Pin connections are available in the documentation in the download.
NOTE: This library worked well with a 1GB SD card that was formatted FAT16. This library will NOT work with larger cards that are formatted FAT32.

я бы не советовал использовать ничего, что превышает рекомендованные ограничения: имена файлов 8.3, fat16, 2Gb ( или fat32, 1Gb)

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

смотрите стандатрты юсб версия 1.1 больше 4 Гб данный формат не поддерживает.

Пример который идет в комплекте к данной библиотеке показал размер правильно. Но заполнять на все 8ГБ я карту не пробовал, поэтому не могу сказать насколько корректно работает библиотека.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

вот коменты авторов либы SDfat lib на которой базируется стандартная ардуиновская SD либа.

я бы не советовал использовать ничего, что превышает рекомендованные ограничения: имена файлов 8.3, fat16, 2Gb ( или fat32, 1Gb)

Спасибо за идею по поводу на чем базируется Ардуиновская библиотека SD. SD библиотека из версии 1.5 базируется как раз на этой https://github.com/greiman/SdFat

Но версия в ардуино более старая , от 2009 года и понимает максимум 4ГБ.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

А так же может кто объяснит по простому, почему 10 цифровой контакт надо устанавликать как вывод?

// (10 on most Arduino boards, ) must be left as an output
// or the SD library functions will not work.
pinMode ( 10 , OUTPUT ) ;

Потому что, что бы SPI начал работать как master, а не slave, необходимо аппаратный вывод CS настроить как выход.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

Решил попробовать все карты которые были в наличии.

Читайте также:  Как найти объем прямоугольного параллелепипеда с ребрами

Тест проводился на Arduino UNO. Вналичии 3 карты

1. SANDISK 64GB
2. DNS 8GB
3. KINGSTON 4GB

Для начала использовал скетч из примеров для библиотеки SD

Из тестов видно, что карта SANDISK 64GB распозналась но на ней не найдена FAT16/FAT32. Это именно так потому как карта отформатирована в exFAT.
Карны DNS 8GB и KINGSTON 4GB определились как 4GB с небольшой лишь разницей в объеме.

Далее взял скетч из библиотеки SDFat. Ну и саму библиотеку конечно подключил 🙂

В случае с библиотекой SDFat размер всех карт определен корректно. Но карта 64GB тоже не прошла инициализацию все по той же причине что отформатирована в exFAT.

На этом видимо вопроссы закрыты.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня подключен не 10, а 8-й пин. Строчку в примере «//pinMode(10, OUTPUT);» закомментировал, но все работает нормально, карточка определяется, лог пишется. Вот поэтому тоже задумался — Зачем эта строка?

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

У меня подключен не 10, а 8-й пин. Строчку в примере «//pinMode(10, OUTPUT);» закомментировал, но все работает нормально, карточка определяется, лог пишется. Вот поэтому тоже задумался — Зачем эта строка?

К стати у библиотеки с которая взята за основу стандартной в Arduino таких требований про 10 пин нет. Я думаю это применимо для родного шилда — http://arduino.cc/en/Main/ArduinoEthernetShield

А так как у меня SD и Ethernet отдельные модули то видимо и так нормально работать будет.

  • Войдите или зарегистрируйтесь, чтобы получить возможность отправлять комментарии

По поводу пина 10

Там написано, что для корректной работы библиотеки он должен быть именно OUTPUT. А каокй пин будет соединятся к CS кардридера неважно. В примере это 4 пин. Отсюда и вопрос если у меня управляет 4 или 8 пин то почему библиотеке важно чтобы 10 был непременно OUTPUT? Может это както связано с родным Ethernet шилдом Arduino?

Зачем фантазировать ? Повторю — там всё это разъясняется в комментах. В примере это 4й пин действительно потому что хардварно на этом шилде CS пин -4. У вас управляет 8й только потому что 10й тоже выставлен как OUTPUT. Смотрим комменты:

// On the Ethernet Shield, CS is pin 4. Note that even if it’s not
// used as the CS pin, the hardware CS pin (10 on most Arduino boards,
// 53 on the Mega) must be left as an output or the SD library
// functions will not work.

Перевожу : На Ethernet шилде в качестве CS используется пин 4. Обратите внимание, что «хардваный» CS пин, даже если он не используется в качестве CS, должен быть установлен в OUTPUT (на большинстве ардуинок это пин 10, на меге пин 53), иначе функции библиотеки SD работать не будут.

Источник

Библиотека SD для работы Arduino с SD картами

Библиотека SD для Arduino позволяет выполнять чтение и запись на SD карты, установленные, например, на плату расширения Arduino Ethernet Shield, и поддерживает файловые системы FAT16 и FAT32 на стандартных SD картах и картах SDHC.

Содержание

Введение

Библиотека SD позволяет выполнять чтение и запись на SD карты, установленные, например, на плату расширения Arduino Ethernet Shield. Она построена на базе sdfatlib от William Greiman. Библиотека поддерживает файловые системы FAT16 и FAT32 на стандартных SD картах и картах SDHC. Она использует короткие имена файлов 8.3. Имена файлов, переданные функциям SD библиотеки, могут включать пути, разделенные прямыми слешами, /, например, » directory/filename.txt «. Поскольку рабочий каталог – это всегда корневой каталог SD карты, имя ссылается на один и тот же файл, независимо от того, включает ли оно прямой слеш (например, » /file.txt ‘ эквивалентно » file.txt «). С версии 1.0 библиотека поддерживает открытие нескольких файлов.

Связь между микроконтроллером и SD картой использует интерфейс SPI, который использует цифровые выводы 11, 12 и 13 (на большинстве плат Arduino) или 50, 51 и 52 (на платах Arduino Mega). Кроме того, для выбора SD карты должен использоваться еще один вывод. Это может быть аппаратный вывод SS – вывод 10 (на большинстве плат Arduino) или вывод 53 (на платах Arduino Mega) – или какой-либо другой вывод, заданный с помощью вызова SD.begin() . Обратите внимание, что даже если вы не используете аппаратный вывод SS, он должен быть оставлен настроенным для работы на выход, иначе библиотека SD работать не будет.

Описание методов и классов

Класс SD

Класс SD предоставляет функции для доступа к SD карте и манипуляций с файлами и каталогами.

Читайте также:  Cawa объем масла двс

Инициализирует библиотеку SD и карту. Это запускает использование шины SPI (цифровые выводы 11, 12 и 13 на большинстве плат Arduino; 50, 51 и 52 на Arduino Mega) и вывод выбора чипа, который по умолчанию является аппаратным выводом SS (вывод 10 на большинстве плат Arduino, 53 на Arduino Mega). Обратите внимание, что даже если вы используете какой-либо другой вывод выбора чипа, аппаратный вывод SS должен быть оставлен настроенным для работы на выход, иначе библиотека SD работать не будет.

Синтаксис

Параметры

cspin (необязательный): вывод, подключенный к линии выбора чипа на SD карте; по умолчанию устанавливается аппаратный вывод SS шины SPI.

Возвращаемое значение

true в случае успеха; false в случае неудачи.

Проверяет, существует ли на SD карте файл или каталог.

Синтаксис

Параметры

filename : имя файла, проверяемого на существование, может включать каталоги (отделенные прямыми слешами, /).

Возвращаемое значение

true , если файл или каталог существует; false , если нет.

Создает каталог на SD карте. Он также создает промежуточные каталоги, которые еще не существуют; например SD.mkdir(«a/b/c») создаст a , b и c .

Синтаксис

Параметры

filename : имя каталога, который необходимо создать, может включать подкаталоги (отделенные прямыми слешами, /).

Возвращаемое значение

true , если каталог создан успешно; false , если нет.

Открывает файл на SD карте. Если файл открывается для записи, и если он еще не существует, то он будет создан (но содержащий его каталог уже должен существовать).

Синтаксис

Параметры

filename : имя файла, который необходимо открыть, может включать каталоги (отделенные прямыми слешами, /), переменная типа char* .

mode (необязательный): режим, в котором открыть файл (по умолчанию FILE_READ ), переменная типа byte . Допустимые значения:

  • FILE_READ : открыть файл для чтения, начиная с начала файла;
  • FILE_WRITE : открыть файл для чтения и записи, начиная с конца файла.

Возвращаемое значение

Объект File , ссылающийся на открытый файл; если файл не может быть открыт, этот объект объект в булевом контексте будет оцениваться как false , то есть вы можете проверить возвращенное значение с помощью » if(f) «.

Удаляет файл с SD карты.

Синтаксис

Параметры

filename : имя файла, который необходимо удалить, может включать каталоги (отделенные прямыми слешами, /).

Возвращаемое значение

true , если файл удален успешно; false , если нет. Если файл не существует, возвращаемый результат не определен.

Удаляет каталог с SD карты. Каталог должен быть пустым.

Синтаксис

Параметры

filename : имя каталога, который необходимо удалить, может включать подкаталоги (отделенные прямыми слешами, /).

Возвращаемое значение

true , если каталог удален успешно; false , если нет. Если каталог не существует, возвращаемый результат не определен.

Класс File

Класс File служит для чтения и записи отдельных файлов на SD карте.

Возвращает имя файла.

Синтаксис

Возвращаемое значение

Проверяет, доступно ли какое-либо количество байтов для чтения из файла.

available() наследуется из вспомогательного класса Stream .

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Количество доступных байтов ( int ).

Закрывает файл и гарантирует, что любые данные, записанные в него, физически сохранены на SD карту.

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Гарантирует, что любые байты, записанные в файл, физически сохраняются на SD карту. Этот метод выполняется автоматически при закрытии файла.

flush() наследуется из вспомогательного класса Stream .

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Читает байт из файла без продвижения к следующему. То есть, успешный вызов peek() возвратит то же значение, что и следующий вызов read() .

peek() наследуется из вспомогательного класса Stream .

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Следующий байт (или символ) или -1, если ничего недоступно.

Выдает текущую позицию внутри файла (то есть, положение, с которого будет прочитан или записан следующий файл).

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Позиция внутри файла ( unsigned long ).

Печатает данные в файл, который должен быть открыт для записи. Числа печатаются как последовательность цифр, каждая ASCII символ (то есть число 123 посылается как три символа ‘ 1 ‘, ‘ 2 ‘, ‘ 3 ‘).

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

data : данные для печати ( char , byte , int , long или string ).

BASE (необязательно): основание для печати чисел: BIN для двоичных (основание 2), DEC для десятичных (основание 10), OCT для восьмеричных (основание 8), HEX для шестнадцатеричных (основание 16).

Возвращаемое значение

print() возвратит количество записанных байтов, чтение этого значения необязательно.

Читайте также:  Btc объемы посмотреть график

Печатает данные, а затем символ возврата каретки или новой строки в файл, который должен быть открыт для записи. Числа печатаются как последовательность цифр, каждая ASCII символ (то есть число 123 посылается как три символа ‘ 1 ‘, ‘ 2 ‘, ‘ 3 ‘).

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

data : данные для печати ( char , byte , int , long или string ).

BASE (необязательно): основание для печати чисел: BIN для двоичных (основание 2), DEC для десятичных (основание 10), OCT для восьмеричных (основание 8), HEX для шестнадцатеричных (основание 16).

Возвращаемое значение

print() возвратит количество записанных байтов, чтение этого значения необязательно.

Ищет новую позицию в файле, которая должна быть между 0 и размером файла (включительно).

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

pos : позиция для поиска ( unsigned long ).

Возвращаемое значение

true , если успешно; false , если нет ( boolean ).

Получить размер файла.

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Размер файла в байтах ( unsigned long ).

Прочитать из файла.

read() наследуется из вспомогательного класса Stream .

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

buf : массив символов или байтов.

len : количество элементов в buf .

Возвращаемое значение

Следующий байт (или символ), или -1, если нет доступных.

Записать данные в файл.

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

data : byte , char или строка ( char * ) для записи.

buf : массив символов или байтов.

len : количество элементов в buf .

Возвращаемое значение

write() возвратит количество записанных байтов, чтение этого значения необязательно.

Каталоги (или папки) – это специальные типы файлов, данная функция сообщает, является ли текущий файл каталогом или нет.

Синтаксис

Параметры

file : объект класса File (возвращается методом SD.open() ).

Возвращаемое значение

Пример

Возвращает следующий файл или каталог в каталоге.

Синтаксис

Параметры

file : объект класса File , который является каталогом.

Возвращаемое значение

char : следующий файл или каталог.

Пример

rewindDirectory() вернет вас назад к первому файлу в каталоге, используется совместно с openNextFile() .

Синтаксис

Параметры

file : объект класса File .

Возвращаемое значение

Пример

Примеры

Некоторые вещи, которые необходимо учитывать при использовании библиотеки SD

Обзор

Связь между микроконтроллером и SD картой использует интерфейс SPI, который занимает цифровые выводы 11, 12 и 13 (на большинстве плат Arduino) или 50, 51 и 52 (Arduino Mega). Кроме того, для выбора SD карты должен использоваться еще один дополнительный вывод. Это может быть аппаратный вывод SS – вывод 10 (на большинстве плат Arduino) или вывод 53 (на платах Arduino Mega) – или какой-либо другой вывод, заданный с помощью вызова SD.begin() . Обратите внимание, что даже если вы не используете аппаратный вывод SS, он должен быть оставлен настроенным для работы на выход, иначе библиотека SD работать не будет. Разные платы расширения для этого используют разные выводы, поэтому убедитесь в правильности выбора вывода в SD.begin() .

Форматирование/подготовка карты

Примечание: всякий раз, когда в данной статье упоминается SD карта, это означает и SD, и microSD размеры, а также SD и SDHD форматы.

Большинство SD карт работает правильно сразу из коробки, но, возможно, ваша карта использовалась в компьютере или камере и не может быть прочитана с помощью библиотеки SD. Форматирование такой карты создаст файловую систему, в которой Arduino сможет читать и писать.

Часто форматировать SD карты нежелательно, так как это уменьшает их срок службы.

Для форматирования карты вам понадобятся SD ридер и компьютер. Библиотека поддерживает файловые системы FAT16 и FAT32, но по возможности лучше используйте FAT16.

Именование файлов

Файловые системы FAT имеют ограничения, когда в них используются соглашения по именованию файлов. Вы должны использовать формат 8.3, в котором имена файлов выглядят так » NAME001.EXT «, где » NAME001 » – строка из 8 или менее символов, а » EXT » – расширение из 3 символов. Люди часто используют расширения .TXT и .LOG . Возможно использовать и более короткие имена (например, mydata.txt или time.log ), но более длинные имена файлов использовать запрещается.

Открытие/закрытие файлов

Когда вы используете file.write() , то на карту ничего не будет записано, пока вы не вызовете flush() или close() . Всякий раз, когда вы открываете файл, убедитесь, что закрыли его, чтобы сохранить свои данные.

Начиная с версии 1.0, стало возможно иметь открытыми сразу несколько файлов.

Различные платы расширения

Ниже приведено несколько различных плат расширения, поддерживающих SD карты. Этот список неполный, но в нем приведены наиболее часто используемые платы.

Источник

Поделиться с друзьями
Объясняем