为什么不能向lis2dh12发送读/写命令?

时间:2019-06-08 22:55:06

标签: accelerometer spi nrf52

我正在尝试编写一些代码以便与accelerometer通信。

我的单片机是nRF52,我正在尝试利用SDK15.0.0.0中提供的SPI示例。

我还使用制造商为lis2dh12构建的驱动程序。

鉴于我的PIN配置正确,到目前为止,我的写功能如下:

mixed-content

我的阅读功能如下:

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

SPI的初始化由以下函数提供:

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

我的主像是这样:

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

我的主循环没有while循环,因为我只是试图读取加速度计的ID。但是代码总是返回0,就像设备没有连接一样。

有谁有时间和兴趣来帮助我解决这个问题? (我对SPI和nRF52不太熟悉,但我正在尝试)。

0 个答案:

没有答案