Приветствую Вас ГостьПонедельник, 20.05.2024, 21:33

AVR & ARDUINO




Каталог статей

Главная » Статьи » Справочник

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

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

На странице библиотеки SD перечислены не все ее функции, поскольку некоторые из них относятся к функциям вспомогательных классов.

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

(Примечание: здесь и далее под SD-картой памяти подразумеваются карты формата SD или SDHC стандартных размеров - как SD, так и microSD).

Чаще всего SD-карты продаются отформатированными и готовы к работе сразу после покупки. Если же вы используете карту памяти от фотоаппарата или компьютера, то, вероятнее всего, она не будет работать с библиотекой SD. В этом случае карту необходимо отформатировать в файловую систему, поддерживаемую Arduino.

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

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

На Windows : щелкните правой кнопкой на значке вашей SD-карты, после чего из контекстного меню выберите пункт "Форматировать...". Убедитесь, что в качестве файловой системы выбрана система FAT.

На Mac OSX: При форматировании устройства, OSX размещает на нем ряд скрытых системных файлов. Чтобы этого избежать используйте алгоритм:

1. Вставьте SD-карту в картридер.

2. Если Вы не знаете как найти номер устройства с SD-картой, то:

2b. Откройте программу Disk Utility (расположенную в меню Applications > Utilities).

2c. Выделите устройство SD-карты (верхний значок), а не том SD-карты (нижний значок)

2d. Перейдите на вкладку Erase.

2e. Выберите *Volume Format: MS-DOS (FAT)* Щелкните Erase... > Щелкните Erase

Название раздела SD-карты изменится в форму устройства UNIX, например, "disk5s1". Этот номер будет изменени на "Untitled". Сейчас мы отформатировали карту в формат MS-DOS FAT 32. Далее можно переформатировать в формат FAT 16.

Если у вас есть номер устройства SD-карта, вам необходим путь к SD-карте устройства.

3. Обычно для Mac путь к устройствам "/dev". Введите в терминальном окне "cd /dev" и нажмите клавишу Enter для перехода в каталог "dev". Введите "ls" и нажмите клавишу Enter. В списке вы увидите номер устройства SD-карты.

Форматирование SD-карты в FAT 16:

4. В программе Disk Utility, выберите устройство SD Card и щелкните на Unmount сверху, но не вынемайте ее. Иконка SD-карты исчезнет с рабочего стола.

5. Перейдите в окно терминала. Будьте внимательны и введите следующую команду. Убедитесь, что вы вводите правильный номер устройства и путь, так как вы можете очень легко стереть ваш жесткий диск в Unix.

newfs_msdos -F 16 (путь до каталога с устройствами)/(номер устройства SD Card)

например, newfs_msdos -F 16 /dev/disk5s1

и нажмите клавишу Enter

На Linux : вставьте SD-карту памяти и откройте терминал. В командной строке наберите "df" и нажмите Enter. Команда выведет системное имя устройства, соответствующее вашей SD-карте - оно будет выглядеть примерно так: "/dev/sdb1". Отмонтируйте SD-карту памяти, не вынимая ее из кардридера. Далее, наберите в терминале "sudo mkdosfs -F 16 /dev/sdb1", где вместо "/dev/sdb1" необходимо указать системное имя вашего устройства. Извлеките и снова подключите SD-карту для проверки ее работоспособности.

Имена файлов

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

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

Функция file.write() физически не записывает данные на карту памяти, она лишь помещает их в определенный буфер, который сбрасывается на карту только при вызове функции flush() или close(). Поэтому, после каждого открытия файла не забывайте закрывать его, в противном случае ваши данные могут быть утеряны.

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

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

Arduino Ethernet Shield

Плата расширения Ethernet поставляется со встроенным разъемом для SD-карт памяти и при подключении располагается над Ардиуно. В качестве контакта CS для активизации SD-карты используется контакт 4, поскольку традиционный 10 контакт задействован Ethernet-модулем. Поэтому, для работы с SD-картой необходимо использовать команду SD.begin(4).

Отладочная плата Adafruit Micro-SD

Данная плата предназначена для работы с Micro-SD картами памяти. Прежде, чем начать с ней работать, необходимо соединить ее выводы с платой Ардуино несколькими проводниками. Для этого подключите контакт GND к земле, 5V к 5V, CLK - к контакту 13 Ардуино, DO - к контакту 12, DI - к контакту 11, и CS - к контакту 10. Если контакт 10 на Ардуино уже занят - можно использовать любой другой свободный контакт, указав его функции SD.begin().

Плата расширения Sparkfun SD

Плата расширения Sparkfun также крепится поверх Ардуино, но в качестве контакта CS SD-карты использует контакт 8. Поэтому, в данном случае для работы с картой памяти необходимо использовать команду SD.begin(8). Примечание: существует новая версия платы расширения Sparkfun, которая внешне выглядит так же. Основное отличие состоит в том, что на старых версиях платы отсутствует соединение с шиной 3.3В и нет встроенного 6-разрядного инвертора.


Библиотека SD

Справочник

Материалы взяты с официального сайта проекта Arduino и представлены по лицензии Creative Commons Attribution-ShareAlike 3.0 License.



Источник: http://www.arduino.cc/en/Reference/SDCardNotes
Категория: Справочник | Добавил: magi (07.05.2015)
Просмотров: 2395 | Теги: Карта памяти, форматирование, FAT32, fat, FAT16, SD | Рейтинг: 0.0/0
Всего комментариев: 0
avatar
Поиск
Вход на сайт
На правах рекламы

Мы переезжаем на сайт Arduino по-русски