Small package SPI Flash IC as logger?
Can we use spi flash in this project? Is there a handicap to use?


No reason why it wouldn't work. Make sure your micro has a SPI port, that you map the pins and configure it correctly...

Regarding power, make sure to compare idle current values from various datasheets.

DO NOT cut the power to the Flash while it is writing, or when you think it's finished but has not really finished. This will corrupt data. Use the deep-power-down command instead.

There is probably an optimum data chunk size to write regarding power. I mean, the flash will take some time to wake up so it probably doesn't make sense to wake it up to write one byte and then go back to sleep. You'll have to buffer data in RAM and then write it when enough is available. Why not measure total energy use per written byte with several chunk sizes?

Also, SPI flashes tend to be slow at writing, so make sure the throughput is adequate.


  NAND flash IC is used in all the flash memory I have seen, why cheaper and smaller SPI flash is not used


The big chips have address pins, which makes random reads quite fast. On a SPI flash, you have to input each address bit serially, making random reads extremely slow. On burst reads, where you input the address once and read a significant amount of data, SPI flash is okay. They are often used to store firmware which is read once at boot and then transferred into SRAM, in this case random access speed does not matter. But if you want to run code directly from a flash, then it matters, and a big chip with address pins will be much faster. Some micros are able to execute code from quad SPI flash, they use a small SRAM as cache, it can be useful but there is still a speed penalty.

Also consider using a MicroSD card: if you write to it with the usual FAT32 filesystem, then it can be read directly by a computer, and you don't have to program all the code for reading and transferring the data from your datalogger into a PC. Just use a card reader.