Easyelectronics.ru

Электроника для всех
Текущее время: 22 авг 2019, 08:01

Часовой пояс: 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 Кб]
Скачиваний: 2067
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб]
Скачиваний: 1493
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб]
Скачиваний: 1301

_________________
Какое небо голубое....(с) лиса Алиса
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб]
Скачиваний: 809
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: 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 Кб]
Скачиваний: 1144


Последний раз редактировалось 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 часов


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

Сейчас этот форум просматривают: нет зарегистрированных пользователей


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

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

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