Цитата(Obam @ Mar 16 2018, 21:54)
Вот со времён "Старого Доброго ДОС-а" (; похоже, и не отличаете сектор (в SD 512 байт и никаких сусликов) от кластера (; (хоть 2кБ а хоть 32кБ)
Старый добрый ДОС мне много счастья подарил
С сектором да, разобрался - 512 байт и не меняется.
Скачал SDFormatter, форматнул карточку им, произошло чудо - медленные карты теперь идут без заиканий.
Теперь вопрос: какой смысл использовать DMA для карт памяти через SDIO при использовании FatFs ?
Допустим надо считать порцию с файла. Вызывается чтение секторов, но ведь пока DMA не передаст все данные - прийдётся ждать! И сделать ничего не могу дальше, пока файл не считан. Оперативы - сколько в штатном STM32F407, так что спроецировать файловую систему в память не смогу (хотя в другом проекте такое успешно делал, но там памяти 64 МБ было).
Есть ли шанс реорганизовать работу Fatfs без ожидания завершения чтения секторов? Мне кажется, что нет.
Остаётся толко низкоуровневое чтение секторов одного за другим (причем блочное).
Пробовал переводить карту в High Speed Mode, тактовая частота 36 - 52 МГц ( менял делитель PLL_Q для USB, так как согласно эррате на STM32F407 Bypass там не работает) - выигрыша с медленными картами не дало.
Медленная карта - без обозначения класса скорости вообще на 2 ГБ.
С классом скорости 4 - работает отлично.
Я так понял, что разгон тактовой для карты памяти не имеет смысл, когда читаешь 1-секторный блок, так как задержки перед чтением у карты могут быть более длинными по времени.
Так ли это, как я тут изложил свои думалки?