我正在尝试编写一些代码以便与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, ®, 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不太熟悉,但我正在尝试)。