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

 
 
 
Reply to this topicStart new topic
> MMC (eMMC)
doom13
сообщение Aug 18 2014, 08:03
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Парочку вопросов задавал тут, ответа не получил.
Проблема осталась, решил создать свою тему.

Есть микросхема N2M400FDB (eMMC флэш память 4 GB) совместимая с JEDEC/MMC standard v4.41.
Возникли вопросы по инициализации (идентификации eMMC) памяти.
Всё делаю согласно документации.
1) Устанавливаю тактовую частоту 400 кГц.
2) Далее отправляю команду GO_IDLE_STATE (CMD0). Память должна перейти в режим ожидания.
3) Отправляю SEND_OP_CMD (CMD1). В ответ должны получить R3.

В ответ на SEND_OP_CMD (CMD1) в регистре ответа вижу значение 0x00FF 8080. В даташите есть строки:
Цитата
the e•MMC devices shall respond with a fixed pattern of either 0x00FF 8080 (capacity less than or equal to 2GB) or 0x40FF 8080 (capacity greater than 2GB) if device is busy, and they shall not move into Inactive state.

Т.е. полученный ответ не соответствует объёму используемой флэш-памяти, почему???
Судя по ответу девайс находится в состоянии "бизи", что можно сделать, чтоб вывести его из этого состояния??? Как работать с памятью дальше при таком "epic fail"???
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 18 2014, 10:48
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Нашёл решение проблемы, после GO_IDLE_STATE (CMD0) надо несколько раз посылать SEND_OP_CMD (CMD1) и ждать пока в ответе R3 в OCR флаг BUSY установится в 1.
Данный бит как-то непонятно работает, после перехода в состояние IDLE надо несколько раз послать SEND_OP_CMD (CMD1) (на второй раз даёт нормальный ответ с BUSY равным 1), чтобы получить ответ, что память готова. От времени, которое прошло после подачи питания он никак не зависит.
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 21 2014, 12:38
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



На рисунках показаны осциллограммы для шины данных eMMC (зелёный - DAT0, жёлтый - DAT3, фиолетовый - DAT7):
1) Bus mode - x1.
2) Bus mode - x4.
3) Bus mode - x8.
Во всех случаях записывается 512 байт, почему время записи для x4 и x8 получилось одинаковым?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 22 2014, 07:34
Сообщение #4


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Нашёл, что одинаковое время записи для x4 и х8 обусловлено работой MMC контроллера. DMA пока не использую, поэтому на время заполнения фифо данными на шине отсутствует тактирование (поправте, если что-то неправильно понимаю). На осциллограммах: жёлтый - CLK, зелёный - DAT0, голубой - DAT3, фиолетовый - DAT7.
1) Режим x4
2) Режим х8
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 22 2014, 08:44
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Может быть кто подскажет, какую частоту CLK (для SDR) потянет память???
Характеристики памяти ниже, нужно пояснение, что означают параметры в таблице?
Эскизы прикрепленных изображений
Прикрепленное изображение
Прикрепленное изображение
 
Go to the top of the page
 
+Quote Post
sergeystm32
сообщение Aug 8 2018, 12:51
Сообщение #6





Группа: Новичок
Сообщений: 2
Регистрация: 8-08-18
Пользователь №: 106 602



Подскажите как задать контроллеру eMMC переход на 4bit BUS или 8 bit BUS

SDIO_CmdInitStructure.Argument = 0x03B70100;
SDIO_CmdInitStructure.CmdIndex = SDMMC_CMD_HS_SWITCH;
SDIO_CmdInitStructure.Response = SDMMC_RESPONSE_SHORT;
SDIO_CmdInitStructure.WaitForInterrupt = SDMMC_WAIT_NO;
SDIO_CmdInitStructure.CPSM = SDMMC_CPSM_ENABLE;

SDMMC_SendCommand(SDMMC1, &SDIO_CmdInitStructure);

Отправляю команду вот так, правильно ли это?
Go to the top of the page
 
+Quote Post
doom13
сообщение Aug 8 2018, 13:42
Сообщение #7


Профессионал
*****

Группа: Свой
Сообщений: 1 404
Регистрация: 11-03-11
Из: Минск, Беларусь
Пользователь №: 63 539



Как-то так было:
CODE

void EmmcMem::SetBusWidth(unsigned int width)
{
CardStatus status;
unsigned long arg;
MmcCmdReg cmdreg;

BusWidth(width);

switch(width)
{
case BUS_WIDTH_1X:
arg = 0x03B70000;
break;
case BUS_WIDTH_4X:
arg = 0x03B70100;
break;
case BUS_WIDTH_8X:
arg = 0x03B70200;
break;
default :
break;
}

status.all = GetStatus();
while((status.bit.CURRENT_STATE) != TRAN)
{
status.all = GetStatus();
}

cmdreg.all = 0;
cmdreg.bit.CMD = 6;
cmdreg.bit.RSPFMT = 1;
cmdreg.bit.BSYEXP = 1;

SendCmd(cmdreg, arg);

Resp_R1();

while(BusyDetected())
;
}
Go to the top of the page
 
+Quote Post
sergeystm32
сообщение Aug 9 2018, 08:21
Сообщение #8





Группа: Новичок
Сообщений: 2
Регистрация: 8-08-18
Пользователь №: 106 602



CMD7 перехожу в Transfer State
CMD6 c arg=0x03B90100; для перехода на более высокую тактовую
CMD6 c arg=0x03B70100; для включения шины в 4bit
SD_Init4bit24mhz(); настраиваю sdio в stm32 на 4bit bus и 24МГц
CMD25 WRITE_MULT_BLOCK
и теперь смотрю на d0-d3 осциллографом но ничего нет(

в чем может быть ошибка? чего не хватает?
Go to the top of the page
 
+Quote Post
Viktuar
сообщение Sep 27 2018, 17:58
Сообщение #9


Участник
*

Группа: Участник
Сообщений: 21
Регистрация: 18-12-16
Пользователь №: 94 676



Цитата(sergeystm32 @ Aug 9 2018, 09:21) *
CMD7 перехожу в Transfer State
CMD6 c arg=0x03B90100; для перехода на более высокую тактовую
CMD6 c arg=0x03B70100; для включения шины в 4bit
SD_Init4bit24mhz(); настраиваю sdio в stm32 на 4bit bus и 24МГц
CMD25 WRITE_MULT_BLOCK
и теперь смотрю на d0-d3 осциллографом но ничего нет(

в чем может быть ошибка? чего не хватает?

Может не хватает самих данных biggrin.gif
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 18th April 2024 - 02:02
Рейтинг@Mail.ru


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