I2C master для STM32F4?
Решение на HAL актуальной версии:
1. Через DMA не хочет передавать по 1 байту, только от 2х и более.
2. Известная проблема с "зависанием" STM32 I2C master проявляется вплоть до постоянного нахождения в EV-прерывании (какой-то флаг не сбрасывается в HAL-обработчике).
легких путей нет - либо написать свой, либо разобраться в существующем, потому что у каждого свой глюк вылазит.
спасибо за совет, egor. К сожалению, это крайний вариант просто по ограниченности по времени сейчас. Если бы кто-то подсказал, как исправить чтение / запись 1 байта через DMA (хотя бы запись!), возможно, это решило бы данную задачу...
глюк, на самом деле известный (хотя по слухам их два, просто проявляются схожим образом) и присутствует в большинстве контроллеров STM32
от двух и более четно или нет, 3 байта передать можно?
Забить на HAL и использовать LL для начала
По нашей предварительной оценке минимум 3 раб дня на дев + отладку. Не успеваем
без DMA не вариант?
Вариант. Лишь бы работало :)
так может стоит проверить тогда халовские функции, работающие без DMA, у меня работало. это я к тому что иногда лучше в лоб сделать, чем супероптимально
В моем случае зависание поймано именно на отправке 1 байта через _IT
не сталкивался, видимо придётся errata читать, как выше советовали
а, глянул старый проект, у меня даже без прерываний сделано, возможно потому что тоже глюки были
Да, в еррате есть информация. Вопрос в том, реализовывал ли уже кто-то эти рекомендации.
что там такого с I2C master на целых 3 дня переделывания?
Обсуждают сегодня