К1921ВК01Т (арм Cortex-M4F)
Модераторы: ea, dav, bkolbov, Alis, pip, _sva_
-
- Сообщения: 209
- Зарегистрирован: 14 дек 2015, 09:21
- Предприятие: АО НИИЭТ
- Откуда: АО НИИЭТ, Воронеж
Re: К1921ВК01Т (арм Cortex-M4F)
Доброго времени суток!
Осциллограммы с нашей платы макетно-отладочной, с момента включения питания и до обращения к внешней памяти (микроконтроллер сконфигурирован на выполнение программы из внешней памяти).
Осциллограммы с нашей платы макетно-отладочной, с момента включения питания и до обращения к внешней памяти (микроконтроллер сконфигурирован на выполнение программы из внешней памяти).
Re: К1921ВК01Т (арм Cortex-M4F)
По следам обсуждения проблем входа в режим отладки и программирования хотел бы дополнить, что у меня и ST-Link и Keil выдаёт сюрпризы в виде "Could not stop кортекс-M device." при работе в шумной среде: стоит несколько плат с НИИЭТ МК, российскими DC/DC, интерфейсами, источник питания и ПК, запитанные от одной сети. При чём снижение скорости особо не помогает, а вот если отключить часть плат, или некоторые интерфейсы (к слову, развязанные, но теми же российскими элементами), или подключится с ноута, имеющего развязку от сего хозяйства - прошивается нормально. При чём когда это дело стояло на столе - проблем не было, проявилось после упаковки и сжатия в корпусе.
Пока не было возможности подробно исследовать вопрос, но в общем и целом пришёл к выводу по нескольким устройствам - НИИЭТ более капризный к процедурам прошивки, чем тот же STM. Впрочем, похожие проблемы встречаются и у Миландра.
Пока не было возможности подробно исследовать вопрос, но в общем и целом пришёл к выводу по нескольким устройствам - НИИЭТ более капризный к процедурам прошивки, чем тот же STM. Впрочем, похожие проблемы встречаются и у Миландра.
- Лашкевич
- Сообщения: 373
- Зарегистрирован: 13 май 2015, 13:10
- Предприятие: ООО "НПФ Вектор"
- Откуда: Москва
- Контактная информация:
Re: К1921ВК01Т (арм Cortex-M4F)
Ну ядро CortexM там стандартное, житаг тоже. Скорее всего такое впечатление сложилось из-за обилия других отечественных компонентов. Мы на фирме замечали, что отечественные оптроны, например, имеют большую проходную ёмкость по сравнению с импортными аналогами, из-за чего помехи от ШИМ через них очень хорошо проходят. У нас есть несколько изделий, где отечественный только К1921ВК01Т, а всё остальное как обычно импортное - никаких проблем нету (по сравнению с тексасом, например, никаких новых капризов).
Пробуйте использовать гальванически-развязанный JTAG, заземлять корпуса устройства, связывать через конденсатор цифровую землю устройства и корпус, искать источник помех, а лучше переходить на работу полностью через другие интерфейсы - развязанный CAN, например.
Пробуйте использовать гальванически-развязанный JTAG, заземлять корпуса устройства, связывать через конденсатор цифровую землю устройства и корпус, искать источник помех, а лучше переходить на работу полностью через другие интерфейсы - развязанный CAN, например.
-
- Сообщения: 5
- Зарегистрирован: 20 янв 2022, 11:38
- Предприятие: ООО НИЦ БУЛАТ
Re: К1921ВК01Т (арм Cortex-M4F)
Здравствуйте!
Во время работы с К1921ВК01Т заметил следующую особенность:
При отключении питания на 10-20 сек. и повторном включении, контроллер не стартует. Не помогает даже обнуление вывода 9 RST.
Выяснил, что это происходит из-за остаточного напряжения на шине 1,8В. Пока на ней остается хоть какое-то напряжение, контроллер повторно не стартует. В нашей схеме шина 1,8В уходит в 0 через 30 сек. Получается, что при кратковременном отключении питания контроллер виснет и я его не могу ничем оживить, только отключением на более 30 сек.
Подскажите, как можно бороться с этой проблемой?
Во время работы с К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 секунд включите питание и потом отпустите резет. Запустится?
Re: К1921ВК01Т (арм Cortex-M4F)
А как настроить 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); // Текущий источник тактирования должен совпадать с выбранным
}
Re: К1921ВК01Т (арм Cortex-M4F)
Вот в какой функции включается этот 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 сигнализирует о том, что смены источника тактового сигнала не произошло.