LSM6DSO issue connecting to AUX SPI
Hi,
I have trouble using LSM6DSO via the AUX SPI - MISO is always high.
I verified via the primary interface (I2C) that register WHO_AM_I (0Fh) returns 6Ch.
I tried to change VDD after reading this post:
- VDD=3.3V: reading register CTRL1_OIS (70h) with the primary interface returns 0 (WHO_AM_I returns correct value).
- VDD=1.8V: reading register CTRL1_OIS (70h) with the primary interface returns FFh (WHO_AM_I returns correct value).
My HW setup:
STEVAL-MKI196V1 connected to NUCLEO-G071RB.
VDD and VDDIO were changed for both boards during the test.
SPI signals look fine in the oscilloscope.
SPI configuration in SW:
hspi1.Instance = SPI1;
hspi1.Init.Mode = SPI_MODE_MASTER;
hspi1.Init.Direction = SPI_DIRECTION_2LINES;
hspi1.Init.DataSize = SPI_DATASIZE_8BIT;
hspi1.Init.CLKPolarity = SPI_POLARITY_HIGH;
hspi1.Init.CLKPhase = SPI_PHASE_2EDGE;
hspi1.Init.NSS = SPI_NSS_SOFT;
hspi1.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
hspi1.Init.FirstBit = SPI_FIRSTBIT_MSB;
hspi1.Init.TIMode = SPI_TIMODE_DISABLE;
hspi1.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
hspi1.Init.CRCPolynomial = 7;
hspi1.Init.CRCLength = SPI_CRC_LENGTH_DATASIZE;
hspi1.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;main.c loop SPI reading (both options don't work):
uint8_t reg = 0x0F;
uint8_t bufp[2] = {0,0};
while (1) {
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_RESET);
// option 1:
status = HAL_SPI_Transmit(&hspi1, ®, 1, HAL_MAX_DELAY);
status = HAL_SPI_Receive(&hspi1, bufp, 2, HAL_MAX_DELAY);
// option 2:
status = HAL_SPI_TransmitReceive(&hspi1, ®, bufp, 1, HAL_MAX_DELAY);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_0, GPIO_PIN_SET);
HAL_Delay(1);
}Best regards,
Yiftah
