Рейтинг@Mail.ru

Как загрузить программу в USB микроконтроллер CY7C68013

автор:
Be the first to comment! Электроника
Print Friendly, PDF & Email
В данной статье мы научимся основам работы с микроконтроллерами CY7C68013: как загружать их из конфигурационной памяти и с компьютера, а также поморгаем светодиодом.

Нам потребуется:

1 Описание контроллера и отладочной платы CY7C68013

Чипы CY7C68013 фирмы Cypress («Кипарис») – это семейство микроконтроллеров, которыми можно управлять программно по интерфейсу USB, а также они способны работать автономно, загружаясь из внутренней конфигурационной (16 кб) или внешней памяти. Поддерживается интерфейс USB 2.0. Все чипы имеют малое потребление тока (не более 85 мА) во всех режимах. Имеются встроенная поддержка UART и I2C. Вообще, данные микросхемы обладают огромным количеством возможностей, и для более подробного изучения необходимо читать документацию (а её на данные микросхемы и сопутствующие API реально много).

Для знакомства с микроконтроллером CY7C68013 имеется вот такая недорогая, но функциональная отладочная плата. Она подключается к компьютеру через разъём USB. Её размеры – 55×42×10 мм, вес 14 г.

Плата с CY7C68013
Плата с CY7C68013
Составляющие платы с CY7C68013
Составляющие платы с CY7C68013

Что ещё интересного в данной плате:

  • имеет на борту выключатель питания SW1, кнопку сброса RST, кварцевый резонатор X1 на 24 МГц, линейный регулятор напряжения AMS1117, настроенный на 3.3 В;
  • 3 светодиода (PWR для индикации питания, D1 и D2 управляемые);
  • 2 перемычки (J1 включает светодиоды D1 и D2, J2 для подключения ППЗУ AT24C128);
  • 2 гребёнки по 20 выводов – различные порты контроллера CY7C68013 (работают с уровнем 3,3 В, но толерантны к 5 В).

На нижней стороне платы радиоэлементы отсутствуют.

Данная плата имеет несколько ревизий, схема для ревизии "A" приведена на рисунке ниже и в приложении к статье.

Принципиальная схема платы с CY7C68013
Принципиальная схема платы с CY7C68013

2 Установка драйвера и утилит для работы с CY7C68013

Перед началом работы необходимо скачать утилиту Cypress USB Console. Она входит в состав обширного набора Cypress USB Suite и распространяется бесплатно изготовителем (версию CySuiteUSB_3_4_7_B204 можно скачать в приложении к статье).

Подключим плату к компьютеру с установленным джампером J2 (это не даст контроллеру загружаться из энергонезависимой конфигурационной памяти). Указываем операционной системе откуда брать драйвер. Он находится в директории Cypress Suite USB 3.4.7/Driver и называется cyusb.sys.

CY7C68013 в диспетчере устройств
CY7C68013 в диспетчере устройств
VID и PID CY7C68013
VID и PID CY7C68013

3 Загрузка прошивки в CY7C68013 через USB в энергозависимую память (RAM)

Когда драйвер и набор утилит установлены, заходим в директорию Cypress Suite USB/CyConsole и запускаем CyConsole.exe. В окне в списке устройств должен появиться наш контроллер CY7C68013. В данном случае микросхема называется Cypress FX2LP No EEPROM Device.

Главное окно приложения CyConsole
Главное окно приложения CyConsole – Cypress USB Console

Для теста нам понадобятся две прошивки: LED.hex и LED.iic. Первая предназначена для загрузки в энергозависимую память (RAM, ОЗУ), вторая – для загрузки в постоянную память (EEPROM, ППЗУ). Прошивки можно скачать в приложении к статье внизу. У прошивки для энергозависимой памяти (led.hex.txt) необходимо поменять расширение на *.hex.

Как самому создавать прошивки для контроллеров CY7C68013 сейчас рассматривать не будем, т.к. это очень обширная тема, и с ней будем разбираться отдельно.

Для загрузки программ в память контроллера выбираем Options EZ-USB Interface. Откроется окно загрузчика. Нажимаем кнопку Download и выбираем файл в формате Intel HEX с расширением *.hex.

Запуск EZ-USB Interface
Запуск EZ-USB Interface

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

Окно программы загрузки прошивки EZ-USB Interface
Окно программы загрузки прошивки EZ-USB Interface

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

CY7C68013 мигает светодиодами
CY7C68013 мигает светодиодами

4 Загрузка прошивки в CY7C68013 через USB в энергонезависимую память (EEPROM)

Для загрузки программы в постоянную память, обесточим плату CY7C68013 и снимем перемычку J2. Это включит в работу ППЗУ AT24C128, но оно у нас ещё пустое.

Подадим питание на плату. В этом же окне EZ-USB Interface теперь нажимаем кнопку Lg EEPROM. Выбираем файл с прошивкой с расширением *.iic. Если прошивка завершится успешно, светодиоды замигают.

Если теперь обесточить плату, а затем снова включить (джампер J2 всё ещё разомкнут, ППЗУ AT24C128 активно), светодиоды всё равно будут мигать, т.к. контроллер CY7C68013 загрузится из постоянной памяти (программа, записанная в ППЗУ, не сбрасывается при потере питания).

У меня после прошивки ПЗУ микросхема перестала определяться как Cypress, и в диспетчере устройств стала видна как неизвестное устройство USB с идентификатором USB\UNKNOWN.

Неизвестное устройство в списке устройств
VID и PID для USB\Unknown

Для выхода из такой ситуации можно воспользоваться программатором, чтобы стереть прошивку. У меня имеется специальный тестовый зажим для подключения к запаянным микросхемам в корпусе SOIC8. Подходящий программатор мы обсуждали ранее. После стирания ППЗУ устройство снова стало определяться как микросхема Cypress.

CY7C68013 с программатором CH341A
CY7C68013 с программатором CH341A

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

Перепрограммирование ППЗУ AT24C128 на плате с CY7C68013
Перепрограммирование ППЗУ AT24C128 на плате с CY7C68013

5 Программное управление контроллером CY7C68013 с помощью CyAPI

Для программного управления контроллерами фирмы Cypress разработчики создали специальный APICyAPI.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.

Продолжение следует...

Last modified onПятница, 27 Январь 2023 18:47 Read 171 times
Ключевые слова: :

Поблагодарить автора:

Поделиться

Print Friendly, PDF & Email

Leave a comment