SDFAT работает с 256 МБ, но не с 4 ГБ SDHC

Калламаш
Солнце 21 января 2018 13:56
Привет, моя настройка - Maple Mini с тактовой частотой до 128 МГц,
SPI (1) приводится в движение часовым прерыванием, кормление SREGS и ЦАПс.
SPI (2) кормит OLED и SD в цикле.

Я начал с 250 МБ.
Карты 4 ГБ, образованные для FAT32,16 Любое размер единицы, разные предварительные изделия SPI....начинать(); даже не возвращает правдоподобие. (2 совершенно новых карт SD);
Известный формированный SD вытащил модуль дедушки Eurorack Forom (Arduino и SD.h) не работает.

Любая подсказка?

Пито
Солнце 21 января 2018 г. 14:26
Чем меньше SDCARD, тем быстрее. Попробуйте уменьшить часы.
Начать с 72 МГц основных часов и 9-18 МГц SPI для SDCARD.

Mrburnette
Солнце 21 января 2018 г. 15:01
Форматирование SD для любого встроенного устройства должно быть сделано с официальным форматером SD: ЗДЕСЬ
Сделайте это даже с новыми картами, чтобы установить базовую линию.

С SD, раковина может быть проблематичной, даже небольшая раковина с короткими прыгунами может внести достаточный сдвиг импеданса, чтобы карта может просто отказаться от правильной работы. Если вам абсолютно необходимо установить SD -читатель, обязательно сохраните минимальную проводку и чисто припаять соединения, ведущие обратно к UC. ИМО, разгрузка просто добавит к проблемам SD на встроенных системах, и я настоятельно рекомендую не делать этого.

Таблица емкости здесь.


Луча

AG123
Солнце 21 января 2018 г. 15:33
Вы используете SD Fat Greiman?
https: // github.com/greiman/sdfat
, Есть несколько примеров, таких как чтение информации SD
https: // github.com/greiman/sdfat/tree/m ... LES/SDINFO
Возможно, стоит попробовать их так, как будто sdinfo не работает, проблема может быть самой подключением (E.глин. Скорость SPI и т. Д.)
Если подключение будет хорошо, то следующим будет выяснить другие вещи, такие как формат жира и т. Д
Я использую 4 -SD -карту 8 ГБ на SPI2, и казалось, что она работает, я использую 72 МГц по умолчанию по умолчанию
Инициализация выглядела примерно так, в значительной степени из примеров // Initialize at the highest speed supported by the board that is // not over 50 MHz. Try a lower speed if SPI errors occur. if (!sd.begin(chipSelectpin, SD_SCK_MHZ(50))) { sd.initErrorHalt(); }

Калламаш
Солнце 21 января 2018 г., 17:06
Ты тебя. Я переоделся на 72 МГц, карты уже были образованы официальными SDFormater.
[AG123 - Солнце 21 января 2018 г. 15:33] - Возможно, стоит попробовать их так, как будто sdinfo не работает, проблема может быть самой подключением (E.глин. Скорость SPI и т. Д.)
Если подключение будет хорошо, то следующим будет выяснить другие вещи, такие как формат жира и т. Д
Я использую 4 -SD -карту 8 ГБ на SPI2, и казалось, что она работает, я использую 72 МГц по умолчанию по умолчанию
Инициализация выглядела примерно так, в значительной степени из примеров
Я езжу на дисплее из того же порта с DMA и двойным буфером, но перед тем, как аксировать SD, он ждет, пока он закончит.
После добавления вывода ошибки, последовательные плиты на меня это. Can't access SD card. Do not reformat. SD errorCode: 0X43,0X5

Калламаш
Солнце 21 января 2018 г., 17:18
Кстати, я только что вытащил 16 ГБ один из старого телефона, и он работает без формирования на 64 МГц SPI Clock-нет.

AG123
Солнце 21 января 2018 г., 17:39
Я также в значительной степени новичок в технологии SD Cards, я думаю, что подсказка о том, что вполне может быть в SD упрощенных спецификациях
https: // www.SDCARD.орг/загрузки/pls/
В частности, часть 1 упрощенная физическая упрощенная спецификация
Раздел 4.7.4 Перечислите различные подробные описание команды, начало p.86
Раздел 4.9 ответов подробно описывают ответы, начальные p.98
Ответы, по -видимому, связаны с командами SDIO, поскольку разные команды имеют разные форматы ответов

Тем не менее, это, кажется, предполагает, что это как -то связано с самой картой *, а не с чем -то, что связано с форматом жира на карте.
Ваш последний ответ на карте 16 ГБ, казалось, подтвердил это

Раздел 4.10.1 карта Статус начала p101
Я делаю дикое предположение, это должно быть 32 -битное поле, но в ответ есть только более низкие 16 бит
Предполагая, что кулачный байт является самым низким байтом
0x43,0x5
0x43 ~ 0100 0011
первые 2 бита зарезервированы, поэтому 3 неизвестно
7 -е бит - событие вызвано
0x05 ~ 0000 0101
бит 0 - готов к данным
Бит 3 - Сброс стирания - последовательность стирания была очищена перед выполнением, потому что была получена команда с эксплуатационной последовательности

Это было бы немного странно, так как казалось, что SDFAT пытается написать что -то на карту, когда она инициализация
----------
Обратите внимание, что одна из этих вещей вполне может быть *плохими или свободными контактами *, я не слишком уверен, что SDFAT пытается написать что -то на карту, чтобы обнаружить, есть ли карта

Стивестронг
Солнце 21 января 2018 18:17
0x43 - код для SD_CARD_ERROR_ACMD41.
https: // github.com/greiman/sdfat/blob/e ... Информация.h#171
Я бы опубликовал проблему на странице Greiman Github.

Калламаш
Солнце 21 января 2018 г. 20:04
Я воссоздал настройку на программном обеспечении и чистом программном обеспечении и 4GB SD (проблематичная настройка - это прототип PCB) .
Я почти уверен, что настройки регистров SPI и DMA во время функции begin () не полностью переопределяют настройки, созданные Display.

Теперь, после отключения всех дисплейной связи 4GB SD Works!!
Все еще не считайте, что это решается, пока я не отследил SPI.Установка ответственности за отсутствие одного типа карт и носков.

victor_pv
Пн 22 января 2018 г. 1:32
Примечание о осторожности, порт SPI1 не должен работать так быстро.
При тестировании того, что у меня было множество ошибок с помощью SD -карты.
Я решил проверить порт SPI в одиночку и подключил TX к RX, затем DMA переводил передачу. Результатом является то, что на максимальной скорости, с DMA для TX и RX и кто -то еще, что делает доступ к памяти (ЦП или другие DMA), иногда у вас есть переполнение буфера и терять байт RX. Я смог поймать, отправив буфер и сравнить то, что я получаю в RX, с тем, что я отправил в TX в конце, и, используя отладчик и глядя на регистры.
Поскольку спецификации MCU утверждают, что порты могут работать не более 18 Мбит / с, и у меня не было проблем с этой скоростью, я больше не проходил тестирование, чтобы попытаться найти способ избежать этого. Я проверил изменение приоритета канала RX DMA до самого высокого уровня и не решил проблему.

Попробуйте ту же самую настройку, которая у вас есть, но замедляйте порт до div4 или div8 и посмотрите, работает ли она. Если вам нужен более быстрый перевод из SDCARD, часто лучше получить лучшую карту с меньшей задержкой и запустить SPI на более низкой скорости, чем просто увеличить скорость SPI на медленной карте, поскольку карта просто добавит больше задержки к иметь время для обработки.

Асмаллри
Пт. 09 февраля 2018 г., 2:27
Наиболее распространенной причиной этого симптома является отсутствующий подтягивающий резистор на карте.