Easyelectronics.ru

Электроника для всех
Текущее время: 18 окт 2019, 19:06

Часовой пояс: UTC + 5 часов



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 224 ]  На страницу 1, 2, 3, 4, 5 ... 9  След.
Автор Сообщение
 Заголовок сообщения: SDIO interface for SD card
СообщениеДобавлено: 04 май 2012, 15:02 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Привет всем!
Пришлось создать тему ввиду ее экзотичности на этом форуме.
Подключение по SPI уже пора хоронить.))
Кто работал с подключение карт к STM32 по SDIO?

Имею вопросы.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 05 май 2012, 08:06 
Старожил
Аватара пользователя

Зарегистрирован: 27 апр 2011, 07:50
Сообщения: 404
Я использовал в stm32f103. В библиотеке периферии есть рабочий пример, сделаешь как там, будет работать.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 05 май 2012, 23:01 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Библиотеку эту перерыл вдоль и поперек (с файлами sdio_sd.c и sdio_sd.h в нете есть).

Подключил и заработала для карточки MicroSD только поблочная запись.
При мультиблочной записи некоторые регистры, в частности регистр STA возвращает лживый статус SDIO_FLAG_CTIMEOUT,
а должен возвращать SDIO_FLAG_CMDREND. Таким образом процесс опроса статуса зацикливается и все....

Что я не делал - не могу добиться правильного ответа.... Данные не записываются и не читаются.
Мож кто столкнулся с такой проблемой?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 07 май 2012, 12:31 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Koder писал(а):
Библиотеку эту перерыл вдоль и поперек (с файлами sdio_sd.c и sdio_sd.h в нете есть).

Подключил и заработала для карточки MicroSD только поблочная запись.
При мультиблочной записи некоторые регистры, в частности регистр STA возвращает лживый статус SDIO_FLAG_CTIMEOUT,
а должен возвращать SDIO_FLAG_CMDREND. Таким образом процесс опроса статуса зацикливается и все....

Что я не делал - не могу добиться правильного ответа.... Данные не записываются и не читаются.
Мож кто столкнулся с такой проблемой?


Файлы библиотеки тут


Вложения:
SD_Card.rar [15.55 Кб]
Скачиваний: 2085
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 07 май 2012, 13:38 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
А пример для STM32F4Discovery есть действующий?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 07 май 2012, 13:48 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Werman_Alex писал(а):
А пример для STM32F4Discovery есть действующий?


Пример мой или котрый с этой библиотекой шел?
Пример такой есть. Вместе с этими папками в архиве должна быть папка библиотеки Libraries, но это уже и сами прикрутите)


Вложения:
SD Card.rar [50.95 Кб]
Скачиваний: 1504
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 07 май 2012, 15:16 
Старожил

Зарегистрирован: 25 апр 2010, 10:13
Сообщения: 1927
Откуда: Томск
Я неработал с SD, но обычно вначале изучаю примеры из Keil.
Если у тебя эта IDE посмотри здесь C:\Keil\ARM\Examples\ST\STM32F10xFWLib\Examples\SDIO\
Если нет, прикрепил файлы.
Example description
===================
This example provides a basic example of how to use the SDIO firmware library and
an associate driver to perform read/write operations on the SD Card memory
mounted on the STM3210E-EVAL board.
Below is a description of the different example steps:
- Configure the SDIO according to the desired SDIO_CK clock frequency.
- Reset the SD Card
- Identify the SD Card
- Initializes the SD Card
- Get the SD Card Info
- Select the SD Card
- Enable the Wide Bus mode (4-bit data)
- Erase the correponding blocks
- Read the Erased blocks
- Test if the corresponding Blocks are well erased: check if the EraseStatus
variable is equal to PASSED.
- Set the Data Transfer Mode to DMA
- Write a single Block
- Read a single Block
- Comapare the written Block and the read one: check if the TransferStatus1
variable is equal to PASSED.
- Write multiple Blocks (2)
- Read multiple Blocks (2)

- Comapare the written Blocks and the read one: check if the TransferStatus2
variable is equal to PASSED.


Вложения:
SDIO.rar [23.24 Кб]
Скачиваний: 1310

_________________
Какое небо голубое....(с) лиса Алиса
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 07 май 2012, 16:35 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
В итоге я уже насобирал 3 разных версии библиотек для работы с SDIO. Каждая отличается од другой отсутств. или лишними "строками".
Ху..дожник его знает какая полноценнее....(((
Та, что я кинул выше - это видать кем-то доработана, причем вроде по уму скомпонована, но фишки там свои.. Карточка microSD 128 Мб работает на всех функциях, а карточка с 1 Гб уже не пашет для комманд мультиблоков.

Буду рыть, но это еще далеко не конец....
Спасибо за помощь)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 07 май 2012, 19:31 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
Koder писал(а):
Werman_Alex писал(а):
А пример для STM32F4Discovery есть действующий?


Пример мой или котрый с этой библиотекой шел?
Пример такой есть. Вместе с этими папками в архиве должна быть папка библиотеки Libraries, но это уже и сами прикрутите)



пример который твой... и не для stm32f10x, а для stm32f4xx...
под сотую серию этих примеров хватает, но вот переписывать по четырехсотую геморно


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 09 май 2012, 21:03 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Werman_Alex писал(а):
пример который твой... и не для stm32f10x, а для stm32f4xx...под сотую серию этих примеров хватает, но вот переписывать по четырехсотую геморно

Мне хватает stm32f10x ))
С ее библиотекой тоже не просто.
Че у меня глюки были с записью чтением то, это я функцию SD_ProcessIRQSrc(); не прописал в прерывания SDIO, а просто записал сброс флагов по прерыванию. Да ... делать этого нельзя было.
Надо:
void SDIO_IRQHandler(void)
{
/* Process All SDIO Interrupt Sources */
SD_ProcessIRQSrc();
}

SD_ProcessIRQSrc(); функция хитрая: она устанавливает разные статусы и в том числе необходимый статус, когда DMA завершает транзакцию!
Остальным сенк за помощь!


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 22 май 2012, 18:44 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
Хм...Нашел интересные материалы по карте памяти и подключению FAT.

http://www.rlocman.ru/shem/schematics.html?di=65357

http://piclist.ru/mmc.html

Полезно...полезно..


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 15 июн 2012, 22:48 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
Сотворил проект с SDIO на STM32F407_Discovery, и в итоге получается как... карта инициализируется.... показывает размер блоков на карте и обьем памяти и все...
По SDIO SD_DMA_MODE и SD_POLLING_MODE читает из любого сектора несколько нулей а потом постоянно 0xFFюю что это может быть? Файлики прилагаются... програмлю в IAR 6.30

Koder писал(а):
void SDIO_IRQHandler(void)
{
/* Process All SDIO Interrupt Sources */
SD_ProcessIRQSrc();
}

SD_ProcessIRQSrc(); функция хитрая: она устанавливает разные статусы и в том числе необходимый статус, когда DMA завершает транзакцию!
Остальным сенк за помощь!


Кстати, я SD_ProcessIRQSrc(); вобще было закоментировал и ничего не поменялось... мб это изза нее? Почему она может не срабатывать?


Вложения:
SD_SDIO.rar [17.39 Кб]
Скачиваний: 812
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 16 июн 2012, 12:58 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
void SDIO_IRQHandler(void) используется когда указан режим SD_POLLING_MODE, в режиме SDIO SD_DMA_MODE необходимо в
stm32f4xx_it.c прописать:
Код:
void DMA2_Stream3_IRQHandler(void)//SD_SDIO_DMA_IRQHANDLER
{
  /* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */
  SD_ProcessDMAIRQ();
}

Функция SD_ProcessDMAIRQ(); проверяет и сбрасывает флаг прерывания от DMA по окончания передачи. Stream 3 либо 6 для STM32F4


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 15:24 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
vrr писал(а):
void SDIO_IRQHandler(void) используется когда указан режим SD_POLLING_MODE, в режиме SDIO SD_DMA_MODE необходимо в
stm32f4xx_it.c прописать:
Код:
void DMA2_Stream3_IRQHandler(void)//SD_SDIO_DMA_IRQHANDLER
{
  /* Process DMA2 Stream3 or DMA2 Stream6 Interrupt Sources */
  SD_ProcessDMAIRQ();
}

Функция SD_ProcessDMAIRQ(); проверяет и сбрасывает флаг прерывания от DMA по окончания передачи. Stream 3 либо 6 для STM32F4



ага добавил... ничего не поменялось... потом вобще нафиг закоментровал весь прием-передачу, а пишет все то же самое... по ходу ДМА не пашет толком... или с адресами проблема... буду смотреть...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 15:47 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
если нужно могу, выложить код инициализации DMA, но тока завтра, шас не на месте)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 16:10 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
vrr писал(а):
если нужно могу, выложить код инициализации DMA, но тока завтра, шас не на месте)



оке, буду благодарен))) а пока что сам поколупаю))
и если можно то с настройкой прерываний... а то пока ни разу не срабатывало(
и еще по схемотехнике... у меня висят подтягивающие резюки по 47к на линиях D0-D3, SCL, CMD. Это нормально или лучше какието заменить/убрать? (Но когда запускал карту с SPI то с этими резисторами работало нормально...) так что если сможешь, то пожалуст и схемку подключения карты к контролеру закинь)) а то я было находил таку, где подтяжки были 10к на всех линиях кроме тактовой... а местами говорят что надо вот эти 47к везде....) питание карты 3В с вывода на плате...


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 21:44 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
47к на все линии это нормально, даже обязательно), без них не работает. Схема в фомате Игл тут низя. Просто подключаеш карточку к SDIO интерфейсу STMки, не забывая про поддяжку - вот и вся схема. А код, пардон, тока завтра. Ща далеко от своего кома. Да, есть еще один момент - сама библиотека проверяет наличие карточки в слоте - вывод катрочки CD(card detect). Тебе нужно отследить в коде на какую ногу STMки подключается CD и замкнуть его на землю.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 22:53 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
vrr писал(а):
47к на все линии это нормально, даже обязательно), без них не работает. Схема в фомате Игл тут низя. Просто подключаеш карточку к SDIO интерфейсу STMки, не забывая про поддяжку - вот и вся схема. А код, пардон, тока завтра. Ща далеко от своего кома. Да, есть еще один момент - сама библиотека проверяет наличие карточки в слоте - вывод катрочки CD(card detect). Тебе нужно отследить в коде на какую ногу STMки подключается CD и замкнуть его на землю.



С детектом проблем нету)) уже давно замкнул)) я его себе просто на отдельный пин переписал))
кстати, проявилось нечто новое... подключился по SPI, очистил нулевой сектор и записал туда цифры от 0 до 255 два раза. так вот, сейчас через SDIO читает правильно только 8 первых байт(от 0 до 7) и потом резко переходит на 255 и не меняется больше


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 23:26 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
Цитата:
С детектом проблем нету)) уже давно замкнул)) я его себе просто на отдельный пин переписал))
кстати, проявилось нечто новое... подключился по SPI, очистил нулевой сектор и записал туда цифры от 0 до 255 два раза. так вот, сейчас через SDIO читает правильно только 8 первых байт(от 0 до 7) и потом резко переходит на 255 и не меняется больше


Попросил жену включить TeamViewer;). Слил свой код(во вложениях). Посмотри как инитуется DMA в файле sdio_sd.c (у меня DMA работает через Stream3). Возможно неправильно читает, потому что карточка может отправлять и принимать только по 512 байт.


Вложения:
sdio_sd.rar [19.42 Кб]
Скачиваний: 1153


Последний раз редактировалось vrr 17 июн 2012, 23:50, всего редактировалось 2 раз(а).
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 23:46 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
vrr писал(а):
Цитата:
С детектом проблем нету)) уже давно замкнул)) я его себе просто на отдельный пин переписал))
кстати, проявилось нечто новое... подключился по SPI, очистил нулевой сектор и записал туда цифры от 0 до 255 два раза. так вот, сейчас через SDIO читает правильно только 8 первых байт(от 0 до 7) и потом резко переходит на 255 и не меняется больше


Попросил жену включить TeamViewer;). Слил свой код(во вложениях). Посмотри как инитуется DMA в файле sdio_sd.c (у меня DMA работает через Stream3). Возможно неправильно читает, потому что карточка может отправлять и принимать только по 512 байт.


Очень благодарен)) Буду разбирать))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 17 июн 2012, 23:51 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
Цитата:
Очень благодарен)) Буду разбирать))

Еще незаметил в твоем main.c глобального разрешения прерываний - __enable_irq();, а также в ините DMA разрешение прерывания от DMA - строчка DMA_ITConfig(SD_SDIO_DMA_STREAM, DMA_IT_TC, ENABLE);


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 18 июн 2012, 12:08 
Заглядывает иногда

Зарегистрирован: 07 май 2012, 13:32
Сообщения: 33
Werman_Alex писал(а):
vrr писал(а):
Цитата:
С детектом проблем нету)) уже давно замкнул)) я его себе просто на отдельный пин переписал))
кстати, проявилось нечто новое... подключился по SPI, очистил нулевой сектор и записал туда цифры от 0 до 255 два раза. так вот, сейчас через SDIO читает правильно только 8 первых байт(от 0 до 7) и потом резко переходит на 255 и не меняется больше


Попросил жену включить TeamViewer;). Слил свой код(во вложениях). Посмотри как инитуется DMA в файле sdio_sd.c (у меня DMA работает через Stream3). Возможно неправильно читает, потому что карточка может отправлять и принимать только по 512 байт.


Очень благодарен)) Буду разбирать))


Огромное спасибо) Заработало)) Пошел прикручивать фат32))


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 18 июн 2012, 12:49 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
;)


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 18 июн 2012, 13:41 
Заглядывает иногда
Аватара пользователя

Зарегистрирован: 10 фев 2012, 16:40
Сообщения: 197
Откуда: Украина г.Кировоград
vrr писал(а):
Функция SD_ProcessDMAIRQ(); проверяет и сбрасывает флаг прерывания от DMA по окончания передачи. Stream 3 либо 6 для STM32F4


В прерывании по ДМА я прописал просто

void DMA2_Channel4_5_IRQHandler(void)
{

if (DMA_GetITStatus(DMA2_IT_TC4) == SET)
{
DMA_ClearITPendingBit(DMA2_IT_TC4);
/*!< DMA2 interrupt Channel4 enable */
DMA_ITConfig(DMA2_Channel4, DMA_IT_TC, DISABLE);
}

}


и никаких гвоздей небыло.

Werman_Alex писал(а):
Кстати, я SD_ProcessIRQSrc(); вобще было закоментировал и ничего не поменялось... мб это изза нее? Почему она может не срабатывать?


Нужно ОБЯЗАТЕЛЬНО прописать вызов этой функции в прерывании. Это прерывание должно происходить в любом случае, поскольку передача данных состоялась.
Я же на этом форуме описал, что прокололся на этом.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: SDIO interface for SD card
СообщениеДобавлено: 18 июн 2012, 17:11 
Заглядывает иногда

Зарегистрирован: 31 июл 2010, 21:36
Сообщения: 65
Откуда: Киев
Цитата:
vrr писал(а):
Функция SD_ProcessDMAIRQ(); проверяет и сбрасывает флаг прерывания от DMA по окончания передачи. Stream 3 либо 6 для STM32F4

В прерывании по ДМА я прописал просто

void DMA2_Channel4_5_IRQHandler(void)
{

if (DMA_GetITStatus(DMA2_IT_TC4) == SET)
{
DMA_ClearITPendingBit(DMA2_IT_TC4);
/*!< DMA2 interrupt Channel4 enable */
DMA_ITConfig(DMA2_Channel4, DMA_IT_TC, DISABLE);
}

}

и никаких гвоздей небыло.


Функция SD_ProcessDMAIRQ(); - это готовая библиотечная функция, поэтому я ее использовал без задней мысли). Скажи, а зачем перед выходом из прерывания void DMA2_Channel4_5_IRQHandler(void), его запрещать DMA_ITConfig(DMA2_Channel4, DMA_IT_TC, DISABLE);?


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 224 ]  На страницу 1, 2, 3, 4, 5 ... 9  След.

Часовой пояс: UTC + 5 часов


Кто сейчас на конференции

Сейчас этот форум просматривают: VladislavS


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB