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

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

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

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

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

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


 
Опции темы
Непрочитано 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,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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,835
Сказал спасибо: 918
Сказали Спасибо 4,308 раз(а) в 2,573 сообщении(ях)
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,529
Сказал спасибо: 172
Сказали Спасибо 1,560 раз(а) в 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 6166 19.02.2024 18:22
Подключение 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, время: 01:33.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot