Пытаюсь подружить STM32F303 и WT901 по I2C шине.
Не хотит читать с нужного регистра.
Читает не известно с какого адреса , но что бы добраться до нужных мне данных, надо прочитать больше 150 байт.
код
Спойлер
void GYRO_READ_I2C2(uint8_t HardSlaveAddr, uint16_t ExtSlaveAddress,uint8_t NumBytes, uint8_t *buf)
{
int DataNum = 0;
I2C2->CR2 = (1<<16) | (HardSlaveAddr<<1);
while (!(I2C2->ISR & I2C_ISR_TXE) );
I2C2->TXDR = ExtSlaveAddress;
I2C2->CR2 |= I2C_CR2_START;
while (!(I2C2->ISR & I2C_ISR_TC) ){};
I2C2->CR2 = I2C_CR2_AUTOEND | (NumBytes<<16) |
(HardSlaveAddr<<1) |
I2C_CR2_RD_WRN |
I2C_CR2_NACK;
I2C2->CR2 |= I2C_CR2_START;
while(DataNum != NumBytes)
{
while(LL_I2C_IsActiveFlag_RXNE(I2C2) == RESET){};
buf[DataNum] = LL_I2C_ReceiveData8(I2C2);
DataNum++;
}
while(LL_I2C_IsActiveFlag_STOP(I2C2) == RESET){};
LL_I2C_ClearFlag_STOP(I2C2);
}
Вызов GYRO_READ_I2C2 (0x50,0x3D,6,rd_value); //Адрес гироскопа, адрес регистра,количество байтКартинка с анализатора
В анализаторе стоит 8бит.
Делал для того что бы сравнить с картинкой из даташита.
Вот она.
Не могу понять что не хватает.
Гироскоп отзывается, и передает свои данные, но не берет номер регистра, откуда читать.
Вот даташит на гироскоп, нужное на 47 странице документа
- 1.PDF
- (2.69 MiB) Скачиваний: 284
Может кто что подскажет ?
СТМ занялся не давно многое еще не понятно.
И на F3 мало примеров.
А на этот гироскоп, все примеры для уарта, для I2C не нашел.