Getting started with Atmel SAM4S-EK2

NAND

First initialize the NAND. The parameters are a structure, model number, address for transferring command, address for transferring address and address for transferring data.

nand_flash_raw_initialize(&nf_raw, 0, cmd_address, addr_address, data_address)

The information related to the NAND memory is stored in the structure. We can get the required parameters from this structure.

mem_size = nand_flash_model_get_device_size_in_bytes(&nf_raw.model);
block_size = nand_flash_model_get_block_size_in_bytes(&nf_raw.model);
num_block = nand_flash_model_get_device_size_in_blocks(&nf_raw.model);
page_size = nand_flash_model_get_page_data_size(&nf_raw.model);
pages_per_block = nand_flash_model_get_block_size_in_pages(&nf_raw.model);

The function used to erase ith block is

nand_flash_raw_erase_block(&nf_raw, i)

To write data to a block, use

nand_flash_raw_write_page(&nf_raw, block, page, write_buffer, 0)

and to read

nand_flash_raw_read_page(&nf_raw, block, page, read_buffer, 0);

To check whether two data are equal, use

memcmp(read_buffer, write_buffer, sizeof(write_buffer));

Click here for project code