[Из песочницы] Переходим с STM32F103 на К1986ВЕ92QI. Или первое знакомство с российским микроконтроллером
Введение В преддверии нового года я, как и многие россияне, активно следил за состоянием зарубежной валюты. Но не просто из-за собственного интереса, а из-за того, что на тот момент заканчивал свое устройство, которое требовалось показать на школьной и районной конференции. Так как в названии работы было такое слово как «бюджетное», то приходилось в презентации указывать стоимость каждого компонента, вплоть до резисторов и перемычек. Изначально, когда доллар стоил порядка 30 рублей, устройство и вправду было бюджетным. Как при домашней сборке, так и при конвейерной. Но когда цена доллара перевалила за 100 рублей, я решил, нужно искать альтернативу зарубежным компонентам.К этому моменту уже как несколько месяцев изучал работу микроконтроллеров STM32F100 и STM32F103, применяя их на практике в презентационном устройстве. От таких гигантов, как STM32F429, мне пришлось отказаться. Так как стоимость в 1800 рублей за корпус является заоблачной для «бюджетного» устройства, функционал которого только начал превосходить возможности AVR Atmega32.
Выбор Задача была ясна. Следовало найти российский аналог STM32, не уступающий ему по возможностям. И тут я вспомнил о том, что около года тому назад на Радио Коте открывал ветку, в которой просил помочь с выбором микроконтроллера российского производства. Тогда я смог узнать о фирме Миландр и о её линейках микроконтроллеров. Попросив прейскурант, я был поражен ценами. Все они были в районе 10—30 тысяч рублей за корпус. В зависимости от модели и военной приемки. Но среди всех выделялся микроконтроллер, стоимостью в 400 рублей в пластиковом корпусе (К1986ВЕ92QI). В то время я решил, что это слишком дорого. Но в данной ситуации это стало столь же приемлемо, что и покупка соответствующего STM32, да и просто хотелось посмотреть на Российский микроконтроллер. Взглянул на его характеристики, я очень обрадовался. Контроллер подходил под мои нужды.Ожидание Не долго думая, я написал в техподдержку, откуда меня отправили в отдел по работе с клиентами. После некоторого разговора, в котором я описал, зачем мне нужен данный набор, представитель компании любезно согласился предоставить мне бесплатно отладочный комплекс, программатор и отдельно корпус микроконтроллера.Данный разговор был под конец декабря. Тогда представитель уведомил меня о том, что контроллеров в пластиковом корпусе нет в наличии. Придется подождать до начала февраля. Я сообщил, что готов подождать и благополучно принялся наращивать код проекта пока что под STM32, делая больший упор на логику устройства. Так как аппаратную часть все равно придется полностью переписывать под новый МК. Время шло, а ответа все не было. И вот ближе к концу февраля я решил написать. Ответом стало то, что пока что контроллеров в пластике все еще нет в наличии. И вот под конец марта, когда уже нужно было демонстрировать устройство, я написал представителю, чтобы узнать, как там, мой набор. На что получил неожиданный ответ — «Появился в наличии, укажите адрес». Выслали срочной почтой (как интересный факт — не почтой России, а почтой-партнером) и через 2 дня он уже был в моем городе. От курьерской доставки я отказался и поехал за набором сам. А зря… Ехать пришлось далеко и в очень необычное место. При получении у меня попросили паспорт и роспись, после чего благополучно отдали коробку с товаром. Так как до поездки в Москву, ради которой изначально и нужен был набор, оставались считанные часы, то насладиться набором не удалось, но рассмотреть успел.
Изучение На складе я забрал такой вот пакетик:
Распаковав который, я увидел это коробку, на которой лежала накладная с перечнем выданного:
Под накладной скрывался вот такой вот конверт с рекламой компании-курьера:
В котором лежало вот это чудо. Да-да… Целое море бумажек к одному корпусу…
Отдельно меня порадовало описание ножек и основных параметров микроконтроллера. Может так везде у нас принято, но для меня это было в новинку.
Ну и подо всеми этими бумагами лежал сам контроллер:
Отложив конверт с его содержим в сторонку я принялся вскрывать коробку. И вот он, долгожданный момент… Аааа нет. Еще фирменный диск. Что на нем — расскажу позднее.
Убираем поролон и вот он. Долгожданный набор:
Отладочная плата Рассмотрим все детально. Начнем, пожалуй, с главного. Отладочная плата. Сразу бросаются в глаза огромные выходы для кабелей в левой части платы, а так же массивная «кроватка» для микроконтроллера. Наличие разъема под microSD карточку тоже порадовало. Удивило 2 JTAG порта. Для чего — не пойму. Первый раз такое вижу. Так же порадовало наличие минимального набора клавиш. После STM Discovery, где была одна пользовательская кнопка — это несравненный плюс. Панелька для батарейки очень массивная. Да и вообще вся плата кажется очень надежной. Хотя бы за счет того, что толщина текстолита на вид больше двух миллиметров. Так же не могу не заметить отсутствие нескольких микросхем, под которые была произведена разводка. Видимо плата делалась с учетом того, что могут быть в наличии различные корпуса одной и той же микросхемы (снизу платы, в тех же местах, имеются микросхемы). Так же на плате есть Jack разъем с микросхемой-усилителем. Вот это мне точно понадобиться, так что этому реально рад. Верхняя сторона, как видно, сделана без использовании полигонов. Не пойму вот только почему. Мое предположение — для снижения шума.
Вот большие гнезда для проводов:
А вот и то, что меня очень поразило. Кроватка под SMD микросхему. Никогда ранее не видел ничего подобного. Да и вообще был очень поражен фактом того, что такие существуют. Ни на одной отладочной плате ранее я ничего подобного не видел. Знал бы, что такие существуют, впаивал бы в каждый прототип. Так как очень часто случается сжигать ножки контроллера при неправильном программировании режимов. А при частой перепайке STM32, как и другие контроллеры, со временем умирают.
На плате имеются так же переключатели режимов с подписями. Это порадовало и позволило без изучения Datasheet-а начать изучение.
Так же на плате присутствуют 2 COM порта. Мне они без надобности, так как на ноутбуке нет COM порта. А вот внешнее питание очень кстати. И рас уж зашел вопрос о внешнем питании, то тут его нужно выбирать с помощью джампера. Либо от USB, либо от внешнего источника.
Теперь можем взглянуть на нижнюю сторону платы:
Здесь мы уже видим наличие полигонов. А так же микросхемы интерфейсов и усилителя. Ну и всякую рассыпуху. Единственное, что привлекло мое внимание — набор переключателей. Это как раз то, чего не хватало в STM Discovery. Здесь я могу отключить всю лишнюю периферию, если она мне без надобности и использовать ножки МК по-своему. А в STM Discovery не редко случалось, что различная периферия перехватывала данные и слала ответные, приводя в негодность канал связи.
Так же понравились стоики на плате. В случае, если плату захочется использовать в конечном устройстве — их можно убрать и болтами, через отверстия под ними, прикрутить ее в нужное место.
На этом с обзором платы, думаю, хватит.
Остальные элементы Пройдемся по оставшемуся из комплекта. В комплекте так же были COM-COM и USB-A — USB-B кабели.
Так же был прислан JTAG программатор MT-LINK:
Опять же толстая плата в еще более тостом «облачении». После подключения программатора к компьютеру на плате мигают светодиоды. Но вот увидеть их можно только заглядывая через щель около USB порта… Вскрывать изоляцию я не решился. Пусть будет так. Надежнее.
Ну и осталось упомянуть о блоке питания:
Подключение Ну и, думаю, пора бы все это соединить и включить в сеть. Кстати о питании. Если подключить JTAG, то экран начинает тускло светиться, но если подключить питания, то яркость становиться максимальной. Так же при включении зажигается красный светодиод. Около светодиода и нижнего COM-порта есть джампер, подписанный как «POWER_SEL». Чтобы питание поступало через блок питания, нужно не забыть переключить его в состоянии 2-х правых замкнутых контактов. Поначалу я ожидал увидеть что-то типа приветствия, но не судьба… Видимо, контроллер был обсолено чист.
Настройка Далее предстояло то, на что я потратил около трех часов. Следовало зашить тестовую программу с диска в МК с помощью keil 5. Я долго и упорно искал все необходимые файлы для того, чтобы все заработало. Часть пришлось брать с сервера компании, так как их не было на диске, который шел в комплекте.1. Для начала нам нужно скачать с официального сайта: «Software pack для Keil MDK 5 (MDR32F9Qx, MDR1986VE1T, MDR1986VE3T)», распаковать и установить. Сразу говорю. С keil 4 данный файл не приживается. Только keil 5. Хоть в названии об этом и сказано, но я питал надежду о совместимости…2. Далее нужно установить 2 файла: «Setup_JLinkARM_V468a» и «MT-Link». Это драйвера для программатора MT-LINK. Их нет на диске, так что я залил их в конце статьи. Их мне предоставил официальный представитель по электронной почте.3. После этих действий подключаем MT-LINK к компьютеру, устройство должно определиться, но на всякий случай идем в диспетчер устройств и проверяем, встали ли драйвера.
4. На диске, который идет в комплекте, помимо кучи рекламы и документации на остальную продукцию компании, вместе с, конечно же, демонстрационным роликом, в корне диска есть архив «ПО и аппаратное обеспечение». Из него, по пути «ПО и аппаратное обеспечение\ПО и аппаратное обеспечение\Отладочные и демоплаты» нужно распаковать папку «Отладочная плата 1986ВЕ92У, К1986ВЕ92QI (MDR32F9Q2I)».
Вот список всех файлов, которые понадобились в процессе:
В распакованной папке мы можем увидеть следующее:
5. Отсюда нам следует скопировать файл «MDR32F9x.FLM» в папку «Flash» в директории с keil 5. У меня (по умолчанию) путь такой «C:\Keil_v5\ARM\Flash».6. Из папки ПО копируем папку «Test Progs» в корень диска. Как выяснилось позднее, если в пути файлов есть русские символы, то проект не компилируется и отказывается зашиваться в контроллер.7. Подключим программатор к JTAG_A (верхнему порту) и выставляем соответствующее положения на рычагах BOOT загрузки (Самый верхний влево, нижние два — вправо). Подключаем питание. Не забываем переключить рычаг выбора источника питания.8. Теперь заходим в keil 5.9. Переходим в Project → «Options for Target»
10. Там выбираем вкладку Debag, в ней жмем на кружок около «Use», далее в списке рядом выбираем J-Link, после чего жмем «Settings».
11. Далее переходим на вкладку Debag. Сразу скажу, в поле «SN:» должен быть сразу показан номер программатора. Если его нет, то что-то не так с драйверами. Далее в списке «PORT» нужно сменить JTAG на SW и выбрать частоту в списке рядом в 1MHz. По идее можно до 3-х, но пока что можно остановиться и на одном. После этого справа должен появиться код микроконтроллера, как на картинке. Если ничего не появилось, то нужно проверить правильность выбранного режима на плате, нажать кнопку «RESET» и еще раз выбрать частоту. Если не помогло, то проверьте, как установлен контроллер в кроватку. Часто достаточно всего лишь нажать на нее, чтобы ножки «отошли» и «встали» обратно. После чего снова нажать «RESET» выбрать частоту.
12. После успешного распознавания контроллера — переходим во вкладку «Flash Download». Там ставим птичку около «Erase Full Chip», как на рисунке, и жмем Add.
13. Из этого списка выбираем наш микроконтроллер и жмем ОК. Если микроконтроллера нет, то это значит, что вы не скопировали FLM файл в папку Flash в начале.
На этом настройка завершена. Теперь переходим в папку «C:\Test Progs\EV1986BE92_Rev2_Test» и запускаем проект. При включении выскочат 2 ошибки. Просто жмем ОК.
14. Далее нам снова придет произвести небольшую настройку. Переходим в Project → «Options for Target». И в пункте Device выбираем наш мк. Нажимаем ОК и заходим туда снова.
15. Далее во вкладке Debug проверяем, что все выставленные нами ранее параметры совпадают. Если что-то не так — исправляем. Скорее всего придется все настроить заново. Но это уже не составит труда. При настройке программатора может выпасть такая ошибка. Просто жмем No. Далее настраиваем все по старой схеме. Не забываем про вкладку Flash Download. После чего жмем «ОК».
16. Далее заходим во вкладку Utilities, там ставим точку слева от Use Target Driver for Flash Programming, после выбираем наш J-LINK. Ну и на последок жмем Settings. Там все должно быть уже настроено так же, как и в предыдущем меню. Но все равно проверьте. Ну вот и всн.
Теперь мы можем зашить демонстрационный проект в контроллер. Для этого в главном окне переводим во вкладку Debug, а в ней выбираем самый верхний пункт Start/Stop Debug Session. Ну или просто жмем Ctrl+F5.
После этого в левом нижнем углу должна побежать строка загрузки программы.
По окончании вылетит предупреждение, что эта версия демонстрационная. Жмем ОК и видим.
Это знак того, что все прошло хорошо. Можно выключить отладку и посмотреть на выполнение кода. Для этого снова переходим Debug → Start/Stop Debug Session. И можем взглянуть на то, что у нас вышло. Должен был загореться красный светодиод около JTAG кабеля. Да-да) Все. Больше ничего увидеть нельзя. НО! В папке есть еще 1 проект. Запускаем его. Настраиваем его как и предыдущий, НО. По необъяснимым причинам НЕЛЬЗЯ выбрать контроллер. Там, где мы из списка выбирали МК нет ни одной фирмы ни одного контроллера. Чистый лист. Но во всех остальных вкладках все хорошо. Настраиваем так же J-LINK и включаем/выключаем отладку. И мы увидим это. Далее, управляя клавишами, в меню можно включить различные тесты. Пока что я проверял лишь LEDS.
Заключение В заключение хотелось бы сказать, что в будущем планирую написать серию мини уроков по освоению данного МК и его периферии. Эдакий быстрый переход с STM32 на К1986.Вот папка с необходимыми файлами.