Например TDA7294

Форум РадиоКот • Просмотр темы - STM32F401 при вызове фунций с прерываниями слетает RXEIE
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Вс апр 28, 2024 03:33:01

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ 1 сообщение ] 
Автор Сообщение
Не в сети
 Заголовок сообщения: STM32F401 при вызове фунций с прерываниями слетает RXEIE
СообщениеДобавлено: Чт мар 07, 2024 10:28:28 
Первый раз сказал Мяу!

Зарегистрирован: Чт окт 26, 2023 10:09:20
Сообщений: 31
Рейтинг сообщения: 0
С STM32 и Cube IDE знаком всего пару недель, есть задача которую нужно решить, пришлось окунуться в эту тему, пока все на HAL. Моё устройство состоит из трех STM32F401, одно из них шлёт пакеты из 26 байтов, 1 байт синхра, второй длинна тела, и 24 байта тела пакета. Второй контроль должен это всё принимать, разбирать, перекладывать в массив и отправлять дальше по тому же uart. Первый узел отправки работает без проблем, пакеты всегда идут. А вот со вторым узлом (приёма) мучаюсь уже несколько дней, после того как ввёл в код обработку однонаправленной отправки SPI и HAL_ADCEx_InjectedStart_IT, стал слетать флаг RXEIE и перестаёт входить в callback. Алгоритм приёма такой: Запрос через прерывание одного байта, если он синхра то принимаем второй, если он меньше допустимой длинны пакета, то запрос тела. В момент отправки проверяю HAL_OK и если всё норм, то вешаю флаг callback false, в обработчике ничего кроме callback true, так же никаких delay в коде нет. В какой момент написания проги начались эти проблемы не знаю, но начали активно проявляться после использования SPI и ADC. Несколько минут и приём отваливается. Пробовал приём тела в режиме IDLE DMA, слетает флаг IDLEIE. Пытался пошагово найти в какой момент флаг слетает, пару раз увидел что это происходит при переходе в HAL_ADCEx_InjectedStart_IT(ADC_HandleTypeDef* hadc), закоментил переход, всё равно приём через какое то время останавливается. Если закоментить обращение к SPI то работает, правда не знаю насколько долго, минут 10 точно работает. Приоритет прерывания приёма 0, остальные 1.
Скорость UART 420000, пакеты идут 500Гц. Из периферии задействовано: приём без DMA и передача по DMA uart1 с прерыванием; spi2 master только передача с прерыванием; tim2 с прерыванием; три пина injected adc с прерыванием, пока задействован один; четыре gpio на выход + три пина gpio на ss spi.
Подскажите пожалуйста направление поиска проблемы.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ 1 сообщение ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 25


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y