Как загрузить программу в USB микроконтроллер CY7C68013
Нам потребуется:
- отладочная плата с микроконтроллером CY7C68013;
- USB программатор CH341A (опционально);
- тестовый зажим (опционально);
- ПК с установленным драйвером и утилитами для работы с 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 подключены к портам PA0 и PA1, соответственно);
- 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.
Вообще, устройства семейства FX2LP позволяют загружать исполняемый код (прошивку) четырьмя способами:
- из ППЗУ;
- через пользовательское приложение на ПК;
- через внешнее параллельное ПЗУ;
- через файл скрипта.
Мы рассмотрим только первые два способа.
3 Загрузка прошивки в CY7C68013 через USB в энергозависимую память (RAM)
Когда драйвер и набор утилит установлены, заходим в директорию Cypress Suite USB/CyConsole и запускаем CyConsole.exe. В окне в списке устройств должен появиться наш контроллер CY7C68013. В данном случае микросхема называется Cypress FX2LP No EEPROM Device.
Для теста нам понадобятся две прошивки: LED.hex и LED.iic. Первая предназначена для загрузки в энергозависимую память (RAM, ОЗУ), вторая – для загрузки в постоянную память (EEPROM, ППЗУ). Прошивки можно скачать в приложении к статье внизу.
Как самому создавать прошивки для контроллеров 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 загрузится из постоянной памяти (программа, записанная в ППЗУ, не сбрасывается при потере питания).
5 Восстановление VID и PID микроконтроллера CY7C68013 после неудачной прошивки
В ходе экспериментов случается, что после перепрограммирования ПЗУ микросхема перестаёт определяться как Cypress CY7C68013. В таком случае в диспетчере устройств она может быть видна как неизвестное устройство USB с идентификатором USB\UNKNOWN.
Для выхода из такой ситуации можно воспользоваться программатором, чтобы стереть прошивку, записанную в ПЗУ. Чтобы не отпаивать микросхему памяти с платы, имеется специальный тестовый зажим. С помощью такого зажима можно подключаться к запаянным микросхемам в корпусе SOIC8. Подходящий программатор мы обсуждали ранее. После стирания ППЗУ нулями устройство снова будет определяться как микросхема Cypress CY7C68013.
При перепрошивке питание на плату подавать не нужно. Питание поступает от программатора.
Есть и более простой способ. Устанавливаем перемычку J2 и подключаем плату к компьютеру; CY7C68013 загружается без ПЗУ. Теперь удаляем перемычку и с помощью CyConsole загружаем файл reset_vid_pid.iic, который можно скачать внизу в приложении к статье (сброс VID и PID микроконтроллера CY7C68013). В данном файле прописаны идентификаторы и версия по умолчанию для данной микросхемы. После перевключения питания микросхема должна определиться корректно.
6 Преобразование файлов *.HEX в *.IIC для микросхемы Cypress CY7C68013
Для конвертирования из формата прошивки для временной памяти в прошивку для ППЗУ в комплекте разработчика существует специальная консольная утилита, которая называется Hex2bix.exe. Она расположена по пути c:\Cypress\Cypress Suite USB 3.4.7\Firmware\bin\ и устанавливается вместе с CyConsole (скачать можно внизу статьи). Путь, естественно, может отличаться, если вы устанавливали в другую директорию.
Для использования запускаем консоль: Win + R, затем набираем cmd и «Enter». В консоли набираем:
cd c:\Cypress\Cypress Suite USB 3.4.7\Firmware\bin\
Теперь можно вводить команды для утилиты Hex2bix. Полный список команд приведён на иллюстрации ниже и доступен при вводе Hex2bix -help (или -? или -h) в окне консоли.
Например, для преобразования нашего файла led.hex в led.iic нужно ввести:
hex2bix -i -f 0xC2 -o led2.iic -p 0x8613 -v 0x04b4 led.hex
Файл led.hex должен лежать в одной директории с утилитой, иначе придётся прописывать полный путь к нему.
Здесь:
- флаг -i указывает утилите, что выходной формат файла – *.iic;
- флаг -f со значением 0xC2 задаёт значение стартового байта файла (см. примечание ниже);
- флаг -o задаёт имя выходного файла;
- -p задаёт PID;
- -v задаёт VID;
- последним идёт имя преобразуемого *.hex файла.
Первый байт в файле прошивки задаёт способ загрузки микросхемы Cypress: B0, B2 – для EZ-USB, B4, B6 – для EZ-USB FX, C0, C2 – для EZ-USB FX2. Значение 0xX0 копирует VID, PID, DID из ППЗУ во внутреннее ПЗУ. Значение 0xX2 берёт значение идентификаторов из ППЗУ.
В результате выполнения данной команды получим файл led2.iic прошивки для ППЗУ микросхемы Cypress.
Кстати, исходный код утилиты hex2bix открытый, и скачать его можно здесь.
7 Программное управление контроллером 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 (731 Downloads)
- Скачать datasheet на CY7C68013 (702 Downloads)
- Скачать CySuite USB 3.4.7 (1474 Downloads)
- Скачать прошивки для CY7C68013 (1094 Downloads)
- Сброс VID и PID микроконтроллера CY7C68013 (1130 Downloads)
Поблагодарить автора:
Поделиться
2 comments
-
Дмитрий Среда, 20 Сентябрь 2023 14:31 Ссылка на комментарий
Спасибо! Я как раз начал экспериментировать с этой платой. Ваша статья очень помогла. Правда, пришлось повозиться с установкой драйвера (тот драйвер, что в составе CySuite 3.4.7, требует ручной правки, не имеет цифровой подписи и потому ставится на Win7 максимум, а на Win10 встал драйвер из FX3 SDK). Ваш LED.HEX загрузился и светодиоды на плате замигали. :-) Теперь буду пробовать компилировать свою программку - я уже долгое время работаю с C8051 от SiLabs, Keil uVision мне хорошо знаком.
-
aave1 Среда, 20 Сентябрь 2023 18:36 Ссылка на комментарий
Отлично, рад, что вы нашли что-то полезное в моей статье!) Удачи в освоении!