Cześć wszystkim.
Chciałbym skonfigurować akcelerometr mc3479 do pomiaru położenia komunikując się z czujnikiem przy użyciu interfejsu spi. Do tej pory nie wykorzystywałem zbyt tego interfejsu i mam problem z funkcjami do zapisu oraz do odczytu rejestrów. Mianowicie po napisaniu funkcji nie jestem w stanie zapisać/odczytać wartości z czujnika. Próbowałem podać przykładową wartość, ale niestety nie zadziałało. Czy ktoś ma pomysł co mogłem przeoczyć? 🙂
void mc_reg_write(uint8_t reg, uint8_t value) {
uint8_t tx[3] = { 0x40 | reg, value, 0x00 };
HAL_GPIO_WritePin(CSACC_GPIO_Port, CSACC_Pin, GPIO_PIN_RESET);
HAL_SPI_Transmit(&hspi1, tx, 3, HAL_MAX_DELAY);
HAL_GPIO_WritePin(CSACC_GPIO_Port, CSACC_Pin, GPIO_PIN_SET);
}
uint8_t mc_reg_read(uint8_t reg) {
uint8_t tx_data[2] = { reg | 0x80, 0x00 };
uint8_t rx_data[2] = { 0x00, 0x00 };
HAL_GPIO_WritePin(CSACC_GPIO_Port, CSACC_Pin, GPIO_PIN_RESET);
HAL_SPI_TransmitReceive(&hspi1, tx_data, rx_data, 2, HAL_MAX_DELAY);
HAL_GPIO_WritePin(CSACC_GPIO_Port, CSACC_Pin, GPIO_PIN_SET);
return rx_data[1];
}
mc_reg_write(0x12, 0x01);
printf("In register 0x%02X is: (0x%02X)\r\n",0x12, mc_reg_read(0x12));