Цитата(igorle @ Oct 7 2013, 10:52)

Я тоже ничего странного и неочевидного не заметил. Почему пишется 2A в регистр, а поле читается 15 - вам объяснили. К STM библиотеке это не имеет никакого отношения. Так что уточните, пожалуйста, вопрос.
Как это не имеет отношения к STM библиотеке?
Мне одному кажется, что в результате выполнения строчки
I2C_InitStruct.I2C_OwnAddress1=0x2a;
OwnAddres должен быть 0x2a, а не 0x15 или вообще какой-нибудь 0xff. Иначе какой смысл в ней, я и сам мог бы записать в регистр значение.
Более того
Код
typedef struct
{
uint32_t I2C_ClockSpeed; /*!< Specifies the clock frequency.
This parameter must be set to a value lower than 400kHz */
uint16_t I2C_Mode; /*!< Specifies the I2C mode.
This parameter can be a value of @ref I2C_mode */
uint16_t I2C_DutyCycle; /*!< Specifies the I2C fast mode duty cycle.
This parameter can be a value of @ref I2C_duty_cycle_in_fast_mode */
uint16_t I2C_OwnAddress1; /*!< Specifies the first device own address.
This parameter can be a 7-bit or 10-bit address. */
uint16_t I2C_Ack; /*!< Enables or disables the acknowledgement.
This parameter can be a value of @ref I2C_acknowledgement */
uint16_t I2C_AcknowledgedAddress; /*!< Specifies if 7-bit or 10-bit address is acknowledged.
This parameter can be a value of @ref I2C_acknowledged_address */
}I2C_InitTypeDef;
/*!< Specifies the first device own address. This parameter can be a 7-bit or 10-bit address. */ Отсюда очевидно, что значение будет смещено? Насколько я знаю английский язык, тут сказано, что я именно адрес устройства задаю, ни слова про смещение и т.п.
Сообщение отредактировал RiseOfDeath - Oct 7 2013, 09:36