Pull to refresh
24
0
Send message

Отличная статья... хороший слог и хорошая подача :)))

Отличная статья. С удовольствием ознакомился. Сам вожусь с DK2, статью мою здесь упомянули. :) <Вот эта «habr.com/ru/post/493884»> Но пока выйти на построение нормального графического интерфейса не получается. В сборке OpenLinux, которая в Стартер пакете, используется Wayland, писать графику можно на GTK. Но у меня не получилось корректно управлять положением окон на экране. Написал на Community, пока нормального ответа не пришло :( community.st.com/s/question/0D53W000004JZeGSAW/gtkwindowmove-does-not-work-
Поставил сборку на основе графического сервера Х11. Не получается связаться с сервером. :( community.st.com/s/question/0D53W0000080dmqSAA/i-have-2-problems-on-installed-stexampleimagex11
Пока в раздумьях, что же делать дальше. :)

На здоровье :) Если не получится, обращайтесь.
Я сам долго со всем этим разбирался. Потом написал на ST Community в STM32MPU с просьбой помочь. Откликнулся один человек и выслал проект для А7 и М4. Вот ссылка на эту ветку:
community.st.com/s/question/0D50X0000C6ccsBSQQ/cant-open-devttyrpmsg0-
Проект для М4 в CubeIDE.
Со всем согласен :)
У всех свой идеальный контроллер :)
Yocto — есть, qt — не знаю, GUI — планирую писать на Glade :)
Отлично. А частоту можно посмотреть через MCO. :)
Могу выложить полный код функции настройки тактирования, которой пользуюсь.
Спасибо на добром слове.
Я не против библиотек в принципе. Мне не очень нравится, когда утверждают, что есть единственный и правильный способ использования микроконтроллеров посредством HAL. На мой взгляд, если способ удобен и позволяет добиться необходимого результата — имеет право на существование.
Мне тоже ближе CMSIS и работа с регистрами. И я считаю, что этот подход позволяет быть независимым в выборе производителя и архитектуры микроконтроллеров. HAL — это библиотека одного производителя, при смене которого будет другой инструментарий. :)
Согласен. :)

По инверсии — не везде нужен сигнал в противофазе. :)
Синус на STM32H7 легко генерится софтом. Рабочий пример из программы генерации 2 фаз со сдвигом 180 градусов, т.е. в противофазе. Используются функции из DSP LIB.

Две переменные объявлены в main:
float angle_pointer_step = 3.6; //шаг разворачивания синуса
float angle_degree_offset_float = 180; //смещение второго канала

Остальное в прерывании:

//1 фаза угол
angle_degree_float = angle_degree_float + angle_pointer_step;

if (angle_degree_float >= 360 ) angle_degree_float = 0;

angle_rad_A = (angle_degree_float * _Pi) / 180.0;

PWM_A_float = arm_sin_f32(angle_rad_A) * amplitude;

PWM_A = (signed long) PWM_A_float;

//2 фаза со смещение

angle_degree2_float = angle_degree_float + angle_degree_offset_float;

if (angle_degree2_float > 360)
{
angle_degree2_float = angle_degree2_float — 360;
}

angle_rad_B = (angle_degree2_float * _Pi) / 180.0;

PWM_B_float = arm_sin_f32(angle_rad_B) * amplitude;

PWM_B = (signed long) PWM_B_float;

Вывод в ЦАП для отладки
DAC1->DHR12R1 = 2048 + PWM_A;
DAC1->DHR12R2 = 2048 + PWM_B;

TIM4->SR &= ~TIM_SR_UIF; //сброс флага UIE: Update interrupt enable

А в чем проблема? код нечитабелен? :) проблема с производительностью? биты определены в хедере… :)
Значения делителей и множителей PLL необходимо устанавливать до запуска. После запуска поменять нельзя, нужно будет останавливать. Поэтому определенный порядок должен быть. Также и с выбором источника SysClk.
Наводка, именно 50 Гц?
Сотня килоом, нормально, не фантастика. Может коэффициент усиления большой?
Используется. :) Я имел небольшой опыт написания на LabView. Не представляю, как сопровождать и поддерживать большой код в этой системе.
Согласен :) не одна.
void init_FMC(void)
{
RCC->AHB3ENR |= RCC_AHB3ENR_FMCEN;
FMC_Bank1->BTCR[0] = 0x000010D9; //for 168 MHz
FMC_Bank1->BTCR[1] = 0x000300F;
}
Инициализация FMC для F7.
Настройка FMC контроллера — одна строчка :) если интересно могу выложить :)
В Reference Manual детально описана инициализация PLL, а вот переключение SysClk на тактирование от PLL нет так явно. :) Пришлось потратить некоторое время на исследование HAL и формирование нужной последовательности.

Information

Rating
Does not participate
Registered
Activity