Дек 282012
 

Изучая просторы ebay на предмет недорогих логических анализаторов, натолкнулся на интересный продукт китайской электроники. Отладочная плата на основе микроконтроллера фирмы Cypress, представляемая китайскими продавцами в качестве логического анализатора. Давно хотел обзавестись логическим анализатором, полезная штука, позволяет при подключении к линиям различных интерфейсов наблюдать за тем, что реально передается по этим шинам. При этом информация из ноликов и единичек преобразуется в читаемый формат, например hex или ASCII. Заинтересовался этой платой, решил заказать и испытать. Все-таки за цену чуть менее 12$ не жалко поиграться и забыть, если не понравится.Вид 1И вот, на этой неделе пришла посылка с платой, ниже делюсь результатами первых опытов.

Посылка шла более 1,5 месяцев, тут наша почта как всегда порадовала стабильностью. Первое впечатление – по качеству местами есть изъяны, но не критично. Это относится как к пайке, так и к конструкторской подготовке платы. Заметно, что паяли в большой спешке, особенно по микроконтроллеру. На фото этого не видно, но пайка, как говорится, “холодная”. Обратите внимание на позиционные обозначения компонентов R5, C8 (справа, между микроконтроллером и микросхемой памяти) и реально установленные детали.

Вид 2

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

Сердце платы – микроконтроллер CY7C68013A из семейства EZ-USB FX2LP фирмы Cypress. Способен поддерживать высокоскоростной обмен данными по стандарту USB. На базе ядра 8051, собственной памяти программ не имеет, здесь только RAM.

FX2LP_Block_Diagram

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

На плате была установлена микросхема памяти AT24С128. Прошивка логического анализатора подразумевает работу с микросхемой меньшего объема памяти – AT24C02. Попытка “загнать” родную прошивку без замены памяти оказалась неудачной, подозреваю что страничная структура памяти у них отличается. Поэтому первой переделкой была замена внешней памяти. Микросхему с таким размером памяти Atmel видимо уже не выпускает, во всяком случае, в ближайшем магазине не оказалось. Вместо нее установил такую же от Микрочипа – 24LC02. Далее приведу исходную схему отладочной платы и на ней покажу все внесенные изменения.

Схема

Итак, первое что делаем – это замена внешней памяти: была установлена AT24C128, заменил на 24LC02 (или можно установить AT24C02 ). Вроде бы можно установить микросхему с большим объемом памяти, но сам я не экспериментировал, поскольку удалось купить именно нужного размера. Далее необходимо сделать так, чтобы была возможность временно отключать линию SDA от микроконтроллера. Для этого я задействовал джампер J1 (см. схему). Выпаял резисторы R7, R8, а также перерезал дорожку, соединяющую J1 с напряжением питания VCC. Далее перерезал линию SDA между контроллером и памятью, и проводками пустил это соединение уже через джампер J1. 

Джампер top

Вид 3

Такое разрывное соединение линии SDA потребуется в дальнейшем, при заливке “прошивки” в память. Джампер J2 не используется и должен быть постоянно замкнут, в схеме логического анализатора он излишний, можно даже закоротить его выводы пайкой, чтобы не путаться в дальнейшем.

Итак, после небольших переделок аппаратной части, плата готова к загрузке программы логического анализатора.

При работе с анализатором я использовал программу Saleae Logic. Вот список выбора протоколов, поддерживаемых программой:

Протоколы Saleae

Также есть программа USBee Suite, которая умеет работать еще и с USB, но пока я ее не пробовал. Поэтому все изложенное ниже будет относиться к ПО от Saleae.

Для программирования платы понадобится непосредственно сам файл прошивки логического анализатора Saleae.iic, а также программа Cypress Suite USB. Файл прошивки можно загрузить у меня, перейдя по этой ссылке. Программа Cypress Suite USB загружается с официального сайта Cypress. Эта программа является инструментом для прошивки “железа”, а также устанавливает нужный драйвер, чтобы при подключении платы через USB порт система опознала микроконтроллер CY7C68013A семейства EZ-USB FX2LP. После загрузки программа устанавливается по умолчанию в папку Cypress на диск С. Сначала расскажу о процессе установки на компьютер с WinXP (32-бит), в этом случае все заработало сразу и без проблем. Затем отдельно упомяну процесс установки на Win7 (64-бит), поскольку при этом потребовались другие драйвера. Итак, после установки Cypress Suite USB, запускаем программу CyConsole. Подключаем плату к компьютеру, при этом линия SDA на плате между контроллером и памятью должна быть РАЗОМКНУТА!!! (у меня для этого приспособлен джампер J1, см. выше). Теперь в диспетчере устройств и программе CyConsole должно появиться новое устройство.

Диспетчер устройств

А вот теперь, после корректного определения устройства в системе, необходимо соединить линию SDA, установив на место джампер J1, при этом НЕ ОТКЛЮЧАЯ ПЛАТУ ОТ КОМПЬЮТЕРА! Потому что далее потребуется программировать микросхему памяти, и интерфейс I2C теперь должен быть восстановлен. Такие манипуляции с джампером необходимы, чтобы система корректно опознала микроконтроллер при подключении. (Программу CyConsole можно запустить и после подключения платы, это некритично). 

После правильного определения системой подключенного устройства, в меню Options выбираем пункт EZ-USB Interface

USBConsole

и открывается окно интерфейса программирования. Жмем кнопку S EEPROM и выбираем файл прошивки saleae.iic.

S EEPROM

Удачная прошивка микросхемы памяти должна завершиться таким сообщением в окне лога программы:

 

USBConsole download successful

Программа Saleae Logic находится на сайте Saleae.com в разделе Downloads, там есть версии для различных операционных систем. После установки нужно заново подключить плату к компьютеру (джампер J1 теперь всегда должен быть замкнут). Теперь в диспетчере устройств мы должны увидеть обнаружение платы логического анализатора:

Диспетчер устройств Saleae определился

После подключения платы и запуска программы Saleae Logic, в ее заголовке мы должны увидеть надпись Connected. Теперь можно выбирать нужный протокол и выполнять его настройки. Всего программа позволяет работать с 8 цифровыми каналами, на плате это выводы B0-B7. Обращу внимание, что питание микроконтроллера 3,3В, поэтому я работал с такими уровнями сигналов.

Хотя вроде бы входы микроконтроллера толерантны к уровням 5В, но сам я не испытывал. В дальнейшем планирую доработать плату установкой микросхемы -  преобразователя уровней.

Посылки слал с платы STM32-DISCOVERY, использовав свои же готовые примеры с этого сайта.  Я пока попробовал расшифровывать только два протокола: SPI и UART. Для интерфейса SPI код примера переделал, поочередно передавал два байта 0xAA и 0х55, это байты с чередующимися 0 и 1, чтобы было наглядней. При этом к анализатору подключил только две линии: MOSI и SCK.

Saleae Logic SPI

Для проверки расшифровки интерфейса UART использовал готовый пример из статьи без каких-либо изменений.

Saleae Logic UART

И, в завершении, упомяну об установке драйверов устройства для 64-разрядной Windows 7. При установке Cypress Suite USB на “семерку” кроме программы CyConsole появилась еще и программа Control Centrel, ее тоже можно использовать для прошивки микросхемы памяти, у нее немного другой интерфейс, но действия выполняет те же.

USB Control Center

USB Control Center Small EEPROM

USB Control Center прошивка памяти

У меня на “семерке” устройство сразу определилось как “неизвестное”, система не нашла нужных драйверов. Полазив по форуму Cypress, нашел на их сайте решение данной проблемы, необходимо в папке с установленной программой Cypress Suite USB заменить драйвера и, после подключения платы, когда она определится как “неизвестное” устройство, выполнить переустановку драйверов, указав путь к ним . При этом у меня еще потребовалось отключить проверку цифровой подписи драйверов (при перезагрузке операционной системы, жмем F8 и появляется список, одним из пунктов которого является отключение этой проверки). Вот информация с сайта Cypress, по таблице можно определить в какой папке необходимо заменить файлы для конкретной операционной системы:

Замена драйверов

Архив с драйверами можно загрузить у меня по ссылке:

 Driver Cypress.

Файлы, которые необходимо поменять, находятся в папке C:\Cypress\Cypress Suite USB 3.4.7\Driver\bin\. У меня после этого все заработало как надо, будут вопросы — обращайтесь, какие-то мелкие нюансы я мог упустить.

В дальнейших планах, завести внешние сигналы через преобразователь уровней 3,3В – 5В. Пока не придумал как это лучше сделать, либо установить микросхему на отдельную плату и засунуть обе платы в корпус, или же как-то иначе. Хотя упаковать все в корпус, конечно, будет необходимо.

  7 Responses to “Логический анализатор на микроконтроллере CY7C68013A”

  1. 921600 бод по USART потянет такой анализатор?

  2. «AT24C128, заменил на 24LC02 (или можно установить AT24C02 )»
    К сожалению с AT24C02b у меня не заработало,а с 24LC16B запахало, видимо нужны именно LC.
    SDA можно не отрезать, просто снимать джампер J2, загружать USB Control Center, далее возвращать J2 на место и производить прошивку используя Small EEPROM. Я сделал именно так, все получилось,
    Вообще автору огромное спасибо.

  3. ChipSpace, если епромку AT24C128 прошить готовым хексом посредством внешнего программатора, то анализатор будет работать?Или же дело не в способе прошивке епром а именно во внутренней организации памяти и тогда только замена? И опять же если нужную микросхему прошить готовым хексом, то тогда потребнось в отключении SDA отпадает?

    • Под AT24C128 у меня программы не было, поэтому пришлось менять.
      Может быть. Такой вариант я не пробовал.

    • Отвечу подробней. По-моему, микросхемы все же отличаются структурой памяти, возможно дело в размере страниц. Я специально не искал ответ, было не принципиально, нужная микросхема доступна и недорога, а заменить быстро. В общем, таким путем мне было пойти проще.
      По второму вопросу, опять же мне было проще использовать вариант с отключением SDA и дальнейшим «самопрограммированием», чем поиск другого способа. Не думаю, что он был бы проще в реализации.