Перейти к содержанию
    

STM32MP157 IPCC портит ШИМ TIM8

Добрый день!

Имеется плата с STM32MP157 на борту, хочу с помощью IPCC  регулировать командами от А7 deadtime ШИМ TIM8 на М4. В начальном состоянии ШИМ генерится, но после прихода команды от А7 по ttyRPSMG0 выходы ШИМ становятся в исходное состояние, ШИМа на них нет. Без  IPCC функция изменения deadtime работает нормально. Каким-то образом IPCC  влияет на генерацию ШИМа таймером. Подскажите, может кто сталкивался с подобной проблемой? Используется фреймворк OpenAMP.

 

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Как человек никогда не включавший M4 ядро на STM32MP157 могу предложить только всё что нужно делать со стороны A7 напрямую... Может магия и исчезнет. Ну или посмотреть на код который по IPCC команду отрабатывает.

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1 час назад, GenaSPB сказал:

Как человек никогда не включавший M4 ядро на STM32MP157 могу предложить только всё что нужно делать со стороны A7 напрямую...

 

Не вариант, нужен жесткий реал тайм)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

В 08.05.2023 в 21:17, Алексей ВМ1 сказал:

Используется фреймворк OpenAMP.

 

30 минут назад, Алексей ВМ1 сказал:

нужен жесткий реал тайм)

Думаете на этом нечто вы его получите?)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

7 минут назад, mantech сказал:

 

Думаете на этом нечто вы его получите?)))

От IPCC реалтайма не нада, он лишь иногда меняет некритичные параметры для М4, на котором крутится реал тайм, поэтому все перетащить на А7 под Линухом не вариант.

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

3 hours ago, Алексей ВМ1 said:

Не вариант, нужен жесткий реал тайм)

Я на bare metel + STM312MP153DAB на A7 получаю что надо - с системным тиком 5 мс... Звуковая обработка. Куда реалтаймнее?
Но если спустили требование на линуксе... тогда грусть. Ведущие собаководы Специалисты утверждают, что есть версии real time ядра linux...

2 hours ago, Алексей ВМ1 said:

он лишь иногда меняет некритичные параметры для М4

Так может тот код что у вас меняет параметры ШИМ чуть больше себе позволяет? Исходники!

Изменено пользователем GenaSPB

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

void TIM_SetDeadTime(uint16_t dead_time)
{
	TIM_BreakDeadTimeConfigTypeDef sBreakDeadTimeConfig;

	sBreakDeadTimeConfig.OffStateRunMode = TIM_OSSR_DISABLE;
	sBreakDeadTimeConfig.OffStateIDLEMode = TIM_OSSI_ENABLE;
	sBreakDeadTimeConfig.LockLevel = TIM_LOCKLEVEL_1;
	sBreakDeadTimeConfig.DeadTime = TIM_CalcDeadtime(dead_time);// 104 - 500 ns, 168 - 1 us, 200 - 1.5 us
	sBreakDeadTimeConfig.BreakState = TIM_BREAK_DISABLE;
	sBreakDeadTimeConfig.BreakPolarity = TIM_BREAKPOLARITY_HIGH;
	sBreakDeadTimeConfig.BreakFilter = 0;
	sBreakDeadTimeConfig.Break2State = TIM_BREAK2_DISABLE;
	sBreakDeadTimeConfig.Break2Polarity = TIM_BREAK2POLARITY_HIGH;
	sBreakDeadTimeConfig.Break2Filter = 0;
	sBreakDeadTimeConfig.AutomaticOutput = TIM_AUTOMATICOUTPUT_DISABLE;//TIM_AUTOMATICOUTPUT_ENABLE;

	 if (HAL_TIMEx_ConfigBreakDeadTime(&htim8, &sBreakDeadTimeConfig) != HAL_OK)
	 {
		 Error_Handler();
	 }
}

Функция, которая меняет длительность DeadTime по получению посылки от А7. Без IPCC работает нормально.

 

if (VirtUart0RxMsg)
{
    VirtUart0RxMsg = RESET;

    deadTimeToSet = *(uint16_t*)&VirtUart0ChannelBuffRx[0];

    if(deadTimeToSet != deadTimePrev)
    {
    	deadTimePrev = deadTimeToSet;										

    	TIM_SetDeadTime(deadTimeToSet);
    }
}

Обработка принятого значения.

 

PS. Нашел косяк в своей функции TIM_SetDeadTime(), два поля не были проинициализированы, с фреймворком OpenAMP инициализировались мусором.

Изменено пользователем Алексей ВМ1

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...