Сейчас глянул свои старые исходники с i2c, нормально работают под симулятором.
I2C_OwnAddress1 вообще = 0
Когда разбирался, помню, что заработало не сразу. Там еще еррата проявилась, если FSMC включен, то он конфликтует по выводам с I2C, ест-но ничего не работает.
|
Цитата:
|
|
Что весело - адрес в I2C1_DR пишется без учете бита направления.
|
Ну в I2C_Send7bitAddress бит направления берется из параметра I2C_Direction.
Но адрес все равно должен быть в 7:1 битах.
Вчера наткнулся на одну фишку CRC модуля в STM32. Как пишут в ДШ, операция записи в CRC_DR не завершиться, пока не сосчитается CRC. С этим спорить не буду, похоже так и есть. Но вот запись в регистр CRC_CR таким свойством не обладает и если написать
CRC-›CR = CRC_CR_RESET;
CRC-›DR = ...;
в коде подряд, то будет косяк. Надо добавлять короткую задержку.
При использовании библиотечных функций будет зависеть от компилятора, если он не сделает функции инлайном, то должно работать.