NikP писал(а): * | 2020-окт-21 10:49 |
Добрый день!
Диоды в режиме DualCore (проекта SMP) на отладочной плате замигали, всё ОК.
Попробовал пойти дальше изменить частоту тактирования ядра HSI (что в примере) на HSE .
К проекту SMP добавил модули mldr124_clk.h и mldr124_clk.с.
В проекте добавил код :
...........
// Настройка тактовой частоты: HSE0-PLL0
CLK_CNTR->PER1_CLK |= 1<<26; // COMP0 EN
COMP0->ANABG_CTRL=0x00000081;
BKP->KEY = 0x8555AAA1;
CLK_XSEConfig( CLK_HSE0, CLK_XSE_ON );
if( !CLK_XSEWaitReady( CLK_HSE0 ) )
if(!CLK_SetPllClk( &CLK_CNTR->PLL[0], PLL_CLK_HSE0, CPU_CLK ) )
CLK_PllState( &CLK_CNTR->PLL[0], ENABLE );
if( !CLK_PLLWaitReady( &CLK_CNTR->PLL[0] ) )
CLK_CNTR->MAX_CLK = MAX_CLK_PLL0;
............
При этом если данный код вставлять в участок программы if (SMP_REG==0) , то импульсы идут только по выходу, управляемому
ядром 0, если в if (SMP_REG==1) - то импульсы на выходе, управляемому ядром 1. Если код вставить в оба участка, то программа вроде работает, но на выходах ничего нет.
Вопрос: как настроить тактовую частоту ядер, отличную от HSI ?
Здравствуйте!
Использовать частоту для MAX_CLK, отличную от HSI, в режиме DUALCORE можно, при этом без каких-либо проблем на отладочной плате производства компании Миландр на базе микроконтроллера Электросила будут функционировать следующие предустановки: HSE0, HSE0/2, HSI/2. В Вашем же случае для частоты MAX_CLK применяется блок умножения тактовой частоты PLL (всего четыре блока). При работе с этим блоком есть несколько особенностей (учтены в приложенном к посту проекте):
1. При использовании библиотечного файла mldr149_clk.c (или mldr124_clk.c), в частности функции CLK_SetPllClk(), которая применяется в конструкции для задания необходимой частоты, важно учесть, что при поиске делителя q допущена ошибка, что может приводить к некорректной работе на определенных частотах. В скором времени официально будет предоставляться пак для IDE Keil под микроконтроллер Электросила, где данный файл уже будет актуальным;
2. Выходная частота PLL должна быть от 150 МГц до 300 МГц, выходной же делитель может быть 2 или 4, поэтому минимальная частота, которую можно задать с PLL, составляет 37.5 МГц;
3. У FLASH-памяти есть время выборки, и если частота большая, то прежде чем на неё перейти, нужно настроить количество циклов ожидания в контроллере FLASH, регистр CNTR, биты [3:0] поля WAITCIRCLE.
Приблизительно рассчитанное количество циклов ожидания в контроллере FLASH для работы микроконтроллера на разных частотах:
Диапазон частот 37.5 МГц - 86 МГц = не менее 2;
Диапазон частота 87 МГц - 124 МГц = не менее 3;
Диапазон частот 125 МГц и более = 4 и более.
Проблем выявлено не было, всё работает штатно. Если же Вами будет принято решение отлаживать оба ядра, то необходимо следовать рекомендациям из статьи официального информационного портала, которая неоднократно упоминалась в переписке, тем не менее, статья доступна по ссылке:
https://support.milandr.ru/base/primene ... how/24394/
Для Вашего же удобства во вложении к посту, на которой представлены настройки для подключения отладчиком (ULINK2, например) к каждому ядру, пока другое выполняет свою программу.
Не забудьте, пожалуйста, для работы с микроконтроллером Электросила обновить проект спецификации, обновление которого состоялось 21.10.2020. Актуальная версия проекта спецификации на микроконтроллер Электросила, ровно как и любая другая документация по изделиям компании Миландр, доступна на информационном портале отдела технической поддержки компании Миландр (помимо официального сайта компании Миландр за исключением как раз-таки части документации), в поиске раздела "Документация":
https://support.milandr.ru/docs/dokumentatsiya/

Открыть Тык
Вложение:
![[ attachment ]](./download/file.php?id=4358&t=1&sid=815ef2612c243b2db8f5efbe02c661ca)
elpower_debug.png [ 99.97 КБ | 2586 просмотров ]

Закрыть