К1921ВК01Т (арм Cortex-M4F)

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

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

dav
Сообщения: 209
Зарегистрирован: 14 дек 2015, 09:21
Предприятие: АО НИИЭТ
Откуда: АО НИИЭТ, Воронеж

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение dav »

Доброго времени суток!
Осциллограммы с нашей платы макетно-отладочной, с момента включения питания и до обращения к внешней памяти (микроконтроллер сконфигурирован на выполнение программы из внешней памяти).
Осциллограммы старта К1921ВК01Т
Осциллограммы старта К1921ВК01Т
K1921VK01T_PowerStart.png (51.8 КБ) 3673 просмотра
Al-x
Сообщения: 29
Зарегистрирован: 02 фев 2021, 19:22
Предприятие: АО "НТЦ "РИФ"

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Al-x »

По следам обсуждения проблем входа в режим отладки и программирования хотел бы дополнить, что у меня и ST-Link и Keil выдаёт сюрпризы в виде "Could not stop кортекс-M device." при работе в шумной среде: стоит несколько плат с НИИЭТ МК, российскими DC/DC, интерфейсами, источник питания и ПК, запитанные от одной сети. При чём снижение скорости особо не помогает, а вот если отключить часть плат, или некоторые интерфейсы (к слову, развязанные, но теми же российскими элементами), или подключится с ноута, имеющего развязку от сего хозяйства - прошивается нормально. При чём когда это дело стояло на столе - проблем не было, проявилось после упаковки и сжатия в корпусе.
Пока не было возможности подробно исследовать вопрос, но в общем и целом пришёл к выводу по нескольким устройствам - НИИЭТ более капризный к процедурам прошивки, чем тот же STM. Впрочем, похожие проблемы встречаются и у Миландра.
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Лашкевич »

Ну ядро CortexM там стандартное, житаг тоже. Скорее всего такое впечатление сложилось из-за обилия других отечественных компонентов. Мы на фирме замечали, что отечественные оптроны, например, имеют большую проходную ёмкость по сравнению с импортными аналогами, из-за чего помехи от ШИМ через них очень хорошо проходят. У нас есть несколько изделий, где отечественный только К1921ВК01Т, а всё остальное как обычно импортное - никаких проблем нету (по сравнению с тексасом, например, никаких новых капризов).
Пробуйте использовать гальванически-развязанный JTAG, заземлять корпуса устройства, связывать через конденсатор цифровую землю устройства и корпус, искать источник помех, а лучше переходить на работу полностью через другие интерфейсы - развязанный CAN, например.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
Al-x
Сообщения: 29
Зарегистрирован: 02 фев 2021, 19:22
Предприятие: АО "НТЦ "РИФ"

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Al-x »

Лашкевич писал(а): 12 янв 2022, 10:59 Мы на фирме замечали, что отечественные оптроны, например, имеют большую проходную ёмкость по сравнению с импортными аналогами, из-за чего помехи от ШИМ через них очень хорошо проходят.
Да, российские оптопары пропускают синфазные помехи только так.
Дмитрий128
Сообщения: 5
Зарегистрирован: 20 янв 2022, 11:38
Предприятие: ООО НИЦ БУЛАТ

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Дмитрий128 »

Здравствуйте!

Во время работы с К1921ВК01Т заметил следующую особенность:
При отключении питания на 10-20 сек. и повторном включении, контроллер не стартует. Не помогает даже обнуление вывода 9 RST.
Выяснил, что это происходит из-за остаточного напряжения на шине 1,8В. Пока на ней остается хоть какое-то напряжение, контроллер повторно не стартует. В нашей схеме шина 1,8В уходит в 0 через 30 сек. Получается, что при кратковременном отключении питания контроллер виснет и я его не могу ничем оживить, только отключением на более 30 сек.
Подскажите, как можно бороться с этой проблемой?
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Лашкевич »

Скорее всего поможет установка микросхемы менеджера питания, который уведёт RST в ноль раньше, чем все питания уйдут за допустимые пределы. Попробуйте имитировать это руками - руками нажать резет перед отключением питания, отключите питание, через 10 секунд включите питание и потом отпустите резет. Запустится?
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
serg_vega
Сообщения: 96
Зарегистрирован: 20 июл 2020, 15:50
Предприятие: АО "ВНИИ "Вега"

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение serg_vega »

А как настроить PLL с системной частотой 100МГц так что бы можно было использовать WatchDog? В Errata опять враки. При 48МГц ничего не работает. И при 30 тоже. При 25МГц - работает.
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Лашкевич »

В motorcontroldemo настроено так, что вочдог работает.

Код: Выделить всё

// Настройка тактирования с использованием делителя после PLL
// Частота Fvco настраивается на 200 МГц
void Init_Clk_Pll_Div_Fvco200 (void) {
	// Настройка частоты тактирования
	// выходная частота равна FOUT = (FIN * NF) / ( NR * NO) / N, где FIN - частота кварца
	// FIN = 12 MHz
	// Дополнительное условие по ТО: 0.8 MHz < Fref < 8 MHz
	// Fref = FIN / (2 * NR)
	// Дополнительное условие по ТО: 200 MHz < Fvco < 500 MHz
	// Fvco = FIN * (NF / NR)
	// На форуме рекомендовали Fvco < 250 MHz, поэтому чтобы
	// получить 100 МГц на проце, можно взять только Fvco = 200 MHz
	// Делители:
	// N = 2 * (PLL_DIV + 1)
	// NF = F_PLL + 2
	// NR = R_PLL + 2
	// NO = 1, 1/2, 1/2, 1/4 при PLL_OD = 0, 1, 2, 3 соотв.
	volatile int i = 0;



	NT_COMMON_REG->PLL_OD = 0;		// Выходной делитель NO = 1
	NT_COMMON_REG->PLL_NR = 1;		// Опорный делитель NR = PLL_NR + 2 = 3
	NT_COMMON_REG->PLL_CTRL_bit.PLL_DIV = 0;	// N = 2 * (PLL_DIV + 1) = 2
#ifdef QUARTZ_10MHZ
	NT_COMMON_REG->PLL_NF = 58;		// Делитель обратной связи PLL NF=F_PLL+2=60
#endif
#ifdef QUARTZ_12MHZ
	NT_COMMON_REG->PLL_NF = 48;		// Делитель обратной связи PLL NF=F_PLL+2=50
#endif
	// Для кварца 12 МГц:
	// Fvco = 12 * (50 / 3) = 200 MHz
	// Fref = 12 / (2 * 3) = 2 MHz
	// FOUT = 12 * 50 / (3 * 1) / 2 = 100 МГц, вроде сходится
	// Для 10 МГц тоже должно подойти с PLL_NF = 58
	NT_COMMON_REG->SYS_CLK = SYSCLK_PLLDIVCLK;		//Блок PLL
	do
	{
		// Выбор источника синхросигнала
		for(i = 0; i < 250; i++);
	}
	while (NT_COMMON_REG->SYS_CLK_bit.CURR_SRC != SYSCLK_PLLDIVCLK);	// Текущий источник тактирования должен совпадать с выбранным

}
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
serg_vega
Сообщения: 96
Зарегистрирован: 20 июл 2020, 15:50
Предприятие: АО "ВНИИ "Вега"

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение serg_vega »

Вот в какой функции включается этот COMMON_REG_SYS_CLK_CURR_SRC_PLLDiv = 0x4, /*!< PLL clock with post-divider */?
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

Re: К1921ВК01Т (арм Cortex-M4F)

Сообщение Лашкевич »

Пожалуйста, поясните вопрос. В моих заголовочниках COMMON_REG_SYS_CLK_CURR_SRC_PLLDiv не ищется. Пользователь переключает NT_COMMON_REG->SYS_CLK , а проц сам показывает в NT_COMMON_REG->SYS_CLK_bit.CURR_SRC какой источник частоты текущий. См. ТО:
Переключение с одной частоты на другую
Если требуется переключение на другую системную частоту, т. е. смена источника системной частоты, то следует записать номер источника в поле SEL_SRC регистра SYS_CLK. Проверка заданного источника и переключение осуществляется блоком управления синхросигналом. После успешного переключения на новую частоту в поле CURR_SRC аппаратно запишется номер выбранного источника. Таким образом, совпадение значений полей SEL_SRC и CURR_SRC говорит о том, что выбранный источник системной частоты подключен.
В случае если заданный источник не функционирует или функционирует некорректно, переход на новую частоту не произойдет и значение поля CURR_SRC не изменится. Отличие значений полей SEL_SRC и CURR_SRC сигнализирует о том, что смены источника тактового сигнала не произошло.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
Ответить

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