|
STM32 SDIO 4bit SD-card, Подскажите кто делал, в чем может быть проблема |
|
|
|
Mar 26 2012, 08:46
|
Группа: Новичок
Сообщений: 5
Регистрация: 23-03-12
Пользователь №: 70 962

|
Polling выдаёт ошибку, а interrupt мне не подходит. Да и непонятно почему запись проходит в ДМА, а чтение - нет.
|
|
|
|
|
Feb 16 2013, 11:32
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
пытаюсь "поженить" scmRTOS на stm32f103 с SD картой fatfs через стмовский драйвер по SDIO интерфейсу. процесс с обработчиком SD-карты имеет самый низкий приоритет. проблема заключается в том, что при чтении с карты виснет время от времени после посылки команды на чтение. что в режиме дма, что в режиме прерываний. выяснил, что если ОС прерывает процесс между посылкой команды и обработкой ответа на команду в процедуре CmdResp1Error, в которой сбрасываются флаги прерываний модуля sd, буфер фифо успевает заполниться и соответственно после сброса флагов прерывание не возникает. вопрос состоит в том, как безболезненно заблокировать ОС на эти пару команд? худо-бедно начинает работать при делителе тактового сигнала на 30 примерно 2 МГц. без ОС все работает.
Сообщение отредактировал dezna - Feb 16 2013, 11:34
|
|
|
|
|
Feb 17 2013, 07:26
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(DmitryM @ Feb 17 2013, 10:34)  TCritSect cs; если не трудно объясните пожалуйста что это даст, и как этим воспользоваться?
|
|
|
|
|
Feb 18 2013, 06:14
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
что это такое разобрался, но в документации нет примера использования. конструктор вызываю. как вызвать деструктор? я в с++ пока не горазд. начал изучать только из-за ОС.
|
|
|
|
|
Feb 18 2013, 06:27
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(DmitryM @ Feb 18 2013, 10:18)  деструктор вызовется компилятором при выходе из секции. а нельзя ли принудительно его вызвать? код просто написан так, что в теле одного блока нужно запретить/разрешить. драйвер SD карты взят от STM. а там упаришься переделывать.
|
|
|
|
|
Feb 18 2013, 06:56
|
Знающий
   
Группа: Свой
Сообщений: 583
Регистрация: 7-06-06
Из: Таганрог
Пользователь №: 17 840

|
Цитата(dezna @ Feb 18 2013, 09:27)  а нельзя ли принудительно его вызвать? код просто написан так, что в теле одного блока нужно запретить/разрешить. драйвер SD карты взят от STM. а там упаришься переделывать. При выходе из блока автоматически будет вызван деструктор, который восстановит состояние, предшествовавшее входу в критическую секцию. Т.е. при таком способе отсутствует возможность «забыть» разрешить прерывания при выходе из критической секции. P.S. для обсуждения scmRTOS есть отдельный форум scmRTOS
|
|
|
|
|
Feb 18 2013, 07:01
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(DmitryM @ Feb 18 2013, 10:56)  P.S. для обсуждения scmRTOS есть отдельный форум scmRTOSспасибо.
|
|
|
|
|
Feb 21 2013, 11:50
|
Участник

Группа: Участник
Сообщений: 25
Регистрация: 18-03-11
Пользователь №: 63 690

|
Цитата(Allregia @ Feb 21 2013, 12:26)  Блин, столкнулся с тем, что SD-коннекторы бывают с нормльно замкунытым пином SD-Detect! Теперь придется два варианта программы делать, смотря что на плату напаяют (там 2 футпринта совмещены). зачем 2 варианта? если есть свободная нога контроллера, то в зависимости от держателя замыкать или нет на землю. нога как вход с подтяжкой. замыкать - дорожка под обрезание, или перемычка на ПП под каплю припоя. а программа при старте анализирует и соответственно реагирует. или например делать исключающее или ножек.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|