Микроконтроллеры Миландр К1986ВЕ92
К1986ВЕ92 — серия 32-разрядных микроконтроллеров АО «ПКК Миландр» на ядре ARM Cortex-M3. Производитель называет её ближайшим аналогом STM32F103x, но совместимости нет ни по выводам, ни по регистрам: это самостоятельная микросхема со своей периферией, загрузчиком и списком ошибок.
Обновлено Редакция GAW
К1986ВЕ92 — серия микроконтроллеров Миландра на ядре ARM Cortex-M3 ревизии 2.0 с частотой до 80 МГц, флеш-памятью 128 КБ и ОЗУ 32 КБ. В серии три 64-выводных исполнения с одинаковыми выводами и 144-выводный К1986ВЕ94GI:
| Исполнение | Маркировка | Корпус | Статус по данным Миландра |
|---|---|---|---|
| К1986ВЕ92QI | — | LQFP64 | снят с производства, замена — К1986ВЕ92Fxx |
| К1986ВЕ92FI | MDR1211FI | QFN64 9×9 мм | серийная поставка, корпус не совместим с QI |
| К1986ВЕ92F1I | MDR1211F1I | QFN64 12×12 мм | серийная поставка, совместим с посадочным местом LQFP64 |
| К1986ВЕ94GI | MDR1209GI | BGA144 | та же спецификация, до 96 линий ввода-вывода |
Характеристики
- Ядро: Cortex-M3 с блоком защиты памяти MPU, умножение за один такт, аппаратное деление; 1,25 DMIPS/МГц.
- Тактирование: RC-генераторы 8 МГц и 40 кГц, кварц 2–16 МГц и 32 кГц, PLL для ядра и отдельная PLL для USB.
- Питание: 2,2–3,6 В, при работе USB — 3,0–3,6 В; ядро питает встроенный стабилизатор 1,8 В; есть батарейный домен с часами реального времени.
- Аналоговая часть: два 12-разрядных АЦП (в 64-выводном корпусе — восемь входов на PD0–PD7), 12-разрядный ЦАП, компаратор, датчик температуры.
- Интерфейсы: USB с режимами устройства и хоста, два CAN, два UART, два SSP (SPI), I²C, контроллер внешней шины, DMA, три 16-разрядных таймера.
- Флеш-память: не меньше 10 000 циклов записи при 85 °C, хранение 25 лет при 25 °C.
Сравнение со STM32F103
Миландр указывает STM32F103x как ближайший аналог. Для сравнения взят STM32F103RB — тоже 64 вывода и 128 КБ флеш-памяти:
| Параметр | К1986ВЕ92 (64 вывода) | STM32F103RB (LQFP64) |
|---|---|---|
| Ядро и частота | Cortex-M3, до 80 МГц | Cortex-M3, до 72 МГц |
| Флеш-память и ОЗУ | 128 и 32 КБ | 128 и 20 КБ |
| Питание | 2,2–3,6 В, с USB 3,0–3,6 В | 2,0–3,6 В |
| Линий ввода-вывода | 43 | 51 |
| АЦП | 2 × 12 бит, 8 входов | 2 × 12 бит, 16 входов |
| ЦАП и компаратор | есть | нет |
| USB | устройство и хост | устройство |
| CAN | 2 | 1 |
| UART и SPI | по 2 | 3 USART и 2 SPI |
| I²C | 1 | 2 |
| Вывод 1 | UCC | VBAT |
Корпуса не совместимы по выводам, а периферия устроена иначе — порты MDR_PORTx, тактирование MDR_RST_CLK, SSP вместо SPI. Перенос проекта со STM32F1 — это новая плата и новые драйверы, общее у них только ядро Cortex-M3 и его система команд. Что совместимо со STM32 по выводам у других производителей, разбирает статья «Совместимые микроконтроллеры».
Выводы
Питание и служебные выводы 64-выводных исполнений: UCC — 1, 12, 38, 48; общий — 11, 39, 49, 64; батарейное питание BUCC — 13; аналоговое питание AUCC и AUCC1 — 28 и 24, аналоговый общий — 27 и 23; USB D+ и D− — 9 и 10; STANDBY — 14, WAKEUP — 17, RESET — 18; кварц HSE — 19 и 20; вывод 37 не подключают. У каждой из 43 линий портов — до четырёх функций, которые выбирают в настройках порта:
| Вывод | Линия | Аналоговая | Основная | Альтернативная | Переопределённая |
|---|---|---|---|---|---|
| 63 | PA0 | — | DATA0 | EXT_INT1 | — |
| 62 | PA1 | — | DATA1 | TMR1_CH1 | TMR2_CH1 |
| 61 | PA2 | — | DATA2 | TMR1_CH1N | TMR2_CH1N |
| 60 | PA3 | — | DATA3 | TMR1_CH2 | TMR2_CH2 |
| 59 | PA4 | — | DATA4 | TMR1_CH2N | TMR2_CH2N |
| 58 | PA5 | — | DATA5 | TMR1_CH3 | TMR2_CH3 |
| 57 | PA6 | — | DATA6 | CAN1_TX | UART1_RXD |
| 56 | PA7 | — | DATA7 | CAN1_RX | UART1_TXD |
| 43 | PB0 (JA_TDO) | — | DATA16 | TMR3_CH1 | UART1_TXD |
| 44 | PB1 (JA_TMS) | — | DATA17 | TMR3_CH1N | UART2_RXD |
| 45 | PB2 (JA_TCK) | — | DATA18 | TMR3_CH2 | CAN1_TX |
| 46 | PB3 (JA_TDI) | — | DATA19 | TMR3_CH2N | CAN1_RX |
| 47 | PB4 (JA_TRST) | — | DATA20 | TMR3_BLK | TMR3_ETR |
| 50 | PB5 | — | DATA21 | UART1_TXD | TMR3_CH3 |
| 51 | PB6 | — | DATA22 | UART1_RXD | TMR3_CH3N |
| 52 | PB7 | — | DATA23 | nSIROUT1 | TMR3_CH4 |
| 53 | PB8 | — | DATA24 | COMP_OUT | TMR3_CH4N |
| 54 | PB9 | — | DATA25 | nSIRIN1 | EXT_INT4 |
| 55 | PB10 | — | DATA26 | EXT_INT2 | nSIROUT1 |
| 42 | PC0 | — | — | SCL1 | SSP2_FSS |
| 41 | PC1 | — | OE | SDA1 | SSP2_CLK |
| 40 | PC2 | — | WE | TMR3_CH1 | SSP2_RXD |
| 31 | PD0 (JB_TMS) | ADC0_REF+ | TMR1_CH1N | UART2_RXD | TMR3_CH1 |
| 32 | PD1 (JB_TCK) | ADC1_REF- | TMR1_CH1 | UART2_TXD | TMR3_CH1N |
| 33 | PD2 (JB_TRST) | ADC2 | BUSY1 | SSP2_RXD | TMR3_CH2 |
| 34 | PD3 (JB_TDI) | ADC3 | — | SSP2_FSS | TMR3_CH2N |
| 30 | PD4 (JB_TDO) | ADC4 | TMR1_ETR | nSIROUT2 | TMR3_BLK |
| 35 | PD5 | ADC5 | CLE | SSP2_CLK | TMR2_ETR |
| 36 | PD6 | ADC6 | ALE | SSP2_TXD | TMR2_BLK |
| 29 | PD7 | ADC7 | TMR1_BLK | nSIRIN2 | UART1_RXD |
| 26 | PE0 | DAC2_OUT | ADDR16 | TMR2_CH1 | CAN1_RX |
| 25 | PE1 | DAC2_REF | ADDR17 | TMR2_CH1N | CAN1_TX |
| 22 | PE2 | COMP_IN1 | ADDR18 | TMR2_CH3 | TMR3_CH1 |
| 21 | PE3 | COMP_IN2 | ADDR19 | TMR2_CH3N | TMR3_CH1N |
| 16 | PE6 | OSC_IN32 | ADDR22 | CAN2_RX | TMR3_CH3 |
| 15 | PE7 | OSC_OUT32 | ADDR23 | CAN2_TX | TMR3_CH3N |
| 2 | PF0 | — | ADDR0 | SSP1_TXD | UART2_RXD |
| 3 | PF1 | — | ADDR1 | SSP1_CLK | UART2_TXD |
| 4 | PF2 | — | ADDR2 | SSP1_FSS | CAN2_RX |
| 5 | PF3 | — | ADDR3 | SSP1_RXD | CAN2_TX |
| 6 | PF4 (MODE[0]) | — | ADDR4 | — | — |
| 7 | PF5 (MODE[1]) | — | ADDR5 | — | — |
| 8 | PF6 (MODE[2]) | — | ADDR6 | TMR1_CH1 | — |
Порты A, B, C, F и выводы RESET и WAKEUP принимают единицу до 5,25 В, порты D и E — только до 3,6 В. Выходной ток линий — до 6 мА, у PE6, PE7 и STANDBY — до 3 мА.
Режимы запуска и прошивка
Режим после включения задают выводы MODE[2:0] — PF6, PF5, PF4: на время опроса загрузочная программа подтягивает их к общему примерно 50 кОм, так что неподключённые выводы дают режим 000.
| MODE[2:0] | Режим | Что происходит |
|---|---|---|
| 000 | отладка, JTAG_B | запуск из флеш-памяти, отладчик на PD0–PD4 |
| 001 | отладка, JTAG_A | запуск из флеш-памяти, отладчик на PB0–PB4 |
| 101 | UART-загрузчик | UART2 на PD1 (TX) и PD0 (RX), отладка запрещена |
| 110 | UART-загрузчик | UART2 на PF1 (TX) и PF0 (RX), отладка запрещена |
Выводы выбранного отладочного интерфейса во время отладки нельзя использовать для своих сигналов. UART-загрузчик тактируется от RC-генератора HSI, поэтому стартует на 9600 бод и сам подстраивает делитель: ведущее устройство шлёт нули, пока не получит приглашение. Команды — B (скорость), L (загрузить в ОЗУ), Y (прочитать), R (запустить): загрузчик пишет программу в ОЗУ, а флеш-память программирует уже загруженная в ОЗУ программа.
Errata
Обе errata делят ошибки на три категории; категории 1 — неустранимых — нет ни у одного исполнения. Список для FI, F1I и 94GI короче:
| Ошибка | К1986ВЕ92QI | FI, F1I, 94GI |
|---|---|---|
| Программный сброс через AIRCR не работает (0006), обход — через WWDG | есть | нет в списке |
| Сбой частоты PLL при изменении питания быстрее 5 В/мс (0031) | есть | нет в списке |
| Высокий уровень на выводе при переключении с выхода на вход (0032) | есть | нет в списке |
| Подтяжки USB к питанию при отсутствии внутреннего DUCC (0033) | есть | есть |
| I²C не ждёт растяжения SCL при DIV = 1–2 | есть | есть |
| LSE запускается на гармонике при конденсаторах меньше 51 пФ | есть | есть |
Для кварца 32,768 кГц Миландр рекомендует нагрузочные конденсаторы 51 пФ, а для I²C с ведомыми, растягивающими SCL, — делитель DIV не меньше 3. Как устроена шина, к которой подключаются оба контроллера CAN, — в разделе «CAN».
Частые вопросы
Чем К1986ВЕ92FI отличается от К1986ВЕ92QI?
Корпусом и статусом: QI в LQFP64 снят с производства, FI выпускается в QFN64 9×9, а F1I — в QFN64 12×12, который Миландр называет совместимым с посадочным местом LQFP64. Номера и функции выводов у 64-выводных исполнений одинаковые. В errata QI есть ошибки, которых нет в списке для FI, — например, невозможность программного сброса через регистр AIRCR.
Можно ли поставить К1986ВЕ92 вместо STM32F103?
Без переделки платы и программы — нет. Миландр называет STM32F103x ближайшим аналогом, но выводы не совпадают: у К1986ВЕ92 вывод 1 — питание, у STM32F103 в LQFP64 — VBAT. Периферия тоже своя — блоки MDR_PORTx, MDR_RST_CLK, SSP вместо SPI, — так что код и драйверы пишутся заново.
Как прошить К1986ВЕ92 через UART?
Выводами MODE[2:0] выбрать режим UART-загрузчика: 101 — UART2 на PD1 (TX) и PD0 (RX), 110 — на PF1 и PF0. Загрузчик стартует на 9600 бод, подстраивается под поток нулей и отвечает приглашением «>». Команда L загружает программу в ОЗУ, Y читает, R запускает: так в ОЗУ кладут программатор, который уже записывает флеш-память.
Какие выводы К1986ВЕ92 выдерживают 5 В?
По спецификации единица до 5,25 В допустима на портах A, B, C, F и на выводах RESET и WAKEUP. Порты D и E — с аналоговыми функциями АЦП, ЦАП, компаратора и кварца LSE — рассчитаны только до 3,6 В.
Источники
- АО «ПКК Миландр». Спецификация К1986ВЕ92FI, К1986ВЕ92F1I, К1986ВЕ94GI, ТСКЯ.431296.040СП, версия 1.4.4 от 05.08.2026 — корпуса QFN64 9×9 (FI), QFN64 12×12 (F1I), BGA144 (94GI); Cortex-M3 r2.0 до 80 МГц, 128 КБ флеш, 32 КБ ОЗУ; табл. 2 и 3 — выводы и функции 64-выводных исполнений; табл. 13 — JTAG_A и JTAG_B; табл. 14 — выводы UART-загрузчика; предельные режимы: питание 2,2–3,6 В, с USB 3,0–3,6 В, аналоговое 2,4–3,6 В, батарейное 1,8–3,6 В; единица на PA, PB, PC, PF, RESET, WAKEUP — до 5,25 В, на PD и PE — до 3,6 В; выходной ток 6 мА, у PE6, PE7 и STANDBY — 3 мА; флеш — не меньше 10 000 циклов записи при 85 °C
- АО «ПКК Миландр». К1986ВЕ92FI, К1986ВЕ92F1I, К1986ВЕ94GI Errata Notice, 05.08.2026 — маркировка MDR1211FI, MDR1211F1I, MDR1209GI; одна ошибка категории 2 (0033 — подтяжки USB при отсутствии DUcc) и 16 категории 3, среди них 0039 (I²C не ждёт растяжения SCL при DIV = 1–2) и 0040 (LSE на гармонике при конденсаторах меньше 51 пФ); на странице F1I: серийная поставка, ближайший аналог STM32F103x, замена К1986ВЕ92QI с совместимым корпусом
- АО «ПКК Миландр». Спецификация К1986ВЕ92QI, ТСКЯ.431296.021СП, версия 2.5.2 от 18.08.2026 — корпус LQFP64; табл. 9 — режимы запуска по MODE[2:0] (PF6–PF4, подтяжка к общему ~50 кОм); разд. 8.4 — UART-загрузчик: UART2, 9600 бод, 8 бит без чётности, синхронизация нулями, приглашение 0x0D 0x0A '>', команды B, L, Y, R; на странице продукта: не производится, замена — К1986ВЕ92Fxx, ближайший аналог STM32F103x
- АО «ПКК Миландр». К1986ВЕ92QI Errata Notice, 19.08.2026 — три ошибки категории 2: 0031 (сбой PLL при изменении питания быстрее 5 В/мс), 0032 (высокий уровень на выводе при переключении с выхода на вход), 0033; 0006 — программный сброс через AIRCR не работает, обход через WWDG
- STMicroelectronics. STM32_open_pin_data: STM32F103R(8-B)Tx (коммит 7d1f151) — LQFP64: Cortex-M3 72 МГц, 64/128 КБ флеш, 20 КБ ОЗУ, 2,0–3,6 В, 51 линия ввода-вывода, ADC1 и ADC2 с 16 входами, CAN, два I²C, два SPI, три USART, TIM1–TIM4, USB; вывод 1 — VBAT
Нашли ошибку?
Смотрите также
- Отечественные МКК1986ВЕ92, К1921ВК035, MIK32 Амур: исполнения, аналоги, документация
- STM32F1Cortex-M3: F100, F101, F102, F103, F105/107 — линейки и распиновки
- Cortex-M3Регистры, карта памяти, bit-banding, NVIC, SysTick, MPU, старт, пример
- Совместимость STM32 по выводамКакие STM32 совпадают по выводам: таблицы отличий для F103, F407, F401, F303, G474, F030, G030
- CANCAN_H и CAN_L, терминаторы, кадр, арбитраж, ошибки, тайминг, MCP2515