Цифровой логический анализатор имеет следующие параметры:
- количество входных цифровых каналов – 8;
- уровни входных сигналов – 3,3 В ТТЛ;
- максимальная частота входного сигнала в каждом канале – 24 МГц.
В качестве аппаратной платформы для анализатора использована недорогая плата USB-адаптера CY7C68013A USB Board производства Waveshare [1, 2]. Принципиальная схема платы приведена на рисунке 1.

Плата выполнена на базе популярной у разработчиков микросхемы CY7C68013A производства Cypress Semiconductor [3]. Микросхема представляет собой универсальный контроллер со встроенным ядром 8051 и аппаратным интерфейсом USB. Её обозначение в технических описаниях и статьях по применению от производителя – EZ-USB FX2LP. Рабочая конфигурация контроллера EZ-USB FX2LP определяется его управляющей программой, загруженной во внутреннюю оперативную память микросхемы. В зависимости от задачи контроллер может быть настроен для выполнения тех или иных функций. Программное обеспечение контроллера загружается в его оперативную память посредством интерфейса USB с компьютера или же посредством интерфейса I2C из внешней памяти EEPROM. Заметим, что на плате CY7C68013A USB Board имеется микросхема внешней памяти EEPROM с интерфейсом I2C, однако для создания на базе этой платы логического анализатора данную микросхему необходимо заменить, о чём будет подробнее рассказано далее.
Для обеспечения возможности функционирования USB-устройства на шине для него должны быть заданы параметры дескрипторов устройства Vendor ID (VID) и Product ID (PID). Также для USB-устройства может быть задан параметр Device ID (DID).
Порядок задания значений VID, PID и DID для микросхемы CY7C68013A описан в [4]. При включении питания внутренняя логика CY7C68013A проверяет его порт I2C на предмет наличия на этой шине внешней памяти EEPROM. Если таковая на шине обнаруживается, то логика читает из EEPROM по нулевому адресу записанный туда байт данных. В случае если этот байт равен 0xC0, контроллер загружает из EEPROM данные, записанные сразу за байтом 0xC0, считая их значениями VID, PID и DID USB-устройства. При этом значение каждого дескриптора занимает в памяти два байта. Далее контроллер использует прочитанные значения при установлении соединения через USB с USB-хостом.
В случае если прочитанный по нулевому адресу из EEPROM байт равен 0xC2, контроллер копирует дальнейшее содержимое EEPROM в свою внутреннюю оперативную память.
Если память EEPROM на шине не обнаруживается, контроллер CY7C68013A использует в качестве VID, PID и DID заданные по умолчанию значения, показанные в таблице.

Таким образом, при отсутствии внешней памяти EEPROM плата CY7C68013A USB Board определяется на шине USB как USB-устройство EZ-USB FX2LP производства Cypress Semiconductor. При наличии EEPROM пользователь может самостоятельно задать тип устройства, в качестве которого будет определяться плата. Указанная возможность позволяет использовать для проектируемого логического анализатора уже готовое программное обеспечение поддержки, свободно распространяемое несколькими производителями. Это может быть, например, программа Saleae Logic от фирмы Saleae, предлагающей на рынке также логические анализаторы собственного производства. Они имеют гораздо лучшие характеристики, чем анализатор, описанный в настоящей статье, но и стоят при этом существенно дороже. Программа Saleae Logic актуальной и более ранних версий может быть бесплатно загружена с сайта производителя [5]. Автор использовал версию 1.2.10. Оговоримся, что использование указанной программы с чужим «железом» с правовой точки зрения допустимо только для частного домашнего применения, но не для промышленного или корпоративного.
Установленная и запущенная на компьютере программа Saleae Logic обнаруживает подключённое USB-устройство на базе контроллера CY7C68013A и загружает через USB в его встроенную оперативную память свой исполняемый код. После этого контроллер начинает функционировать как аппаратная часть многоканального логического анализатора, а программа Saleae Logic обеспечивает его поддержку на компьютере, однако это происходит только в том случае, если программа Saleae Logic предварительно считает из контроллера корректные значения дескрипторов VID, PID и DID. Они должны соответствовать дескрипторам логического анализатора, выпускаемого самой фирмой Saleae. Информация о значениях дескрипторов своих изделий фирма Saleae держит в открытом доступе [6]. В данном случае интерес представляют дескрипторы VID=0x0925, PID=0x3881 для первого устройства из линейки (Logic), которое и будет имитироваться. Корректное значение дескриптора DID было подобрано опытным путём.
Необходимо заметить, что корректная поддержка программой Saleae Logic аппаратных средств контроллера CY7C68013A возможна только в том случае, если в качестве микросхемы внешней памяти EEPROM с интерфейсом I2C используется микросхема, у которой адресация записываемой или считываемой ячейки (Word Address) осуществляется одним адресным байтом. Это справедливо для микросхем памяти EEPROM с интерфейсом I2C начиная с 24CL02 до 24CL16 включительно, т.е. ёмкостью не более 256 байт. У микросхем большей ёмкости адресация ячейки осуществляется двумя байтами (Address MSB и Address LSB). На плате CY7C68013A USB Board производителем установлена микросхема U2 FM24CL64 ёмкостью 1024 байта, которую необходимо заменить на любую из приведённого перечня. Автор использовал микросхему FM24CL16.
Производитель CY7C68013A фирма Cypress Semiconductor бесплатно предлагает для этого контроллера набор драйверов под различные операционные системы, а также инструментальное программное обеспечение разработки-отладки, позволяющее конструировать на базе CY7C68013A USB-устройства различного назначения. Это ПО, в частности, обеспечивает возможность программирования внешней памяти EEPROM с интерфейсом I2C. На сайте Cypress Semiconductor [3] можно после регистрации загрузить программный пакет Cypress Suite USB. Этот же пакет можно загрузить и без регистрации с wiki-страницы платы CY7C68013A USB Board [2]. После установки пакета Cypress Suite USB под ОС Windows 7 в меню «Пуск» создаётся каталог Cypress, в котором содержатся входящие в пакет программные компоненты. Из них для настоящей задачи интерес представляют две утилиты: USB Control Center и Cypress USB Console.
Необходимо заметить, что микросхема внешней памяти EEPROM с интерфейсом I2C на плате CY7C68013A USB Board может быть отключена с помощью перемычки-джампера, прерывающего ведущую к EEPROM линию SDA шины I2C. Указанная возможность потребуется для обеспечения возможности программирования этой микросхемы.
Программирование микросхемы внешней памяти EEPROM с интерфейсом I2C платы CY7C68013A USB Board на компьютере с ОС Windows 7 осуществляется в следующем порядке.
Плата с установленной микросхемой внешней памяти FM24CL16 или микросхемой меньшей ёмкости подключается к компьютеру через интерфейс USB, при этом перемычка-джампер P-SDA на плате должна быть разомкнута, т.е. микросхема памяти должна быть отключена. ОС Windows 7 должна обнаружить подключённое USB-устройство и после установки его драйвера определить его как Cypress FX2LP No EEPROM Device (см. рис. 2).

Установка драйвера для Cypress FX2LP No EEPROM Device осуществляется путём запуска исполняемого файла с драйверами продуктов Cypress CypressDriverInstaller.exe, который можно загрузить бесплатно после регистрации с сайта Cypress Semiconductor [3].
После установки драйвера следует запустить программу Cypress USB Console из каталога Cypress и убедиться, что эта программа обнаружила подключённую плату CY7C68013A USB Board (см. рис. 3).

Затем необходимо, не отключая плату от компьютера, установить на ней перемычку-джампер P-SDA, подключив тем самым микросхему внешней памяти к шине I2C. После этого следует в программе Cypress USB Console открыть окно интерфейса программирования памяти, выбрав в меню Options → EZ-USB Interface. Открывшееся окно показано на рисунке 4.

В окне EZ-USB Interface значения всех настроек следует оставить заданными по умолчанию. Кликом на кнопке S EEPROM нужно задать в открывшемся окне файлов и каталогов файл прошивки микросхемы EEPROM с интерфейсом I2C – файл с расширением iic. О том, как его создать, будет рассказано далее. После задания этот файл будет сразу же записан в микросхему памяти. По итогам записи программа Cypress USB Console выдаст сообщение, содержащее информацию о статусе произведённой записи и количестве записанных данных. В случае благополучного завершения записи – Download Successful: 256 bytes downloaded. На этом подготовку аппаратной части логического анализатора к работе можно считать полностью завершённой.

Программа USB Control Center, главное окно которой показано на рисунке 5, позволяет решить ту же задачу по программированию внешней памяти EEPROM с интерфейсом I2C, что и Cypress USB Console. Для этого нужно выбрать в её меню Program FX2 → Small EEPROM, а затем в открывшемся окне файлов и каталогов задать файл прошивки микросхемы внешней памяти. Помимо этого, программа позволяет получить весьма подробную информацию о каждом подключённом к хосту USB-устройстве, что может быть весьма полезно при разработке-отладке приложений на базе контроллера CY7C68013A.
Создание файла прошивки микросхемы FM24CL16 производится в следующем порядке. Для подготовки и редактирования этого файла можно использовать любой редактор шестнадцатеричных данных. Множество таких программ можно бесплатно загрузить из интернета. Автор использовал редактор HxD, главное окно которого с созданным в нём файлом прошивки показано на рисунке 6.

Текст файла прошивки в окне набирается с клавиатуры. Для микросхемы FM24CL16 он должен иметь размер, соответствующий ёмкости этой микросхемы, – 256 байт. Первый байт данных в файле должен быть равен 0xC0, следующие четыре байта – содержать значения VID и PID логического анализатора Logic, затем должны идти два нулевых байта, что соответствует DID=0. Заметим, что значение DID может быть и не нулевым. Следующие несколько байт также нулевые, как показано на рисунке. Последнее было установлено опытным путём. Все остальные байты имеют значение 0xFF, что соответствует стёртой ячейке памяти. При сохранении файлу прошивки присваивается расширение iic, чтобы его могли распознать программы Cypress USB Console и USB Control Center.
Для подачи исследуемых цифровых сигналов в анализаторе используются контакты PB0…PB7 разъёма J1, соединённые с одноимёнными входами контроллера CY7C68013A U1 (см. рис. 1). Эти входы соответствуют каналам Channel 0…7 программы Saleae Logic.
Во второй части статьи речь пойдёт о работе с программой Saleae Logic, а также будут приведены примеры анализа сигналов для различных цифровых шин передачи данных.
Литература
- High speed USB module with embedded 8051 core, USB mini-AB connector: https://www.waveshare.com/product/CY7C68013A-USB-Board-mini.htm
- CY7C68013A USB Board (mini): https://www.waveshare.com/wiki/CY7C68013A_USB_Board_(mini)
- SuiteUSB 3.4 – USB Development tools for Visual Studio: http://www.cypress.com/documentation/software-and-drivers/suiteusb-34-usb-development-tools-visual-s....
- EZ-USB FX2LP™ USB Microcontroller CY7C68013A/CY7C68014A CY7C68015A/CY7C68016A. Cypress Semiconductor Corporation. Document # 38-08032: http://www.cypress.com/file/138911/download
- Older Saleae Logic Beta Downloads: https://support.saleae.com/hc/en-us/articles/210245603-Older-Saleae-Logic-Beta-Downloads
- The device’s USB VID & PID failed: https://support.saleae.com/hc/en-us/articles/210245393-The-device-s-USB-VID-PID-failed
Если вам понравился материал, кликните значок — вы поможете нам узнать, каким статьям и новостям следует отдавать предпочтение. Если вы хотите обсудить материал —не стесняйтесь оставлять свои комментарии : возможно, они будут полезны другим нашим читателям!