Реклама на сайте DatasheetsDatasheets

KAZUS.RUN - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Книги и журналы
FAQ по электронике

  Datasheets
Поиск SMD
Онлайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Схемы и проекты
Принципиальные схемы
  Программы
Каталог сайтов
Калькуляторы
  Форумы по электронике
Помощь проекту


 
Опции темы

STM32+SDIO+SDHC16Gb

Непрочитано 18.11.2015, 11:45  
black27512
Временная регистрация
 
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
black27512 на пути к лучшему
По умолчанию STM32+SDIO+SDHC16Gb

Доброго времени суток.
Пытаюсь запустить STM32F103 на работу с картами SDHC большого объема через SDIO. Требуется просто чтение и запись блоков без ФС.
На просторах инета ходит много реализаций библиотеки, переделанной из примера от STM. Но что древние, что самые новые допилы имеют одну и ту же болячку - а именно не работают с картами выше 4Gb, выглядит это так:
Инициализация проходит без ошибок, как и с младшими картами по объему, но при чтении блока или нескольких блоков читаются не корректные данные. Например, при чтении блока с номером 0 получаем то что в файле rd_block0_sdhc16gb.txt (где скрыто там везде нули), оно похоже на MBR, но увы это не MBR. Такая же непонятность происходит и с 8 и с 16 и с 32Gb картами, c картами 4Gb и ниже всё работает нормально, при том, что 4Gb тоже является SDHC.
Может кто сталкивался ?
Вот ссылки на два тестовых проекта на разных либах под CoIDEv2
https://yadi.sk/d/nvmGmTT8kWCae
https://yadi.sk/d/-HUNdeggkXfsF
или во вложении
Кристалл stm32F103 c sdio. Главное что бы дебагер был и флешка на sdio, остальное не важно. Запустить в дебаге, затем остановить и посмотреть массив data_rd.
Вложения:
Тип файла: txt rd_block0_sdhc16gb.txt (3.9 Кб, 42 просмотров)
Тип файла: zip 1_.ZIP (1.83 Мб, 46 просмотров)
Тип файла: zip 2_.ZIP (1.26 Мб, 32 просмотров)
Реклама:

Последний раз редактировалось black27512; 18.11.2015 в 12:06.
black27512 вне форума  
Непрочитано 18.11.2015, 12:41  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Как-то не было таких проблем. Работаю с 8Gb картами уже давно. И через SPI и через SDIO.
Easyrider83 вне форума  
Непрочитано 18.11.2015, 13:25  
black27512
Временная регистрация
 
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
black27512 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

А есть РАБОТАЮЩИЙ пример кода ?
black27512 вне форума  
Непрочитано 18.11.2015, 13:33  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Конечно есть. Домой доберусь, выложу.
Easyrider83 вне форума  
Непрочитано 19.11.2015, 01:17  
black27512
Временная регистрация
 
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
black27512 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Примерно разобрался почему такой глюк возникает, но причину, вернее раскуривать механизм как это устроено лень, да и не нужно, т.к. всё равно предполагается работа просто с массивом флеш-памяти, а не с ФС. Оказалось, что на флешках большого объема почему-то реальная MBR смещена в блок 0x2000 (вероятно бывают и другие варианты), в начале думал что об этом где-то в CID/CSD можно узнать, но вроде не там это хранится. А вот в секторе 0 хранится лишь что-то похожее и видимо указывает на MBR. Ну а на компе проги по какой-то причине показывают флешку не с начала, а именно с блока 0x2000, в итоге данные, которые читает МК вообще найти на компе невозможно. Забавно, что если при помощи МК затереть блок 0, то тогда комп начинает флешку показывать с нуля, то есть значит всё таки это ни как не связано с флешкой и картридером аппаратно, а срабатывает прослойка на компе...
Собственно потому у тех, кто использует либу FatFs проблема эта ни как не возникает... Товарищ Chen видимо это давно знает...
black27512 вне форума  
Непрочитано 19.11.2015, 10:41  
Easyrider83
Гуру портала
 
Аватар для Easyrider83
 
Регистрация: 27.10.2008
Адрес: ЕС
Сообщений: 10,821
Сказал спасибо: 919
Сказали Спасибо 4,289 раз(а) в 2,570 сообщении(ях)
Easyrider83 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Вот пример для SPI. Но работает четко.
https://copy.com/3cW4fd2aAAFyZCdP
А вот пример под SDIO
https://copy.com/UL2DYOZKlXh1sRG9
Easyrider83 вне форума  
Эти 4 пользователя(ей) сказали Спасибо Easyrider83 за это сообщение:
arty123 (12.12.2015), AYuM (27.11.2015), black27512 (19.11.2015), justnsn (18.03.2016)
Непрочитано 25.11.2015, 01:44  
black27512
Временная регистрация
 
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
black27512 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Попутно возник еще вопрос. Это нормально, что скорость на SDIO раза в 3-4 ниже чем на SPI ? Или что-то я делаю не так ?

На SPI на запись более 1мб/с получается, что даже удивляет немного.
А вот на SDIO 350кб/с одноблочная запись и 300кб/с (!) мультиблочная. Что-то тут не так...
black27512 вне форума  
Непрочитано 25.11.2015, 01:56  
STM32F0
Заблокирован
 
Регистрация: 22.04.2014
Сообщений: 0
Сказал спасибо: 15
Сказали Спасибо 366 раз(а) в 284 сообщении(ях)
STM32F0 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Что-то не так делаете.
STM32F0 вне форума  
Непрочитано 26.11.2015, 23:24  
black27512
Временная регистрация
 
Регистрация: 13.07.2008
Сообщений: 62
Сказал спасибо: 4
Сказали Спасибо 4 раз(а) в 4 сообщении(ях)
black27512 на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Всё таки всё так, что бы мультиблок был эффективен оказывается нужно записывать мноооого блоков, а не 4 кб как у меня. Ну а ОЗУ не резиновое, так что думаю решить только путем нарезки функции на куски и не прерывая цепочку мультиблоков записывать уже приличные объемы.
Вся причина в задержке в конце функции SD_WriteMultiBlocks:

/*!‹ Add some delay before checking the Card Status */
for(count = 0; count ‹ 0xFFFF; count++);

А это не хилая такая задержка. Просто механизм таков, что на самом деле даже указывая количество блоков всё равно это используется только для самой функции, а флешке только сообщается через ACMD23 (задание количества блоков для предстирания), а вот CMD23 (явно указывающая количество блоков на запись/чтение) не используется по причине не поддерживания её большинством флешек (не только SDSC). В итоге всё тормозится CMD12 (Stop Transfer), а т.к. после этого флешка впадает в состояние программирования (записи) последних данных, то видимо кроме как паузой подкараулить момент окончания ни как нельзя.
При убирании паузы сразу с ошибкой выпадает.
black27512 вне форума  
Непрочитано 26.11.2015, 23:44  
realid
Супер-модератор
 
Аватар для realid
 
Регистрация: 15.10.2007
Сообщений: 3,578
Сказал спасибо: 175
Сказали Спасибо 1,567 раз(а) в 810 сообщении(ях)
realid на пути к лучшему
По умолчанию Re: STM32+SDIO+SDHC16Gb

Сообщение от black27512 Посмотреть сообщение
после этого флешка впадает в состояние программирования (записи) последних данных, то видимо кроме как паузой подкараулить момент окончания ни как нельзя.
Как так-то? Проверкой статуса можно проверить в каком состоянии она находится. Надо читать статус и ждать пока не выйдет с programming state.
Или вот еще
Цитата:
If all write buffers are full, and as long as the card is in Programming State (see SD Memory Card state diagram Figure 4-3 ), the DAT0 line will be kept low (BUSY).
У меня, кстати, встречался какой-то глюк с одной картой и она после записи висела в programming state без конца.
realid вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Изучаем STM32 Cortex M3 EugVor ARM 6171 20.05.2025 20:16
Подключение DS18b20 к STM32 aftaev ARM 85 22.11.2016 10:58
Драйвер (не VCP) для встроенного USB STM32 vvv998 ARM 106 08.11.2014 21:36
sdio stm32 banzayy ARM 2 16.09.2013 18:05
Проблема с ST-LINK +KEIL + STM32 LionRJ Микроконтроллеры, АЦП, память и т.д 5 06.03.2012 17:21


Часовой пояс GMT +4, время: 15:14.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.