Статьи, заметки, очерки, разное...

Перейти вниз

Статьи, заметки, очерки, разное...

Сообщение  Viktor2312 в Пт Янв 26 2018, 09:39

*
Новый отечественный motor-control микроконтроллер К1921ВК01Т ОАО «НИИЭТ».


источник
17 января 2016г.

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



____Как-то прошла мимо новость о появлении нового микроконтроллера К1921ВК01Т ОАО «НИИЭТ». Чем он примечателен? Своей периферией, предназначенной для управления электродвигателями (motorcontrol). Это не просто пара-тройка ШИМ каналов. Это девять навороченных двухканальных модулей ШИМ (PWM), из них три модуля (HRPWM) с режимом «высокого» разрешения. Это шесть отдельных 32х разрядных модулей захвата CAP. Двадцать четыре(!) канала 12-ти разрядных АЦП с гибким менеджером их запуска, встроенным усреднителем и цифровыми компараторами. Два квадратурных декодера (QEP), куча интерфейсов связи, внутренняя пользовательская память, часы – и всё это на ядре ARM Cortex-M4F с мегабайтом флеш-памяти «на борту» и производительностью 100 MIPS! Интересно?
http://niiet.ru/product/354-arm-cortex


Характеристики.

•процессорное ядро ARM Cortex-M4F с поддержкой набора одноцикловых команд умножения с накоплением (MAC), команд централизованного управления потоком данных (SIMD), арифметических и логических команд и встроенным модулем обработки команд с плавающей запятой (FPU) с одинарной точностью, производительность не менее 125 MIPS (миллионов инструкций в секунду);
•встроенная память программ типа Flash емкостью 1 Мбайт;
•пользовательская память данных типа Flash объёмом 64 Кбайта;
•ОЗУ объемом 192 Кбайт;
•контроллер внешней статической памяти (SRAM, PROM, NOR Flash);
•24-канальный контроллер прямого доступа к памяти (DMA);
•синтезатор частоты на основе ФАПЧ (PLL);
•схема сброса и сторожевой таймер (Watchdog);
•часы реального времени (RTC) с батарейным питанием;
•двенадцать 2-канальных 12-разрядных АЦП (2MS/s) с режимами цифрового компаратора для каждого из каналов, функция автоматического запуска модулей ШИМ по событию АЦП;
•девять двухканальных модулей ШИМ (PWM), из них шесть модулей (HRPWM) с поддержкой режима «высокого разрешения» (возможность изменения длительности импульсов на величину менее периода тактового сигнала);
•шесть модулей захвата/сравнения (CAP);
•три аналоговых компаратора с функцией автоматического запуска модулей ШИМ по событию сравнения;
•три 32-битных таймера;
•два импульсных квадратурных декодера (eQEP);
•четыре приемопередатчика UART;
•контроллер TwinCAN 2.0b;
•два контроллера интерфейса I2C, с поддержкой режима High Speed (более 1 МГц);
•четыре контроллера интерфейса SPI;
•контроллер интерфейса USB 2.0 Device/Host с физическим уровнем (PHY);
•контроллер интерфейса Ethernet 10/100 Мбит/с с интерфейсом MII;
•отладочные интерфейсы JTAG и ARM SWD;
•120 выводов общего назначения (GPIO) раздельно программируемых мультиплексированных портов ввода/вывода.

Техническое описание.



Скачать


____Собственно, чтобы в статье не перечислять все технические характеристики изделия, отправляю на страницу сайта производителя. Там есть как краткий список, так и полноценный datasheet (правда он всё время прячется по разным углам сайта и на момент написания статьи его можно скачать… из таблицы текущих разработок). А в статье лучше расскажу что-нибудь такое, чего в datasheet не напишут.
http://niiet.ru/product/354-arm-cortex


Немного из истории создания.

____Работы над микроконтроллером (далее МК) начались в 2012м году компанией ООО «НПП «Цифровые решения» по заказу ОАО «НИИЭТ» (г. Воронеж.). На ядро ARM Cortex-M4F и часть коммуникационных периферийных модулей были приобретены лицензии, а часть модулей были разработаны этой компанией самостоятельно: модули ШИМ, контроллер АЦП (не сам АЦП, а менеджер по управлению им), модуль захвата CAP и модуль квадратурного декодера QEP. НПП «Цифровые решения» сначала изготовила макет микроконтроллера на ПЛИС Kintex7, который реализовывал всю логику будущего микроконтроллера, включая ARM ядро. Но ПЛИС – это свободно перепрограммируемое изделие, что позволяет исправлять ошибки в логике МК, если они обнаруживаются после прохода тестов (это помимо тестирования на симуляторе). Но как тестировать motorcontrol микроконтроллер? Помимо синтетических тестов, конечно же на реальной задаче управления электродвигателем! Для этого НПП «Цифровые решения» обратились к нам – в ООО «НПФ Вектор», так как у нас очень большой опыт работы в сфере электропривода на базе МК Texas Instruments, хотя скорее потому, что мы сидим в соседнем здании. В совместных обсуждениях при проектировании периферии для управления электродвигателями было решено взять за образец TMS320F28335 Texas Instruments (TI), так как этот микроконтроллер имеет, наверное, самую мощную и гибкую периферию motorcontrol, заслуженно пользующуюся мировым уважением. Поэтому, вооружившись datasheet TI, «Цифровые решения» создали на их основе внутреннюю логику работы модулей ШИМ, CAP и QEP для К1921ВК01Т. Кроме того, по опыту работы с МК TI мы дополнительно предложили некоторые улучшения, которых не хватает у TI. Это фильтр коротких импульсов в модуле ШИМ (не все драйверы силовых ключей любят открытие/закрытие на очень короткий промежуток времени, IGBT может попасть в линейный режим), это некоторые нюансы в модуле квадратурного декодера, которые позволяют избавиться от проблем с переключением делителей счетчиков на ходу и т.п. «Цифровые решения» учли их и расширили соответствующим образом функционал периферии по сравнению с модулями TI.
____Во время того, как НПП «Цифровые решения» разрабатывали внутреннюю логику работы модулей, мы в «НПФ Вектор» делали стенд для тестирования будущего микроконтроллера. Это был небольшой преобразователь частоты на шести транзисторах («сервоусилитель»), который цепями управления подключался к макету микроконтроллера на ПЛИС, а силовой частью подключался к небольшому серводвигателю с датчиками положения Холла (для проверки модуля CAP) и квадратурным датчиком положения (для проверки модуля QEP). Наша цель была такая: написать программное обеспечение для микроконтроллера, чтобы обеспечивалось полноценное векторное управление электродвигателем, используя любой датчик положения по выбору или оба сразу. И, конечно же, сообщать о всех найденных проблемах в периферии «Цифровым решениям».
____Несмотря на множество собственных тестов МК у «Цифровых решений», в ходе испытаний на живом электродвигателе было найдено немало ошибок. В основном они были связаны с неточной реализацией внутренней логики блоков, которая не была описана в явном виде в datasheet Texas Instruments. Например, что должен выдавать модуль ШИМ, если уставка сравнения задана выше периода таймера? Или если для квадратурного декодера включен делитель входного сигнала, должен ли модуль детектировать смену направления вращения по деленному сигналу или по оригинальному входному? Ответы на эти вопросы могут быть очевидны электроприводчику, но не очевидны архитектору логики микроконтроллеров. Насколько мы смогли, настолько мы подобные баги совместно с «Цифровыми решениями» выловили. Привод успешно заработал в векторном управлении без каких-либо проблем. Однако все баги таким тестированием мы, конечно же, охватить не могли – наверняка в других задачах ошибки начнут вылезать еще. Но для этого и существует errata и новые ревизии микроконтроллеров: чтобы исправить баги, нужно их сначала насобирать. После завершения отладки логики МК на ПЛИС «Цифровыми решениями» была сделана «разводка» МК (или как там это называется у микроконтроллеров? Топология?), после чего все результаты работы были переданы в НИИЭТ. К слову, мы уже нашли несколько ошибок после выпуска МК в «камне», но НИИЭТ посчитал их пока недостаточно критичными, чтобы менять разводку МК: накопятся еще – исправят.

Название.


____Еще надо сказать, что микроконтроллер пережил несколько названий. Сначала во время разработки он имел кодовое название «МС01», затем опытная партия камней называлась NT32M4F1, а затем он уже стал К1921ВК01Т (причем в названии в одних местах буквы пишут русские, в других английские). Поэтому если увидите эти названия в ранних статьях и публикациях по этому МК, не удивляйтесь.

Как дорого?

____В настоящее время (на начало 2016г.) у НИИЭТ готова к продаже первая партия микроконтроллеров, которая уже начала поступать к заказчикам. Кристаллы корпусированы часть в пластик, часть в керамику (чтобы в ответственных применениях не получилось как сами_знаете_с_чем). Цена камня в пластике на конец 2015-го года, кажется, была чуть меньше 3000 руб., что выше цены TI TMS320F28335 при покупке в России (на момент написания статьи коэффициент пересчета «их» цен в «наши» составлял 76). Однако в TMS320F28335 нет пользовательской памяти и часов, нужно ставить внешние, из-за чего стоимость в итоге становится сравнимой. Это делает К1921ВК01Т перспективным не только в плане импортозамещения, но и для простых «меркантильных интересов». Хотя это сравнение, конечно, не совсем корректное – можно найти кучу примеров более дешёвых кристаллов на Cortex-M4F и с большей тактовой частотой, но с меньшем количеством периферии. Поэтому для простых задач К1921ВК01Т будет избыточен и большим, и дорогим. Но для основного применения (управление электродвигателями и сложной силовой электроникой) – он конкурентоспособен.

Что у нас с производительностью?

____Мы год назад выступали с докладом на выставке по этому поводу, презентацию можно найти здесь. Проведённые нами тесты, конечно, не претендуют на особую точность – всё-таки мы запускали не настоящие бенчмарки, а «закатали» в тест всё ту же векторную систему управления (а что ещё может волновать электроприводчиков?). Но краткий пересказ презентации таков: архитектура ARM Cortex-M4F отстаёт от DSP ядра C28 TI на среднестатистических расчетах, требуемых для задач электропривода. Если снизить точность расчетов, там, где это можно, использовав аппроксимированные тригонометрические функции и прочее, можно сократить этот разрыв где-то до 15%. Но при этом тактовая частота топовых ядер С28 (тот же TMS320F28335) составляет 150МГц, а частота К1921ВК01Т – 100МГц. Поэтому со всеми оптимизациями библиотек К1921ВК01Т эквивалентен по вычислительной мощности где-то МК TI серии piccolo частотой 90МГц. Что можно трактовать как… очень неплохо, на наш взгляд, потому что если правильно использовать все аппаратные навороты нового МК типа DMA и самофильтрующего измерения АЦП, то можно неплохо сэкономить на тактах. Так или иначе у нас получилось «запихать» в К1921ВК01Т наш самый требовательный к производительности проект, базирующийся на TMS320F2810 (150МГц, ядро C28), который с треском уже влезает в этот самый 2810.

Что у нас со средствами разработки?

____А что с ними может быть, это же ARM! Обычный, без всяких «но». Берёте любой JTAG, любую среду разработки, но… нет, все-таки любая не заработает. «Но» заключается в прошивке флеш-памяти. Несмотря на то, что само ядро ARM стандартизировано и любой JTAG и среда к К1921ВК01Т подключатся, с прошивкой флеша не всё так просто. Кажется, каждый производитель микроконтроллеров считает своим долгом сделать именно свои регистры для работы с прошивкой своей флеш-памяти, поэтому создатели средств разработки мучаются с поддержкой всего этого зоопарка. Не отстаёт в этом плане и К1921ВК01Т – там методы работы с флеш тоже свои. Но если для именитых производителей программаторы флеш памяти (драйвер, прошивальщик или как это назвать?) в средах разработки написаны и работают «из коробки», то для К1921ВК01Т всё работает только для тех сред, для которых написали программаторы в НИИЭТ. К счастью, для IAR и Keil все уже готово и примеры проектов с инструкциями по прошивке могут быть найдены на форуме НИИЭТ, а также в открытом репозитории на Bitbucket, который ведет НИИЭТ. Кроме того, мы в «НПФ Вектор» написали поддержку программирования флеш К1921ВК01Т для OpenOCD (Open On-Chip Debugger). Это такая прослойка между отладчиком GDB и железом в виде разных JTAG-эмуляторов и разных камней. Но пока мы тянули с разрешением конфликтов и «код ревью» в репозитории OpenOCD, разработчики НИИЭТ написали всё тоже самое, но своё и лучше (они еще добавили помимо прожига основной флеш-памяти функцию прожига пользовательской), но… это всё лирика. Что же дает этот OpenOCD? Это своеобразный слой абстракции железа, что позволяет сделать свою свободную и бесплатную среду разработки для К1921ВК01Т на базе любой популярной IDE. Мы в «Векторе» любим Eclipse (потому что среда Code Composer Studio от TI, начиная с v4 на нем основана, мы к нему привыкли и вообще, нет на свете IDE лучше Eclipse). А разработчики НИИЭТ сделали среду разработки на Qt Creator. Но, в общем, смысл и там и там один: берется среда, берется набор свободных кросс-средств разработки GCC, берется плагин для работы с OpenOCD, сам OpenOCD, немного конфигов, немного магии… и вы уже полноценно работаете с К1921ВК01Т, забыв про IAR и Keil. На момент написания статьи свою сборку Eclipse (назвали мы её VectorIDE) для К1921ВК01Т мы выложили у себя на сайте, рецепт по приготовлению Qt Creator смотрите на форуме НИИЭТ. Лично мы ведем все проекты для К1921ВК01Т в бесплатной среде и вам советуем – набор компиляторов GCC не особо отстает от фирменных IAR-овских (смотрите всю ту же нашу презентацию), а зато, если вы солидная фирма, вам не нужно закупать дорогое импортное ПО.
____Ах, да. Есть еще кое-что. Называется оно Codemaster++[ARM]. Это 100% отечественная среда разработки, включая компиляторы, и предназначенная также для К1921ВК01Т. Мы исследовали год назад её первые версии, но нашли что она была еще не готова, немного по части компиляторов и сильно по части удобства редактирования кода (хотя в этом она может посоревноваться с IAR, кто понимает, о чём я). Зато она маленькая и быстрая, а по интерфейсу напоминает какой-нибудь «хакерский» отладчик типа OllyDbg. В общем, возможно, кому-то будет интересно. Надо сказать, что разработчики (компания «Фитон») очень старались, даже запрашивали в свое время наш бенчмарк а-ля «векторное управление двигателем» чтобы оптимизировать свои компиляторы.

Что у нас с отладочными комплектами?


____На начало 2016г. в природе известно четыре отладочных платы на К1921ВК01Т. Это наша VectorCARD K1921BK01T и другие… от конкурентов. Ладно, так и быть, вот ссылки LDM-HELPER-K1921BK01T и MBS-К1921ВК01Т. Еще, кажется, у самого НИИЭТ есть своя плата NIIET_1921BK01T, но на их сайте, видимо, она от меня прячется – если кто-то обнаружит ссылку, с удовольствием дополню статью. В чём между ними разница? Мы продаем не голую плату, а комплект с инвертором, электродвигателем, векторным управлением в исходных кодах на Си (на базе того, что писали в своё время для «Цифровых решений»), а также с программой верхнего уровня и драйвером CANopen для наблюдения всех процессов внутри привода — смотрите нашу первую статью. Поэтому если вы хотите просто поиграть с новым МК, мигая светодиодом или пересылая данные по всяким интерфейсам связи, то оптимальнее будет купить отладочные платы конкурентов (хотя у нас тоже есть вариант голой платы за 15 000 руб., но она совсем «голая» — одни выводы). Однако если вы хотите создать на новом МК электропривод, то наш отладочный комплект и ПО может сэкономить вам полгода-год времени разработки (а может и больше, в зависимости от того, знаете ли вы теорию электропривода и есть ли у вас собственные средства отладки и осциллографирования, аналогичные нашим). Если вы внимательно читали первую статью, то, наверное, помните, что отладить систему управления для электропривода без средств визуализации процессов внутри – невозможно. И если у Texas Instruments среда разработки умеет «из коробки» показывать осциллограммы, построенные по данным массива оперативной памяти МК, то для ARM в универсальных средах разработки (не от конкретного производителя МК) такой функции пока не наблюдается (если это читают разработчики «Фитон» – не хотите ли доработать построителем осциллограмм свою Codemaster++[ARM]? Это же несложно сделать!). В нашем отладочном комплекте такие средства визуализации осциллограмм присутствуют, поэтому можно сразу увидеть всё, что полагается для управления электродвигателями: форму токов фаз, напряжения, входы/выходы всех регуляторов и т. п. Цена нашего комплекта – большая, ориентировочно около 130 000 руб. (один только электродвигатель со всеми датчиками положения стоит на текущий момент около 30 000 руб.). Но для организации, желающей освоить новое изделие, это не должно быть критично – одна только коммерческая среда разработки под ARM может стоить больше.

Недостатки К1921ВК01Т.

____Какие главные недостатки нового К1921ВК01Т можно отметить уже сейчас?
• Во-первых, это несомненно сырой продукт, так как его по-настоящему программировали пока от силы человек 10-20. Когда большее количество разработчиков на него насядут, будут обнаруживаться баги – будут выходить новые ревизии. Так что готовьтесь. Но, тем не менее, двигатели им крутить можно – крутил лично.
• На текущий момент документация тоже сыровата. Ошибок там мало, но некоторые вещи объяснены… не совсем понятно. Можно было бы расписать чуть подробнее, привести примеры. Думаю, со временем она доработается.
• Микроконтроллер очень большой и навороченный. Это для кого-то плюс, для кого-то минус. Очень немногие применения охватят весь спектр его возможностей. Уже сейчас НИИЭТ думает над серией МК на его основе, с разными корпусами и набором периферии. Но пока — есть только К1921ВК01Т.
• У него специфический АЦП. Часто производители МК ставят один быстрый (12 MS/s) модуль АЦП и мультиплексируют его по нескольким каналам — например, так сделано у Texas Instruments в серии C2000. Но в К1921ВК01Т стоит 12 двухканальных медленных (1.7MS/s) модулей АЦП, работающих параллельно. Чем это плохо помимо невозможности очень быстро что-то измерить? Если АЦП в МК один, то на плате контроллера можно на два неиспользуемых канала подать калиброванные референсные сигналы, скажем, 1В и 2В, и по ним вычислить и скомпенсировать мультипликативную ошибку и ошибку смещения этого одного АЦП, распространив коррекцию на все каналы (АЦП же один). Когда АЦП в МК много, такой трюк не пройдет – все они будут иметь свои персональные ошибки. Трюк с калибровкой мы применяли на МК Texas Instruments типа TMS320F2810 (это описывается в datasheet и рекомендуется), здесь же в К1921ВК01Т без калибровки мы получили более низкую точность АЦП по сравнению с калиброванным TMS320F2810. Нам пришлось сделать специальный стенд для калибровки независимо каждого модуля АЦП К1921ВК01Т и зашить калибровочную таблицу во встроенную пользовательскую память. Тогда точность аналоговых измерений получилась сравнимой (от температуры калибровка почти не уплывает — проверяли). Наверное, НИИЭТ стоит прошивать такую таблицу на заводе, было бы удобно. Но пока во флеше пусто.
• Частота 100МГц, конечно, низковата, хотелось бы быстрее. Но что есть, то есть. Хотя в некоторых местах пишут частоту 125МГц – всё зависит от температуры окружающей среды. «Цифровые решения» сообщили такую неофициальную информацию: внутри кристалл рассчитан на максимум 125 градусов. Температура на нём выше примерно на 15 градусов, чем окружающая среда. По проекту К1921ВК01Т должен работать при 85 градусах окружающей среды + запас, что гарантировано достигается на 100МГц. По факту можно разгонять МК выше 100МГц, отдельные образцы работали и на 140-170МГц, но зависит от образца. Поэтому, если кристалл не перегревать, то его можно разгонять, если кому-то это требуется. Но если в вашем применении жарко (+85), то лучше выше 100МГц не задирать.
• Пока нет никакого официального загрузчика (программатора) через интерфейсы связи (CAN, RS). Шить МК можно только через JTAG/SWD. Соответственно, если контроллер изделия находится в закрытом корпусе, то нужно писать свой загрузчик для желаемого интерфейса связи. Или ждать, пока напишет НИИЭТ. Пока — нету, но, думаю, появится.

Заключение.

____Хотя какое еще заключение? Всё только начинается! Наконец-то есть отечественный микроконтроллер, на котором действительно можно сделать электропривод! До этого все существующие отечественные МК были или слабы ядром, или слабы периферией, чтобы справляться с задачами motorcontrol. Но теперь – полная свобода для самых сложных структур управления и самой сложной силовой части. Особенно хочется отметить перспективы этого микроконтроллера для станочных сервоприводов. До настоящего времени в России не было возможности изготовить полностью отечественный многокоординатный прецизионный станок, так как (одна из причин) не на чем было сделать качественный сервопривод. Теперь такой микроконтроллер есть.


.
avatar
Viktor2312
Гуру+

Сообщения : 10905
Дата регистрации : 2012-08-10
Возраст : 39
Откуда : Пятигорск

Посмотреть профиль

Вернуться к началу Перейти вниз

Вернуться к началу

- Похожие темы

 
Права доступа к этому форуму:
Вы не можете отвечать на сообщения