Я пытаюсь подключить плату датчика LSM6DSOX с SPI к Nucleo-STM32L011K4. Похоже, что я могу успешно прочитать на доске, и я использую для этого следующий код:
static int32_t platform_write(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len)
{
HAL_GPIO_WritePin(GPIOA, CS_Pin, GPIO_PIN_RESET);
BSP_SPI1_Send(®, 1);
BSP_SPI1_Send(bufp, len);
HAL_GPIO_WritePin(GPIOA, CS_Pin, GPIO_PIN_SET);
return 0;
}
Однако, когда я пытаюсь читать из одного регистра, например, регистра WHO_AM_I, я всегда возвращаюсь 0x00 (что не должно быть так). Я использую следующий код для чтения:
static int32_t platform_read(void *handle, uint8_t reg, uint8_t *bufp,
uint16_t len)
{
reg |= 0x80;
HAL_GPIO_WritePin(GPIOA , CS_Pin, GPIO_PIN_RESET);
BSP_SPI1_Send(®, 1);
BSP_SPI1_Recv(bufp, len);
HAL_GPIO_WritePin(GPIOB, CS_Pin, GPIO_PIN_SET);
return 0;
}
Я не могу понять, почему это не работает. Я думал, что многие другие части кода были проблемой, но я думаю, что сузил это до этой части. Кто-нибудь может заметить ошибку?