реклама на сайте
подробности

 
 
> SDIO интерфейс STM32F407, Не понятна работа
isz
сообщение Jul 25 2016, 08:44
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 16
Регистрация: 2-10-09
Из: Екатеринбург
Пользователь №: 52 693



Добрый день.
Не могу разобраться с работой интерфейса SDIO.
Шлю по очереди команды CMD0, CMD8, CMD55.
Команда 0 без ответа. После команды 8 получаю нормально ответ (опросом бит CTIMEOUT, CMDREND, CCRCFAIL региста STA. Как и положено бит выставляется после получения ответа.
Проблема возникает при отправке следующей команды. Функция отправки команды отдает сразу управления не дожидаясь получения ответа. Соответственно и в регистре RESPCMD содержится старая команда CMD8.

Код функции отправки команд:

Код
SDIO->ICR=(SDIO_ICR_CCRCFAILC | SDIO_ICR_CTIMEOUTC | SDIO_ICR_CMDRENDC | SDIO_ICR_CMDSENTC);

SDIO->ARG=argument;
SDIO->CMD=(uint32_t)(cmd&SDIO_CMD_CMDINDEX)|respType|SDIO_CMD_CPSMEN;

if (respType==NoResponse)
{
    while (!(SDIO->STA & (SDIO_STA_CTIMEOUT | SDIO_STA_CMDSENT))) {};
}
else
{
    while (!(SDIO->STA & (SDIO_STA_CTIMEOUT | SDIO_STA_CMDREND | SDIO_STA_CCRCFAIL))) {};
}

response[0]=SDIO->RESP1;
response[1]=SDIO->RESP2;
response[2]=SDIO->RESP3;
response[3]=SDIO->RESP4;


Вот что видно в логическом анализаторе. Линия D6 - это вывод отладки. Переключаю его состояние при выходе из функции отправки. Видно, что при отправке последней команды контроллер выходит из функции в самом начале. Перед командой 55 поставлена искусственная задержка.



Заранее благодарю за помощь.
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 25th June 2025 - 02:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01309 секунд с 7
ELECTRONIX ©2004-2016