Подписаться на получение новых статей на почту:

Дополнение к статье №19 и 22. Наладка SD-карты с помощью осциллографа. Шаг №24

Здравствуйте уважаемые читатели. В этом кратком посту я выложу «скрины» осциллограммы запуска карты. Очень часто в начале наладки, ”львиная” доля времени уходит на запуск устройства, в данном случае карты. Самое главное увидеть что карта отзывается на первую команду и “кораблик поплыл”. Если все таки случилось, что вполне рабочая карта не отзывается в нашем устройстве,

то тут нам на помощь придет незаменимый осциллограф, который покажет возможные обрывы, плохую пайку или другие нестандартные ситуации из-за которых происходит сбой программы. Поэтому если есть осциллограф то мы можем намного упростить задачу. У меня была проблема с ножкой CS, вот тут меня осциллограф и выручил. Также когда я тестировал две карты miniMMC и microSD прямо от питания программатора, то оказалось, что карта microSD немного “прожорливей” своего собрата и в результате, когда посылала ответ на команду CMD0, то оказывалась, что логическая 1 составляла примерно 2.5 В, т.е. мой контроллер уже не видел этот уровень.

Ну при подключении БП, все было нормально. Так что в таких ситуациях осциллограф очень нужная вещь. Как Вы помните в статье № 22 мы взяли за основу следующую функции инициализации, фрагмент которой показан ниже. Если присутствуют аппаратные баги, то они обязательно вылезут в этих строках. Выделенным желтым строки это и есть основа при настройке. Кто не помнит алгоритм инициализации возвращаемся встатью №19и читаем. Зацикливаем функцию инициализации и проверяем.

DSTATUS disk_initialize (void)
{
          BYTE n, cmd, ty, ocr[4];
          UINT tmr;
          init_spi ();
     1.  for (n = 100; n; n--) dly_100us ();    /* 10ms delay */
     2.  for (n = 100; n; n—)             /*74 такта , можно и 100*/
          {
                 PORT_SD|=_BV (PORT_CK);   /*Импульс или строб*/
                 asm («nop»);    /*Пауза в 1 такт*/
                 PORT_SD&=~_BV (PORT_CK);
           }
           ty = 0;
     3.   select ();    /*PORT_SD &= ~_BV (PORT_CS)*/
     4.   if (send_cmd (CMD0, 0) == 1)    {………

С первой строкой все ясно , это задержка для стабилизации питания. А вот следующий цикл это тактирование. На рисунке ниже скриншот осциллограммы ножки CLK. Ставим щуп на ножку и проверяем. Если все работает идем далее.

Инициализация SD-карты(CLK)

miniMMC (CLK)

         Переходим к 3 пункту. Далее по алгоритму установка линии СS в 0. Проверяем ножку, используем осциллограф. Ниже на скриншоте осциллограмма ножки CS. Как видите линия проседает, мы ее устанавливаем в 0 по условию (статья №19). Вплоть до небольшого импульса, его посылает контроллер уже в функции передачи команды. Смотрим там же. В общем должна быть приблизительно такая картина. Есть идем дальше.

Инициализация SD-карты(CS)

miniMMC (CS)

Со строки в программе под номером 4 начинается передача команды. На скриншотах ниже мы передаем команду карте microSD и miniMMC. Ставим щуп на DI и смотрим. Если импульсы проходят, то идем дальше.

Инициализация SD-карты(microSD DI)

microSD  (DI)

Инициализация SD-карты(miniMMC DI)

miniMMC (DI)

Ну и последний шаг. Мы должны получить ответ от карточки. На скриншоте ниже представлена ситуация, о которой я писал выше, когда уровень напряжения падает ниже логической единицы. Скриншот ниже, питание от программатора microSD. Напряжение составляет примерно 2,6 В.

Инициализация SD-карты(microSD DO)usb

microSD (D0 usb)

Инициализация SD-карты(microSD DI)param

Как видно верхняя граница ответа на рисунке составила 2, 656В. Для моего контроллера Atmega 8A это уже критично. На рисунке ниже мы подключаем блок питания к устройству, контроллер начинает функционировать. Ставим щуп на ножку и ждем реакции карточки.

Инициализация SD-карты(microSD D0)bp

microSD (D0 bp)

            На этом этапе мы убеждаемся, что контроллер тесно связан с картой. Самые первые команды и ответы проходят. Далее можно спокойно проводить процесс наладки. На этом на сегодня все. В следующем посту сделаем небольшую паузу и рассмотрим применение контроллера на примере фазосдвигающего устройства. Всем пока.

Просмотрено 2184 раз.

Я на Google+

Дополнение к статье №19 и 22. Наладка SD-карты с помощью осциллографа. Шаг №24: 3 комментария

  1. А твоё требование сообщить универсальный способ выявления неисправности моста с помощью осциллографа, просто смешно. При том многобразии чипсетов, не может быть универсального способа на все случаи жизни.

    • Не Вы такие интерерсные. Никто даже не заикался об универсально. Здесь просто пример наладки SD карты. ВЫ шото попутали.

  2. Я все таки поддержу автора. Осциллограф все таки незаменим, и какое бы не было разнообразие чипсетов, отсутствие сигнала на линии либо наводку и др. можно увидеть с помощью данного инструмента.

Добавить комментарий

Ваш e-mail не будет опубликован.

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

Subscribe without commenting