Почему я не могу отправить команду чтения / записи на lis2dh12? - PullRequest
0 голосов
/ 09 июня 2019

Я пытаюсь написать код для связи с акселерометром .

Мой mcu - это nRF52, и я пытаюсь использовать пример SPI, приведенный в SDK15.0.0.0.

Я также использую драйверы, созданные производителем для lis2dh12 .

Учитывая, что моя конфигурация PIN-кода правильная, у меня до сих пор есть моя функция записи:

int32_t my_write_reg(void* handler, uint8_t reg, uint8_t* write_buf, uint16_t len)
{
  uint8_t buff[2];
  buff[0] = reg & 0x7F;
  buff[1] = write_buf[0];

  spi_xfer_done = false;
  APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, buff, 2, NULL, 0));
  while (!spi_xfer_done)
  {
      __WFE();
  };
  return 0;
}

Моя функция чтения следующая:

int32_t my_read_reg(void* handler, uint8_t reg, uint8_t* read_buf, uint16_t len)
{
  reg |= 0xC0;
  spi_xfer_done = false;

  APP_ERROR_CHECK(nrf_drv_spi_transfer(&spi, &reg, 1, read_buf, len));
  while (!spi_xfer_done)
  {
      __WFE();
  };
  return 0;
}

Инициализация SPI дается функцией:

void spi_init(void)
{
  nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
  spi_config.ss_pin   = SPI_SS_PIN;
  spi_config.miso_pin = SPI_MISO_PIN;
  spi_config.mosi_pin = SPI_MOSI_PIN;
  spi_config.sck_pin  = SPI_SCK_PIN;
  nrf_drv_spi_init(&spi, &spi_config, spi_event_handler, NULL);
}

Моя главная выглядит так:

int main(void)
{
    bsp_board_init(BSP_INIT_LEDS);

    APP_ERROR_CHECK(NRF_LOG_INIT(NULL));
    NRF_LOG_DEFAULT_BACKENDS_INIT();
    spi_init();


    NRF_LOG_INFO("SPI example started.");
    bsp_board_led_invert(BSP_BOARD_LED_0);

    lis2dh12_ctx_t my_accel;
    my_accel.read_reg = my_read_reg;
    my_accel.write_reg = my_write_reg;
    lis2dh12_device_id_get(&my_accel,m_rx_buf);
    NRF_LOG_HEXDUMP_INFO(m_rx_buf, sizeof(m_rx_buf));
    NRF_LOG_FLUSH();
}

У моего главного нет цикла while, потому что я просто пытаюсь прочитать идентификатор акселерометра. Но код всегда возвращает 0, как будто устройство даже не подключено.

Есть ли кто-нибудь, у кого есть время и интерес, чтобы помочь мне с этим? (Я не очень знаком с SPI и nRF52, но я пытаюсь).

...