Перейти к содержанию
    

Чтение блока данных с SDHC карты по интерфейсу SPI на ATMega88

Доброго времени суток, товарищи программисты. Тема имеет посредственное отношение к AVR, но не нашелся куда еще написать (надеюсь модераторы поправят если что)

Ситуация следующая: имею плату с ATMega88, к которой прикручен разъем под микро SD карту (подключение по SPI, питание 3.3 В вся плата). Пользуясь разными источниками, накидал функции инициализации карточки и чтения блоков (запись пока не очень интересует). Вставляю отформатированную виндой в FAT32 флешку на 32 Гб. Инициализация проходит успешно, карта переходит в режим Idle, затем возвращает, что инициализирована и флаг HC, то есть до этого момента всё ожидаемо.

Далее считываю блок по адресу 0, отправляю по UART буфер для контроля, сравниваю с тем, что прочел с этой же карты с помощью программы HxD, и данные отличаются. Причем очень. Более того, я выполнил поиск полученных данных по всей карте, и нашел этот кусок данных совсем в другом блоке, причем со смещением. То есть данные, которые идут в начале полученного по UART блока, располагаются совсем в другом блоке и не с нулевого смещения. Но что больше всего меня вводит в ступор, полученный по UART блок данных заканчивается стандартным 55 AA 😵

Резюмирую: Считанный авркой блок 512 байт по адресу 0: [кусок 1] [кусок 2] [55 AA]. Считанный HxD блок 512 байт по адресу не 0: [кусок ?] [кусок 1] [кусок ?] [55 AA].

Вставлял другую карту на 16 Гб, ситуация повторилась, правда я не искал полученные данные по всей карте. Но данные отличались.

В симуляторе Proteus работает нормально, правда образ SD я ему подсовывал полученный в WinImage объемом в несколько десятков Мб.

Пробовал взять готовый пример с SD картой, как есть откомпилил залил, всё тоже самое.

Есть у кого нибудь мысли, как такое может быть? Я мог бы понять проблему со смещениями при передачи адреса блока, но я считываю нулевой блок, как ни крути, но это должно быть самое начало памяти карты.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 20.07.2023 в 04:08, Romeo13Cs сказал:

сравниваю с тем, что прочел с этой же карты с помощью программы HxD, и данные отличаются. Причем очень.

А уверены в том, что программа читает физические сектора, а не логические?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

On 7/21/2023 at 4:09 PM, mantech said:

А уверены в том, что программа читает физические сектора, а не логические?

Блин, точно, ларчик просто открывался. Там есть вариант открыть физический или логический диск, и я разумеется открывал логический. Получается проблем с чтением нет, есть проблема с пониманием как найти начало логического диска на физическом. Я просто использовал стороннюю библиотеку FAT32, думал подсовываю ей нулевой сектор и всё должно работать. Спасибо большое.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...