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