Skocz do zawartości

Zapis/odczyt z czujnika mc3479 po SPI


fidelty

Pomocna odpowiedź

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));

image.png.8bb5c7cb57e04e8a6b11c31684bf1cdb.png

Link do komentarza
Share on other sites

Bądź aktywny - zaloguj się lub utwórz konto!

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony

Utwórz konto w ~20 sekund!

Zarejestruj nowe konto, to proste!

Zarejestruj się »

Zaloguj się

Posiadasz własne konto? Użyj go!

Zaloguj się »
×
×
  • Utwórz nowe...

Ważne informacje

Ta strona używa ciasteczek (cookies), dzięki którym może działać lepiej. Więcej na ten temat znajdziesz w Polityce Prywatności.