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

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

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

AlexBlv
Сообщения: 16
Зарегистрирован: 25 апр 2017, 12:08
Предприятие: НПО ЛЭМЗ

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

Сообщение AlexBlv »

Да, кварцы меняли. Это происходит на 3м микроконтроллере именно партии 1822, на аналогичных платах 2037 все хорошо
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

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

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

Для начала покопайте в сторону проверки, что не запускается PLL. Попробуйте переписать софт так, чтобы он мигал светодиодиками от внутреннего RC генератора, не выполняя переход на тактирование от кварца. Проверьте, работает он так или нет.
Также потом проверьте корректность инициализации PLL, что частота Fvco не выше 200МГц (например, можно посмотреть тут).

В зависимости от результата (проц работает от RC генератора или нет) можно думать дальше.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
AlexBlv
Сообщения: 16
Зарегистрирован: 25 апр 2017, 12:08
Предприятие: НПО ЛЭМЗ

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

Сообщение AlexBlv »

Спасибо, частота 100 Мгц (взят с примера Motorcontrol, кварц 12 МГц)
NT_BOOTFLASH->T_ACC = 6; //Задержка от установки адреса, до считывания данных из флеш-памяти (в транзакциях чтения)
//Настройка частоты тактирования
//выходная частота равна FOUT = (FIN * NF) / ( NR * NO), где FIN - частота кварца
NT_COMMON_REG->PLL_OD = 2; //Выходной делитель PLL NO=2
NT_COMMON_REG->PLL_NR = 1; //Опорный делитель PLL NR=R_PLL+2=3
NT_COMMON_REG->PLL_NF = 48; //Делитель обратной связи PLL NF=F_PLL+2=50
//FOUT = 12*50/(3*2) = 100 МГц, вроде сходится
do
{
//Выбор источника синхросигнала
NT_COMMON_REG->SYS_CLK = SYSCLK_REFCLK; //Выбор источника зависит от состояния сигнала на входе микроконтроллера CPE_pad: 0 - Блок POR, 1 - Вход микроконтроллера XI_OSC
NT_COMMON_REG->SYS_CLK = SYSCLK_PLLCLK; //Блок PLL
for(i = 0; i < 50; i++);
}
while (NT_COMMON_REG->SYS_CLK_bit.CURR_SRC != SYSCLK_PLLCLK); //Текущий источник тактирования должен совпадать с выбранным
// Разрешение работы периферии
NT_COMMON_REG->APB_CLK = 0x7FFFF | 0x1000000 | 0x80000;

for (int i = 0; i < 100; i++){//чтобы типа прошло время... пускай там порезетится
NT_COMMON_REG->PER_RST0=0;
NT_COMMON_REG->PER_RST1=0;
}
Есть пример с внутренним генератором?
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

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

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

В Motorcontrol как раз и было неправильно у нас сделано, там итоговая частота тактирования 100МГц, но промежуточная частота Fvco была больше, чем надо. Сейчас исправили, поэтому я дал ссылку на исправленную версию.

Чтобы от RC генератора работать, там вроде надо ножку проца перепаять. Но можно просто попробовать работать без PLL для начала. Просто не вызывайте функцию инициализации PLL, и вообще всю программу редуцируйте до мигания светодиодами циклом while прямо в main, чтобы ничего вообще не инициализировалось, кроме GPIO.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
AlexBlv
Сообщения: 16
Зарегистрирован: 25 апр 2017, 12:08
Предприятие: НПО ЛЭМЗ

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

Сообщение AlexBlv »

Спасибо!
правильно ли я понимаю, что например в последней версии InitCLK() надо закоментировать ф-ю
Init_Clk_Pll_Div_Fvco200(); ну и убрать тактирование АЦП и UART.
Все с узлами экспериментируем. Заметили закономерность - в минус 50 после выключения нужно едва коснуться пальцем (проволочкой) до крышки МК. Тогда даже спустя время он включится (в выключенном состоянии коснуться, потом подать питание - все ОК). После выключения ситуация та же, без пинка не включается. Надо сначала коснуться, потом включится. Пробовали соединить крышку с GND - безрезультатно. Аналоговая и цифровые земли объединены.
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

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

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

надо закоментировать ф-ю
Init_Clk_Pll_Div_Fvco200(); ну и убрать тактирование АЦП и UART.
Ну, например, так. Или вообще не вызывать InitCLK() и руками включить тактирование GPIO.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
AlexBlv
Сообщения: 16
Зарегистрирован: 25 апр 2017, 12:08
Предприятие: НПО ЛЭМЗ

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

Сообщение AlexBlv »

Попробовал, оставил лишь строчки
NT_COMMON_REG->GPIODEN0=0xFFFFFFFF;
NT_COMMON_REG->GPIODEN1=0xFFFFFFFF;
NT_COMMON_REG->GPIODEN2=0xFFFFFFFF;
NT_COMMON_REG->GPIODEN3=0xFFFFFFFF;

ну и мигание портом с delay в виде счетчика переменной
Не помогло, у контроллеров "плохой серии" нет запуска. (пока от внешнего кварца)
Аватара пользователя
Лашкевич
Сообщения: 373
Зарегистрирован: 13 май 2015, 13:10
Предприятие: ООО "НПФ Вектор"
Откуда: Москва
Контактная информация:

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

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

Сверьте номиналы конденсаторов на кварцах - у нас на платах 10пф. Попробуйте другие кварцы, другого производителя. Может быть, у текущих какие-то не такие параметры. Попробуйте тактирование от RC цепочки (читайте ТО, как включить). Проверьте порядок подачи и уровень питания и ножку резет. Снимите осциллограмму обоих питаний и резета, может там что-то видно будет.
С уважением,
Лашкевич Максим.
Инженер-программист ООО "НПФ Вектор", Москва.
http://motorcontrol.ru/
AlexBlv
Сообщения: 16
Зарегистрирован: 25 апр 2017, 12:08
Предприятие: НПО ЛЭМЗ

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

Сообщение AlexBlv »

Да, хорошо, сейчас проверим. Кварцы пробовали всякие, конденсаторы к ним тоже. Они обычно МПО и емкость не должна меняться в температуре. С Reset сейчас сделаем через тумблер, чтобы точно быть уверенным, что он подастся через время после подачи питаний (там ведь без разницы, что они подаются не в нужной последовательности, до поднятия уровня RESET?). От внутреннего RC еще надо попробовать.
Контроллер правильной серии на аналогичных платах до минус 60 ведет себя великолепно....
AlexBlv
Сообщения: 16
Зарегистрирован: 25 апр 2017, 12:08
Предприятие: НПО ЛЭМЗ

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

Сообщение AlexBlv »

Еще вопрос, должна ли быть какая-нибудь задержка (программная) при включении? Можно ли сделать что-то дополнительно?
Код из примера
//Переходим на тактирование от внутреннего кварца
do
{
NT_COMMON_REG->SYS_CLK = 0;
for(i = 0; i < 50; i++);
}
while (NT_COMMON_REG->SYS_CLK_bit.CURR_SRC != SYSCLK_REFCLK);
Когда я убрал вообще инициализацию ClkInit(), а оставил только GPIO, по ощущениям стало работать хуже (реже включаться на пониженных температурах минус 20, минус 30) Все это от внешнего кварца
Ответить

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