Read ID from NAND flash device using SPI

Master: Arduino UNO
Slave: NAND flash device
Interface: SPI

Hello, I am trying to read ID from a NAND flash device.
According to the datasheet, a manufacturer ID is 0x2C, and the device ID is 0x15.

Question 1:
When I set DONT_CARE to 0xFF to read the ID, the device returns; 0x2C and 0x14.
I have no idea what is going on the device ID, which is 1 bit off from what it supposed to be.

Question 2:
However, when I set DONT_CARE to 0x00 to read the ID, I get false outputs which are 0x10 and 0x00 respectively. From my understanding, DONT_CARE byte should not be affecting the output.

I want to hear you opinions. Thanks !

#include <SPI.h>

#define CLOCK_SPEED 8000000
#define CS 10 // Chip select

#define COM_READ_ID 0x9F
#define DUMMY_BYTE 0x00
#define DONT_CARE 0xFF

// #define DONT_CARE 0x00 // ← whenever I send this, the device returns false ID

void setup() {

SPI.beginTransaction(SPISettings(CLOCK_SPEED, MSBFIRST, SPI_MODE0));
SPCR |= _BV(MSTR); // Master Setting
digitalWrite(CS, HIGH);


void loop() {


// Do nothing.

void read_id(){

uint16_t manufacture_ID;
uint16_t device_ID;

digitalWrite(CS, LOW);
manufacture_ID = SPI.transfer(DONT_CARE);
device_ID = SPI.transfer(DONT_CARE);

digitalWrite(CS, HIGH);
Serial.print("Manufacture ID: ");
Serial.println(manufacture_ID, HEX);
Serial.print("Device ID: ");
Serial.println(device_ID, HEX);