Hi,
I am Using NRF52840-DK Board. We are trying to transmit multiple data using NRFx_SPIM Example. for single reg read it is working fine.
please check below code is it correct or not?.
void MAX30003_Reg_Read(uint8_t Reg_address)
{
nrfx_err_t err_code = 0;
uint32_t data=0xFF;
//Prepare the tx buffer
memset(SPI_TX_Buff, 0x00, sizeof(SPI_TX_Buff)); // Erases the buffer
memset(SPI_RX_Buff, 0x00, sizeof(SPI_TX_Buff)); // Erases the buffer
SPI_TX_Buff[0] = (Reg_address<<1) | 0x1; // should be SPI_TXBuff[0], I assume RREG = 0x1;
//Create the transfer descriptor
nrfx_spim_xfer_desc_t xfer_desc4 = NRFX_SPIM_XFER_TRX(SPI_TX_Buff, sizeof(SPI_TX_Buff), SPI_RX_Buff, sizeof(SPI_TX_Buff));
nrfx_spim_xfer_desc_t xfer_desc5 = NRFX_SPIM_XFER_TRX((data << 16), sizeof(data), SPI_RX_Buff, sizeof(data));
nrfx_spim_xfer_desc_t xfer_desc6 = NRFX_SPIM_XFER_TRX((data << 8), sizeof(data), SPI_RX_Buff, sizeof(data));
nrfx_spim_xfer_desc_t xfer_desc7 = NRFX_SPIM_XFER_TRX(data, sizeof(data), SPI_RX_Buff, sizeof(data));
//Initiate the transfer
err_code = nrfx_spim_xfer(&spi, &xfer_desc4, 0);
err_code = nrfx_spim_xfer(&spi, &xfer_desc5, 0);
err_code = nrfx_spim_xfer(&spi, &xfer_desc6, 0);
err_code = nrfx_spim_xfer(&spi, &xfer_desc7, 0);
APP_ERROR_CHECK(err_code);
// while (spi_xfer_done == true);
}
I am refer below code :
uint32_t MAX30003::readRegister(const Registers_e reg)
{
uint32_t data = 0;
m_cs = 0;
m_spiBus.write((reg << 1) | 1);
data |= (m_spiBus.write(0xFF) << 16);
data |= (m_spiBus.write(0xFF) << 8);
data |= m_spiBus.write(0xFF);
m_cs = 1;
return data;
}
please help me for that.
Thanks
rohit