Есть STM32F103 и есть в том числе внешняя периферия сидящая на I2c в количестве 1шт (BMP180 на платке, со своим стабилизатором и подтягивающими R). Дорожки до датчика около 15мм длиной, на разных сторонах платы. Рядом ничего активного и шумящего нет.
Длинную историю как и чего делал рассказывать не буду. Сразу по существу.
В наличии есть три MК. Если порты I2C настроить на альтернативную функцию и только потом инициализировать I2C. Первый МК работает нормально, второй не захотел формировать событие старт (по краней мере не было этого флага), третий сначала работал некоторое время, но потом стал так же как второй. Однако если задеть пальцем, подпаять антенку-проводок на SDA или подсадить туда кондер на 1нф и землю все работало. Если встать осциллом, никаких плохих сигналов не видно, но и опять при наличии щупа на SDA все работает, а SCL на такое никак не реагировало. После всяких мытарств, многократного поиска где же я дурак, выяснилось что если сначала включить тактирование модуля I2C , уже потом включить альтернативную функцию портов и уже потом проводя настройку остального в I2C все проблемы на всех МК ушли).
Вопрос. Прописано ли где-то, что альтернативные функции должны включаться только после включения тактирования периферии? Относится ли это ко всем перифериям?



