К1921ВК01Т, 1921ВК01Т1 - FAQ

32-разрядные микроконтроллеры разработки АО "НИИЭТ"

Модераторы: ea, dav, bkolbov, Alis, pip, _sva_

Закрыто
bkolbov
Сообщения: 248
Зарегистрирован: 14 дек 2015, 10:37
Предприятие: АО НИИЭТ
Откуда: Воронеж

К1921ВК01Т, 1921ВК01Т1 - FAQ

Сообщение bkolbov »

FAQ (от 18.07.2019)

В этой теме собраны вопрос-ответы, ссылки на полезные посты, обзорная и прочая информация по микроконтроллеру.
Обсуждение происходит в теме - К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? | Показать
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? | Показать
Обсуждение
Закрыто

Вернуться в «32-разрядные микроконтроллеры»