Как загрузить программу в USB микроконтроллер CY7C68013
Нам потребуется:
- отладочная плата с микроконтроллером CY7C68013;
- ПК с установленным драйвером и утилитами для работы с CY7C68013.
1 Описание контроллера и отладочной платы CY7C68013
Чипы CY7C68013 фирмы Cypress («Кипарис») – это семейство микроконтроллеров, которыми можно управлять программно по интерфейсу USB, а также они способны работать автономно, загружаясь из внутренней конфигурационной (16 кб) или внешней памяти. Поддерживается интерфейс USB 2.0. Все чипы имеют малое потребление тока (не более 85 мА) во всех режимах. Имеются встроенная поддержка UART и I2C. Вообще, данные микросхемы обладают огромным количеством возможностей, и для более подробного изучения необходимо читать документацию (а её на данные микросхемы и сопутствующие API реально много).
Для знакомства с микроконтроллером CY7C68013 имеется вот такая недорогая, но функциональная отладочная плата. Она подключается к компьютеру через разъём USB. Её размеры – 55×42×10 мм, вес 14 г.
![]() |
![]() |
Что ещё интересного в данной плате:
- имеет на борту выключатель питания SW1, кнопку сброса RST, кварцевый резонатор X1 на 24 МГц, линейный регулятор напряжения AMS1117, настроенный на 3.3 В;
- 3 светодиода (PWR для индикации питания, D1 и D2 управляемые);
- 2 перемычки (J1 включает светодиоды D1 и D2, J2 для подключения ППЗУ AT24C128);
- 2 гребёнки по 20 выводов – различные порты контроллера CY7C68013 (работают с уровнем 3,3 В, но толерантны к 5 В).
На нижней стороне платы радиоэлементы отсутствуют.
Данная плата имеет несколько ревизий, схема для ревизии "A" приведена на рисунке ниже и в приложении к статье.

2 Установка драйвера и утилит для работы с CY7C68013
Перед началом работы необходимо скачать утилиту Cypress USB Console. Она входит в состав обширного набора Cypress USB Suite и распространяется бесплатно изготовителем (версию CySuiteUSB_3_4_7_B204 можно скачать в приложении к статье).
Подключим плату к компьютеру с установленным джампером J2 (это не даст контроллеру загружаться из энергонезависимой конфигурационной памяти). Указываем операционной системе откуда брать драйвер. Он находится в директории Cypress Suite USB 3.4.7/Driver и называется cyusb.sys.
![]() |
![]() |
3 Загрузка прошивки в CY7C68013 через USB в энергозависимую память (RAM)
Когда драйвер и набор утилит установлены, заходим в директорию Cypress Suite USB/CyConsole и запускаем CyConsole.exe. В окне в списке устройств должен появиться наш контроллер CY7C68013. В данном случае микросхема называется Cypress FX2LP No EEPROM Device.

Для теста нам понадобятся две прошивки: LED.hex и LED.iic. Первая предназначена для загрузки в энергозависимую память (RAM, ОЗУ), вторая – для загрузки в постоянную память (EEPROM, ППЗУ). Прошивки можно скачать в приложении к статье внизу. У прошивки для энергозависимой памяти (led.hex.txt) необходимо поменять расширение на *.hex.
Как самому создавать прошивки для контроллеров CY7C68013 сейчас рассматривать не будем, т.к. это очень обширная тема, и с ней будем разбираться отдельно.
Для загрузки программ в память контроллера выбираем Options EZ-USB Interface. Откроется окно загрузчика. Нажимаем кнопку Download и выбираем файл в формате Intel HEX с расширением *.hex.

При успешной загрузке светодиоды D1 и D2 на плате начнут мигать с частотой примерно 1 раз в секунду.

Если теперь выключить контроллер (кнопкой выключения или подержать пару секунд кнопку сброса), то увидим, что при включении светодиоды не мигают (программа в ОЗУ сбрасывается при потере питания).

4 Загрузка прошивки в CY7C68013 через USB в энергонезависимую память (EEPROM)
Для загрузки программы в постоянную память, обесточим плату CY7C68013 и снимем перемычку J2. Это включит в работу ППЗУ AT24C128, но оно у нас ещё пустое.
Подадим питание на плату. В этом же окне EZ-USB Interface теперь нажимаем кнопку Lg EEPROM. Выбираем файл с прошивкой с расширением *.iic. Если прошивка завершится успешно, светодиоды замигают.
Если теперь обесточить плату, а затем снова включить (джампер J2 всё ещё разомкнут, ППЗУ AT24C128 активно), светодиоды всё равно будут мигать, т.к. контроллер CY7C68013 загрузится из постоянной памяти (программа, записанная в ППЗУ, не сбрасывается при потере питания).
У меня после прошивки ПЗУ микросхема перестала определяться как Cypress, и в диспетчере устройств стала видна как неизвестное устройство USB с идентификатором USB\UNKNOWN.
![]() |
![]() |
Для выхода из такой ситуации можно воспользоваться программатором, чтобы стереть прошивку. У меня имеется специальный тестовый зажим для подключения к запаянным микросхемам в корпусе SOIC8. Подходящий программатор мы обсуждали ранее. После стирания ППЗУ устройство снова стало определяться как микросхема Cypress.

При перепрошивке питание на плату подавать не нужно. Питание поступает от программатора.

5 Программное управление контроллером CY7C68013 с помощью CyAPI
Для программного управления контроллерами фирмы Cypress разработчики создали специальный API – CyAPI.lib. Описание и примеры программ устанавливаются вместе с набором для разработчика Cypress USB Suite в директорию CyAPI. Программа должна быть написана на C++. Также имеется управляемая библиотека классов .NET CyUSB.dll, которая устанавливается в директорию CyUSB.NET. Разработку с использованием библиотеки CyUSB.dll можно вести на таких языках как Visual Basic .NET, C#, J#, C++.
Давайте напишем программу на VB.NET, которая использует CyUSB.dll (если вы пишете на других управляемых языках, то смотрите CyUSB.NET.pdf из состава Cypress USB Suite для деталей).
Создадим пустой проект в Visual Studio и добавим ссылку на библиотеку CyUSB.dll. Теперь импортируем пространство имён CyUSB. Нам станут доступны классы и члены пространства имён CyUSB:
Imports CyUSB
В первую очередь необходимо вызвать статический метод USBDeviceList(). Как параметр в данный метод нужно передать тип устройств, которые вас интересуют: USB, HID или MassStorage (или их объединение по ИЛИ). Он проведёт поиск доступных устройств Cypress и вернёт их список. Например:
Dim usbDevices As New USBDeviceList(CyConst.DEVICES_CYUSB Or CyConst.DEVICES_HID)
Когда получили список устройств, можно добавить обработчик для события подключения/отключения устройств:
AddHandler usbDevices.DeviceAttached, AddressOf DeviceAttachedHandler AddHandler usbDevices.DeviceRemoved, AddressOf DeviceRemovedHandler Private Sub DeviceAttachedHandler(sender As Object, e As USBEventArgs) Debug.WriteLine($"Device {e.Device.FriendlyName} attached") 'делайте что-то своё End Sub Private Sub DeviceRemovedHandler(sender As Object, e As USBEventArgs) Debug.WriteLine($"Device {e.Device.FriendlyName} removed") 'делайте что-то своё End Sub
Далее обращаемся к нужному устройству по индексу, начиная с нуля. Каждое устройство в данном списке имеет тип CyUSBDevice.
Продолжение следует...
Download attachments:
- Схема платы с CY7C68013 (10 Downloads)
- Скачать прошивку для энергозависимой памяти (9 Downloads)
- Скачать прошивку для энергонезависимой памяти (8 Downloads)
- Скачать CySuite USB 3.4.7 (13 Downloads)