An electronic apparatus comprising: flash memory; and a flash controller coupled to the flash memory, configured to manage data access to the flash memory, and comprising: a timer, configured to generate clock interrupts; memory, configured to retain for a predetermined period of time a list of entries of data programmed into the flash memory; and a microcontroller, coupled to the timer and the memory, and configured to write, upon each clock interrupt, an entry of data being programmed into the flash memory to update the list of entries, read from the memory the list of entries prior to reading data from the flash memory, and when the data matches an entry in the list of entries, transmit to the flash memory a recently programmed read command indicating that the data being read is recently programmed data; wherein the recently programmed read command is transmitted before a read command, and the read command is used to instruct the flash memory to fetch data therein; characterized in that the flash memory is configured to store a recently programmed read level and a default read level, read data using the recently programmed read level when receiving the recently programmed read command and the read command, and read data using the default read level when receiving the read command and not the recently programmed read command. flash memory; and a flash controller coupled to the flash memory, configured to manage data access to the flash memory, and comprising: a timer, configured to generate clock interrupts; memory, configured to retain for a predetermined period of time a list of entries of data programmed into the flash memory; and a microcontroller, coupled to the timer and the memory, and configured to write, upon each clock interrupt, an entry of data being programmed into the flash memory to update the list of entries, read from the memory the list of entries prior to reading data from the flash memory, and when the data matches an entry in the list of entries, transmit to the flash memory a recently programmed read command indicating that the data being read is recently programmed data; wherein the recently programmed read command is transmitted before a read command, and the read command is used to instruct the flash memory to fetch data therein; characterized in that the flash memory is configured to store a recently programmed read level and a default read level, read data using the recently programmed read level when receiving the recently programmed read command and the read command, and read data using the default read level when receiving the read command and not the recently programmed read command. a timer, configured to generate clock interrupts; memory, configured to retain for a predetermined period of time a list of entries of data programmed into the flash memory; and a microcontroller, coupled to the timer and the memory, and configured to write, upon each clock interrupt, an entry of data being programmed into the flash memory to update the list of entries, read from the memory the list of entries prior to reading data from the flash memory, and when the data matches an entry in the list of entries, transmit to the flash memory a recently programmed read command indicating that the data being read is recently programmed data; wherein the recently programmed read command is transmitted before a read command, and the read command is used to instruct the flash memory to fetch data therein; characterized in that the flash memory is configured to store a recently programmed read level and a default read level, read data using the recently programmed read level when receiving the recently programmed read command and the read command, and read data using the default read level when receiving the read command and not the recently programmed read command.