ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Среда
15 апреля
1581591 Топик полностью
Nikolay_Po (Вчера, 19:55, просмотров: 39) ответил Nikolay_Po на Один и тот же IP-блок I2C кочует по миру. В I2C CH32V006, похоже, такой же баг в аналоговом фильтре, какой был у STM32F1xx. Если на выводах I2C напряжение появляется раньше, чем питание, модуль зависает в BUSY и переходит в BUSY через пару мкс после сброса.
Продолжение. Примерно так и удалось побороть зависание, как описано выше. В автоматическом режиме, с DMA, работает. 

Из не очевидного, неожиданного: Передаю по шине. По описанию модуля, после отправки адреса, DMA делает остальное и прерывания не ожидается. Мой конечный автомат ждёт прерывания по завершению передачи - чтобы сделать СТОП. И логика ломается.

Оказалось: В регистр конфигурации адреса, я записал тот же адрес, которым вызываю ведомого при передаче. И, эта зараза, вызывает прерывание по совпадению переданного адреса со своим собственным, даже сама адрес и отправляет! Типа О! передан мой адрес! Лови прерывание!

Логика в этом есть. Только я теперь не пойму, зачем я ведущему, который пока ничего не принимает, прописал тот же адрес, что и у ведомого?