Перейти к содержанию
    

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

Имеется плата с плис 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...

 

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

Благодарю.

Изменено пользователем Kostochkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

- 16 байт - crc16,

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

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

Благодарю.

Изменено пользователем Kostochkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Kostochkin said:

 

 

А попробуйте после записи запросить число записанных блоков.

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 hours ago, Viktuar said:

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

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

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

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

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

Благодарю.

 

Изменено пользователем Kostochkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

Благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

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

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

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

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

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

Благодарю.

Изменено пользователем Kostochkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

21 minutes ago, Kostochkin said:

Почему так долго?

Запись единичных блоков всегда неэффективна.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А если записывать, допустим, 100 блоков, то это время будет меньше на каждый блок?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

12 minutes ago, aaarrr said:

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

Не понимаю.

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

Изменено пользователем Kostochkin

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

При записи группы блоков busy будет устанавливаться не после каждого, а раз в N блоков и в конце записи.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

23 minutes ago, aaarrr said:

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

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

Благодарю.

ps.jpg

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

47 minutes ago, Kostochkin said:

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

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

22 hours ago, aaarrr said:

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

Благодарю.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...