Два косяка SD Shield...

Stambulo
Offline
Зарегистрирован: 05.06.2014

Привет. Помогите разобраться с модулями для карт памяти SD.

Недавно приобрел два Shield`а для SD карт. Один - MicroSD, второй - SD. Использую Arduino Uno R3 (точнее клон XDRduino). Начал с MicroSD, проблем вообще никаких. Разные скетчи грузятся и работают нормально. На нем, на MicroSD шилде, присутствует чип LV125A.

Дальше взялся за SD. Как заявлено продавцом на сайте - "SD Card Modul for Arduino ARM MCU"... На зтом шилде нет чипа LV125A. Может быть именно по этому появились две проблемы:

1) Во первых карта не инициализируется (скетч - CardInfo):

Initializing SD card...initialization failed. Things to check:
* is a card is inserted?
* Is your wiring correct?
* did you change the chipSelect pin to match your shield or module?

Немного поигрался и заметил, что для решения проблемы необходимо, не отключая питание, извлечь и снова вставить SD карту. Тогда инициализируется - "Initializing SD card...Wiring is correct and a card is present." И даже распознает тип карты - "Card type: SDHC".

2) Вторая прблема - Карта не читается:

Initializing SD card...Wiring is correct and a card is present.
 
Card type: SDHC
Could not find FAT16/FAT32 partition.
Make sure you've formatted the card

Карта - SDHC, 8Gb, 10 Class. Потратил много времени на поиски решения, всё напрасно... Потом взял карту MicroSD, которая нормально работает в микро шилде. SDHC, 8Gb, 4 Class. Вставил её в адаптер MicroSD->SD. Вставил адаптер с ней в SD Shield. То-же самое, не распознается пока не извлечешь и не вставишь назад. А дальше все равно не читается. Google мне посоветовал правильно форматировать. Попробовал - SDFormatter. Результата ноль. Всё как и было. Нашел советы по изменению скорости (SPI_FULL_SPEED, SPI_HALF_SPEED, SPI_QUARTER_SPEED), то же никаких изменений. Но потом вспомнил про карту памяти в смартфоне... SDHC, 16Gb, 10 Class. C инициализацией всё так же. Но после извлечения и установки на место, всё отлично работает !!! И читает и пишет.

========================================================

В результате появилось два вопроса. Может кто сталкивался, подскажите. Хотя бы общее направление укажите. Куда копать ? :-)   Буду пробовать всё варианты.

1) Как решить вопрос инициализации программным способом, без извлечения карты ? Пробовал отключать и снова подключать разные провода. Не помогло... Может есть программная возможность устроить сброс, или что-то в этом роде... Планирую использовать в гараже без батареек, 220v. А там на ночь вырубают свет. Тогда при подаче питания, карта не будет работать... Может можно её как-то программно "извлечь" и снова "вставить" ?

2) Второй вопрос - почему так получается что некоторые карты читаются а некоторые нет ? Значит дело не в самом модуле и не в чипе LV125A. Слышал что не все карты поддерживают SPI... Но ведь одна и та-же карта micro, которая нормально работает в MicroSD shield`e, она же с SD адаптером, вдруг не работает в SD shield`e... В чём проблема ? Чем отличаются эти карты ? Может дело в "Arduino ARM" из описания продавца ? Но карта из смартфона работает с Arduino UNO... Как решить эту проблему программно ? Ну или - какую карту купить, чтоб точно читалась ?

Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013
Stambulo
Offline
Зарегистрирован: 05.06.2014

Пушной звер пишет:

https://www.youtube.com/watch?v=TWBzFzLPXxI

Автор ролика утверждает что библиотека не работает с картами более 4Gb. Но моя microSD 16Gb из смартфона, с адаптером MicroSD->SD, читается и записывается этой же библиотекой, в этом же SD модуле. Правда есть проблема с инициализацией. И карта microSD 8Gb, отлично ратотает с этой же самой прошивкой, но с модулем microSD.

Еще в этом ролике SD модуль подключается на аппаратный ICSP. А я подключал на:

  * 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
 
Подключил на аппаратный. Ничего не изменилось... Пробовал питание 3,3 и 5 вольт. Всё по прежнему.
Может действительно проблема в размере карты ? Но у меня нет карты меньше 8Gb. Не хотелось бы покупать новую карту, да еще и маленкого объема. Тем более что микро карты 8 и 16 Гб работают на микро модуле.
Как мне заставить работать SD ? Что еще попробовать ?
Пушной звер
Пушной звер аватар
Offline
Зарегистрирован: 17.03.2013

Stambulo пишет:

Автор ролика утверждает что библиотека не работает с картами более 4Gb.

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

и там еще сказано о том, что ненужно, модули рассчитанные на 3,3 вольтовую логику, сувать в 5 вольтовую ардуину..

Stambulo
Offline
Зарегистрирован: 05.06.2014

Пушной звер пишет:

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

Спасибо за уточнение.

Пушной звер пишет:

и там еще сказано о том, что ненужно, модули рассчитанные на 3,3 вольтовую логику, сувать в 5 вольтовую ардуину..

А вот это видимо и есть моя проблема ! На моем модуле действительно есть только котроллер питания, 4 резистора и 4 конденсатора. Значит по этому его нельзя подключать к UNO. Кстати была уже такая мысль, но нашел карту которая читалась и записывалась, вот я и отложил эту мысль... Не зря продавец написал - Arduino ARM mcu...

Спасибо большое за помощь ! Буду теперь искать информацию о конвертации уровней. Кстати если знаете хорошую статью об этом, дайте ссылку пожалуйста.