Jump to content

    
Sign in to follow this  
Kostochkin

EMMC 5.0 запись данных

Recommended Posts

Здравствуйте.

Имеется плата с плис spartan6 и micron 8SA17 JZ086, emmc 5.0, 64Gb, питание - 3.3V.

EMMC заведен в плис - clk, reset, cmd, data(8bit). Питание на микросхеме есть.

В плис реализован host emmc.

В железе при инициализации девайса делаю как в документации Embedded Multi-Media Card (e•MMC) Electrical Standard (5.0).

- подаю питание;

- подаю клок 400кГц;

- жду 1.1 мс;

- отправляю CMD0;

- жду 64 такта;

- отправляю CMD1 с аргументом 0xC0FF8080;

- получаю ответ с аргументом 0xC0FF8080 - ОК;

- отправляю CMD2 с аргументом 0x00000000;

- получаю ответ OK;

- отправляю CMD3 с аргументом 0x00000002;

- получаю ответ OK; поднимаю частоту до 25МГрц;

Далее отправляю CMD9, CMD7 - ответы положительные;

Далее конфигурирую CMD6 с аргументом 0x03B70200 - ответ положительный, и CMD6 с аргументом 0x03B90100 - ответ положительный, поднимаю частоту до 50МГрц;

Далее  CMD13 - конечный статус девайса - 0x00000900 - OK;

Далее пытаюсь записать один блок данных 512байт командой CMD25 c аргументом 0x00000000;

Ответа по шине CMD положительный, но после записи блока жду статуса CRC на DAT0,

статус не приходит, только сбрасывается в ноль DAT0 и все, статус девайса по прежнему 0x00000900...

 

Подскажите, может кто-нибудь в курсе в чем проблема? 

Благодарю.

Edited by Kostochkin

Share this post


Link to post
Share on other sites

Тема актуальна, вопрос так и не решил.

Кол-во байт для записи проверил, верно:

- 1 байт - стартовый(x00),

- 512 байт - данные,

- 16 байт - crc16,

- 1 байт - стоповый(xFF).

Проблема еще в том, что нет возможности подключиться осциллографом...

Благодарю.

Edited by Kostochkin

Share this post


Link to post
Share on other sites
21 hours ago, Viktuar said:

И еще, уходит ли mmc в состояние busy?

Ответ R1 на команду записи CMD25 приходит со статусом 0x00000900.

Ответ R1 на команду стоп CMD12 также приходит со статусом 0x00000900.

Как проверить состояние busy? Если по шине DAT0, то DAT0 сваливается в ноль, а статус CRC так и не приходит.

И как запросить число записанных блоков?

Благодарю.

 

Edited by Kostochkin

Share this post


Link to post
Share on other sites

Проблему так и не решил.

Девайс успешно прошел BUS TEST командами CMD19 и CMD14 с шириной шины данных 8 бит.

Получается конфигурация верная, шина работает, а crc token почему-то не приходит, после данных с командами CMD24 или CMD25.

Благодарю.

Share this post


Link to post
Share on other sites

Проблема решилась, дело было в схемотехнике.

У меня  другой вопрос о emmc.

Замерил время записи одного блока данных 512b в девайс. 

Это время оказалось примерно равно 100000 тактов в обычном режиме.

Почему так долго? Я нигде не нашел в документации, сколько времени занимает у девайса записать один блок.

Подскажите, 100000 тактов (при частоте 12мгц это примерно 8мс) это нормально для девайса emmc 5.0?

Замеряю время после получения токена crc, пока DAT0 в нуле.

Благодарю.

Edited by Kostochkin

Share this post


Link to post
Share on other sites
12 minutes ago, aaarrr said:

Да, грубо говоря, получите те же 8 мс на 100 блоков.

Не понимаю.

Но я ведь жду готовности девайса после каждой записи одного блока. Блок записал, жду пока девайс запрограммируется, и опять блок записал, жду пока девайс запрограммируется... Как тогда это время может уменьшиться? Или я что-то не понимаю... Девайс же может и не знать кол-во записываемых блоков.

Edited by Kostochkin

Share this post


Link to post
Share on other sites
23 minutes ago, aaarrr said:

Да, грубо говоря, получите те же 8 мс на 100 блоков.

Наверно вы правы, посмотрел внимательно документацию, ждать запрограммирования устройства надо только после последнего переданного блока.

Благодарю.

ps.jpg

Share this post


Link to post
Share on other sites

Записал 8 блоков командой CMD25, стартовый адрес = X"0100". после 1 блока, долго жду подъема DAT0 - эти же 100000 тактов, после остальных блоков, кроме последнего, DAT0 поднимается в течение 10 тактов... Пробовал задавать кол-во блоков командой CMD23, CMD25 - результат тот же.

Вопрос, почему после записи первого блока 512b девайс так долго занят?

Share this post


Link to post
Share on other sites
47 minutes ago, Kostochkin said:

Вопрос, почему после записи первого блока 512b девайс так долго занят?

Стиранием, например, занят. Вообще, тут полагаться на какую-то определенность в поведении нельзя - гарантируется только средняя скорость.

Share this post


Link to post
Share on other sites
22 hours ago, aaarrr said:

Стиранием, например, занят. Вообще, тут полагаться на какую-то определенность в поведении нельзя - гарантируется только средняя скорость.

Благодарю.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this