Делаю инициализацию I2C:
Код
...
I2C_InitStruct.I2C_Mode =I2C_Mode_I2C;
I2C_InitStruct.I2C_OwnAddress1=0x2a; <<<<
I2C_InitStruct.I2C_Ack=I2C_Ack_Enable;
I2C_InitStruct.I2C_DutyCycle=I2C_DutyCycle_2;
I2C_InitStruct.I2C_ClockSpeed = 100000;
I2C_InitStruct.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit; <<<< //0x4000
I2C_Init(I2C1, &I2C_InitStruct);
....
I2C_InitStruct.I2C_Mode =I2C_Mode_I2C;
I2C_InitStruct.I2C_OwnAddress1=0x2a; <<<<
I2C_InitStruct.I2C_Ack=I2C_Ack_Enable;
I2C_InitStruct.I2C_DutyCycle=I2C_DutyCycle_2;
I2C_InitStruct.I2C_ClockSpeed = 100000;
I2C_InitStruct.I2C_AcknowledgedAddress=I2C_AcknowledgedAddress_7bit; <<<< //0x4000
I2C_Init(I2C1, &I2C_InitStruct);
....
Делаю трассировку внутри функции I2C_Init, дохожу до строки
Код
I2Cx->OAR1 = (I2C_InitStruct->I2C_AcknowledgedAddress | I2C_InitStruct->I2C_OwnAddress1);
И тут начинается неладное - смотри в отладчик и вижу:
Нажмите для просмотра прикрепленного файла
(поясню.. add7 = (0x2a>>1), причем пробовал другие значения ставить, они именно смещаются на 1 бит в право).
Устройство действительно отзывается по адресу 15 (2a>>1)
Что я не так делаю?