В этой теме собраны вопрос-ответы, ссылки на полезные посты, обзорная и прочая информация по микроконтроллеру.
Обсуждение происходит в теме - К1921ВК01Т (арм кортекс-M4F).
Общая информация
- Документация | Показать
-
- Где найти актуальную версию документации на К1921ВК01Т? | Показать
- Вкладка "Документация" на соответствующей странице сайта
- Где найти актуальную версию документации на 1921ВК01Т1? | Показать
- Вкладка "Документация" на соответствующей странице сайта
- Нашёл ошибку в документации, куда писать? | Показать
- Тема "К1921ВК01Т - вопросы по ТО и его доработка"
- Корпуса | Показать
-
- Где найти информацию о пластиковом корпусе К1921ВК01Т? | Показать
- Чертёж, футпринт и 3D-модель
- Где найти информацию о металлокерамическом корпусе 1921ВК01Т1? | Показать
- Чертёж - вкладка "Документация" на соответствующей странице сайта.
- Осуществляете ли вы формовку металлокерамических корпусов? | Показать
- Про формовку.
- Отладочные платы | Показать
-
- Какие существуют отладочные платы с микроконтроллером К1921ВК01Т? | Показать
- Библиотеки и ПО для программирования и отладки | Показать
-
Обзорная информация по нашим публичным репозиториям - Репозитории на Bitbucket- Какие отладчики поддерживаются? | Показать
- JEM-NT-CM4 (только для CodeMaster++[арм]), а также любые, подходящие для кортекс-M микронтроллеров (ST-Link, JLink и др.)
- Какие IDE поддерживаются? | Показать
-
- CodeMaster++[арм]
- Keil
- IAR
- MexBIOS Development студио
- Любые IDE и редакторы, поддерживающие GNU арм Embedded Toolchain и openocd/SEGGER J-Link (Eclipse, Qt Creator, CLion, CodeBlocks, VSCode, Sublime Text и т.д.)
- Быстрый старт с МК K1921BK01T - CodeMaster++[арм], Keil, IAR
- Eclipse + GCC + OpenOCD: готовая сборка среды - Vector IDE (на базе Eclipse)
- Руководство по настройке и использованию открытого ПО - Qt Creator
- MexBIOS Development студио - одноименная среда разработки
- Какие отладчики поддерживает Codemaster? | Показать
- Codemaster работает только c JEM-NT-CM4, STLink и JLink не поддерживаются.
- CodeMasterARM и CodeMaster++{арм} - это один и тот же продукт? | Показать
- Разные. К1921ВК01Т поддерживается в CodeMaster++[арм].
- Где найти последнюю версию заголовочного файла/стартапа/файла линкера? | Показать
- Репозиторий K1921VKx_SDK папка platform/Device/NIIET/K1921VK01T
- Где найти последнюю версию библиотеки периферии? | Показать
- Репозиторий K1921VKx_SDK папка platform/niietcm4_pd
- Где найти примеры работы с микроконтроллером? | Показать
- Репозиторий K1921VKx_SDK папка projects
- Где найти файлы .pack для Keil? | Показать
- Репозиторий K1921VKx_SDK папка tools/keil_pack
- Где найти файлы установки микроконтроллера в IAR? | Показать
- Репозиторий K1921VKx_SDK папка tools/iar_setup
- Какая версия openocd поддерживает К1921ВК01Т? | Показать
- Версии 0.10.0 и выше. Также примеры скриптов и собранная нами версия openocd доступна в репозитории K1921VKx_SDK папка tools/openocd
- Готовые проекты управления электроприводом | Показать
-
Проект MotorControlDemo для микроконтроллеров серии 1921ВК01: форум, Bitbucket.
Отладочный комплект лабораторного преобразователя на базе К1921ВК01Т: форум, Bitbucket.
- Питание | Показать
-
- Есть ли какой-то порядок подачи питания на микроконтроллер? | Показать
- Обсуждение
- Тактирование | Показать
-
- Допустимо ли чтобы внутренние частоты PLL, полученные через делители, были на границе диапазонов? | Показать
- Обсуждение
- Отладочные интерфейсы | Показать
-
- Почему перестает работать отладка после прошивки микроконтроллера? | Показать
- Пост, и посты далее
- Прерывания | Показать
-
- Сколько же уровней приоритета прерываний в контроллере? | Показать
- Обсуждение
- Как связано разбиение прерываний на группы и подгруппы с реализованными уровнями приоритета? | Показать
- Обсуждение
- Как правильно осуществить выравнивание таблицы векторов в ОЗУ? | Показать
- Обсуждение
- Внутренняя память | Показать
-
- Какое количество циклов перезаписи для основной и пользовательской флеш-памяти? | Показать
- Обсуждение
- Как происходит полное стирание флеш-памяти? Какие особенности работы с загрузочным блоком? | Показать
- Обсуждение
- Какой оптимальный алгоритм записи/стирания памяти? | Показать
- Обсуждение
- Можно ли записывать данные во Flash во время работы программы (средствами самой прошивки)? | Показать
- Обсуждение
- Есть ли защита прошивки от считывания из контроллера? | Показать
- Обсуждение
- Внешняя память | Показать
-
- Вне зависимости от установленной настройки разрядности шины адресация всегда остаётся побайтовой? | Показать
- Обсуждение
- Какой максимальный объем внешней памяти? | Показать
-
Интерфейс внешней памяти имеет 19-разрядную внешнюю шину адреса и по два сигнала выбора кристалла (CS0, CS1) и разрешения выхода (OE0, OE1).
Таким образом можно подключить одну микросхему памяти - получаем 512Кб внешней памяти или подключить две микросхемы памяти по 512Кбайт - получаем 1024Кб (1Мб)
- Какая максимальная частота работы с внешней памятью? | Показать
- Не более 25МГц.
- Есть ли сигналы управления внешней памятью BUSY/READY? | Показать
-
Для работы с внешней памятью сигналы BUSY/READY не предусмотрены
Настройка длительности циклов чтения, записи и переключения шины осуществляется посредством полей READ, WRITEWS и RWWS регистра EXT_MEM_CFG [0x800300A4].
Для каждого из параметров можно задать длительность цикла (чтения, записи или переключения шины) от 1-го до 8-ми тактов системной частоты. По умолчанию, в поле READ записано максимальное значение 7, что соответствует 8-ми тактам системной частоты.
- АЦП | Показать
-
- Какое предельное напряжение может быть на входах АЦП, чтобы он не был поврежден? | Показать
- Обсуждение
- Почему АЦП измеряет недостаточно точно? | Показать
- Обсуждение
- Сбрасывается ли выходной триггер цифрового компаратора в "0" автоматически при изменении результата сравнения с положительного на отрицательный? | Показать
- Обсуждение
- Какой диапазон входных сигналов АЦП? | Показать
- Обсуждение
- ШИМ | Показать
-
- При синхронизации задержка в один такт распространяется на каждый последующий блок? | Показать
- Обсуждение
- Блоки захвата | Показать
-
- Как правильно сбрасывать прерывание блока захвата? | Показать
- Обсуждение
- USB | Показать
-
- Если блок USB не нужен, то куда подключать его вывода? | Показать
- Обсуждение
- Сколько доступно конечных точек? | Показать
- Обсуждение
- Можно ли структуры дескрипторов располагать во флеш-памяти? | Показать
- Дескрипторы должны обязательно находиться в ОЗУ.
- USB устройство работает только после дополнительного внешнего сброса микроконтроллера. Как исправить? | Показать
-
Необходимо добавить задержку после снятия сброса с USB. Например
Код: Выделить всё
NT_COMMON_REG->PER_RST0_bit.USBPHYRST = 1; for (int i=0;i<1000;i++) { __NOP(); }
- Как правильно устроить тактирование микроконтроллера, если нужно использовать USB? | Показать
-
Если обобщить, существует три варианта построения системы:
1) Используется кварц 12 МГц (XI_OSC). Он используется в двух местах одновременно.
От этих 12 МГц мы настраиваем системную PLL на 100 МГц (SYSCLK) - этой частотой тактируем ядро, UART и т.п.
От этих же 12 МГц мы тактируем USB, которые нужны ему для работы (USB_CTRL->FSEL=0, USB_CTRL->CLKSEL=1).
2) Используется кварц 24 МГц (XI_OSC). Он используется в двух местах одновременно.
От этих 24 МГц мы настраиваем системную PLL на 100 МГц (SYSCLK) - этой частотой тактируем ядро, UART и т.п.
От этих же 24 МГц мы тактируем USB, которые нужны ему для работы (USB_CTRL->FSEL=1, USB_CTRL->CLKSEL=1).
3) Используется любой кварц (XI_OSC), например, 16 МГц.
От этих 16 МГц мы настраиваем системную PLL на 100 МГц (SYSCLK) - этой частотой тактируем ядро, UART и т.п.
USB мы тактируем от генератора 12/24МГц, который подключен к порту A0 (12 МГц USB_CTRL->FSEL=0 или 24 МГц USB_CTRL->FSEL=1, USB_CTRL->CLKSEL=0).
- GPIO | Показать
-
- Какие особенности применения "чтение-модификация-запись" к регистрам GPIO xxxCLR/xxxSET? | Показать
- Обсуждение
- RTC | Показать
-
- Если не требуется использовать блок реального времени, можно не ставить на плату кварц? | Показать
- Обсуждение
- Происходит ли автоматическое переключение с 3,3В на батарейное питание VBAT? | Показать
- Обсуждение
- Каково потребление RTC? | Показать
- Обсуждение
- WDT | Показать
-
- При отладке через JTAG сторожевой таймер останавливается, можно ли настроить? | Показать
- Обсуждение
- CAN | Показать
-
- Расчет скорости передачи 1Мбит/с | Показать
-
При частоте Fout = 100 МГц получить скорость передачи 1 Мбит/с можно, задавая напрямую значения полей регистра NBTR.
Если у нас Fin = 100 МГц, то можно оставить Fout = 100 Мгц, для этого значение поля STEP регистра FDR должно быть 3FFh (см. раздел «Дробный делитель»).
Для скорости передачи 1 Мбит/с при частоте Fout = 100 МГц получаем:
Согласно стандарту ISO, минимальная длительность одного бита (Tbit), являющаяся суммой сегментов Tsync, Tseg1 и Tseg2, не должна быть менее 8 квантов времени (максимальная длительность бита – 25 квантов времени):
Tbit = 1 / (1 Мбит/с) = 1 мкс (1)
Tbit = Tsync + Tseg1 + Тseg2 ≥ 8tq. (2)
В соответствии с формулами вычисления значений сегментов и времени одного бита Tbit (формулы 18.4 и 18.5 Руководства пользователя):
Tsync = 1 × tq; (3)
Tseg1 = (TSEG1 + 1) × tq ≥ 3tq; (4)
Tseg2 = (TSEG2 + 1) × tq ≥ 2tq; (5)
Опираясь на формулы 3,4 и 5 подбираем значения длительности сегментов и рассчитываем Tbit:
Tsync = 1 tq; (6)
Tseg1 = 4 tq; (7)
Tseg2 = 3 tq; (8)
Tbit = Tsync + Tseg1 + Тseg2 = 8 tq. (9)
Опираясь на выражения (1) и (9), рассчитываем квант времени tq:
Tbit = 8 tq = 1 мкс
Тогда: tq = 1 мкс / 8 = 125 нс
Из формулы 18.4 Руководства пользователя:
tq = (BRP + 1) / Fout
найдем значение поля BRP:
BRP = tq * Fout – 1 = 125 нс * 100 МГц – 1 = 11 (10)
Выводим итоговые значения полей для регистра синхронизации битов NBTR:
- TSEG1 = 3, исходя из (4) и (7);
- TSEG2 = 2, исходя из (5) и (8);
- BRP = 11 из выражения (10).
Следовательно, значение регистра NBTR = 230Bh.
Если изменить значение поля STEP регистра FDR в соответствии с примером из описания (было - 3FFh, стало - 3FDh) при прочих значениях полей, указанных выше,
мы получим скорость передачи в 3 раза медленнее (было 1 Мбит/с, стало 0,33(3) Мбит/с).
- Расчет скорости передачи 666Кбит/с | Показать
-
Опираясь на выражения (1) и (9), рассчитываем квант времени tq:
Tbit = 8 tq = 1,5 мкс
Тогда: tq = 1,5 мкс / 8 = 187,5 нс
Так как значение скорости передачи не кратно степени с основанием 2 применим дробный делитель для получения частоты CAN кратной длительности кванта tq = 187,5 нс (Fout = 64 МГц)
Fout = Fin * STEP/1024
STEP = Fout*1024/Fin = 64МГц * 1024/100МГц = 682
В регистр FDR запишем значение 8258h (значение скорректировано эмпирически)
Из формулы 18.4 Руководства пользователя:
tq = (BRP + 1) / Fout
найдем значение поля BRP:
BRP = tq * Fout – 1 = 187,5 нс * 64 МГц – 1 = 11 (10)
Выводим итоговые значения полей для регистра синхронизации битов NBTR:
- TSEG1 = 3, исходя из (4) и (7);
- TSEG2 = 2, исходя из (5) и (8);
- BRP = 11 из выражения (10).
Следовательно, значение регистра NBTR = 230Ah.
- Расчет скорости передачи 250Кбит/с | Показать
-
Опираясь на выражения (1) и (9), рассчитываем квант времени tq:
Tbit = 8 tq = 4 мкс
Тогда: tq = 4 мкс / 8 = 500 нс
Из формулы 18.4 Руководства пользователя:
tq = (BRP + 1) / Fout
найдем значение поля BRP:
BRP = tq * Fout – 1 = 500 нс * 100 МГц – 1 = 49 (10)
Выводим итоговые значения полей для регистра синхронизации битов NBTR:
- TSEG1 = 3, исходя из (4) и (7);
- TSEG2 = 2, исходя из (5) и (8);
- BRP = 49 из выражения (10).
Следовательно, значение регистра NBTR = 2331h.
- Расчет скорости передачи 125Кбит/с | Показать
-
Опираясь на выражения (1) и (9), рассчитываем квант времени tq:
Tbit = 8 tq = 8 мкс
Тогда: tq = 8 мкс / 8 = 1000 нс
Из формулы 18.4 Руководства пользователя:
tq = (BRP + 1) / Fout
найдем значение поля BRP:
BRP = tq * Fout – 1 = 1000 нс * 100 МГц – 1 = 99 (10)
Получили значение превышающее размер битового поля BRP, поэтому с использованием режима дробного делителя уменьшим входную частоту в 2 раза (Fout = 50МГц):
Fout = Fin * STEP/1024
STEP = Fout*1024/Fin = 50МГц * 1024/100МГц = 512
В регистр FDR запишем значение 8200h
Далее, из формулы 18.4 Руководства пользователя:
tq = (BRP + 1) / Fout
найдем значение поля BRP:
BRP = tq * Fout – 1 = 1 мкс * 50 МГц – 1 = 49 (10)
Выводим итоговые значения полей для регистра синхронизации битов NBTR:
- TSEG1 = 3, исходя из (4) и (7);
- TSEG2 = 2, исходя из (5) и (8);
- BRP = 11 из выражения (10).
Следовательно, значение регистра NBTR = 2331h.
- Разное | Показать
-
- Есть ли в данном изделии какой-то регистр, содержащий уникальный для конкретного микроконтроллера номер? | Показать
- Отсутствует.
- Поддерживается ли bitband для ОЗУ/периферии? | Показать
- Обсуждение
- Как включить FPU? | Показать
- Обсуждение