Since the command is 2 bytes long and I need to receive 3 bytes following.
static const nrf_drv_spi_t spi1 = NRF_DRV_SPI_INSTANCE(1);
static uint8_t cmd[5];
static uint8_t mfg_id[5];
void w25n01gv_init(void)
{
nrf_drv_spi_config_t spi_config = NRF_DRV_SPI_DEFAULT_CONFIG;
spi_config.ss_pin = SD_SPI_SS_PIN;
spi_config.sck_pin = SPI_SCK_PIN;
spi_config.mosi_pin = SPI_MOSI_PIN;
spi_config.miso_pin = SPI_MISO_PIN;
spi_config.frequency = NRF_DRV_SPI_FREQ_1M;
//spi_config.bit_order = NRF_DRV_SPI_BIT_ORDER_MSB_FIRST;
nrf_drv_spi_init(&spi1, &spi_config, spi_event_handler, NULL);
NRF_LOG_INFO("SPI Initialized");
}
void w25n01gv_read_mfg_id(void)
{
cmd[0] = 0x9F;
cmd[1]=0x00; //dummy bit
spi_xfer_done = false;
nrf_drv_spi_transfer(&spi1, cmd, 5, mfg_id, 5);
while(spi_xfer_done){
}
NRF_LOG_INFO("Manufacturer ID: 0x%02X, 0x%02X, 0x%02X, 0x%02X, 0x%02X\n", mfg_id[0], mfg_id[1], mfg_id[2], mfg_id[3], mfg_id[4]);
NRF_LOG_FLUSH();
}
int main(void)
{
log_init();
w25n01gv_init();
w25n01gv_read_mfg_id();
while(1) {}
}
