?lang_form? ?lang_select? ?lang_submit? ?lang_endform?
{HEADER END}
{FILE START}

library

?curdirlinks? - Rev 6

?prevdifflink? - Blame - ?getfile?

/*! \file spiflash.h \brief SPI Flash Memory Driver (M25Pxx/AT25Fxxx/etc). */
//*****************************************************************************
//
// File Name    : 'spiflash.h'
// Title                : SPI Flash Memory Driver (M25Pxx/AT25Fxxx/etc)
// Author               : Pascal Stang - Copyright (C) 2006
// Created              : 2006-04-15
// Revised              : 2006-07-02
// Version              : 0.1
// Target MCU   : AVR processors
// Editor Tabs  : 4
//
// NOTE: This code is currently below version 1.0, and therefore is considered
// to be lacking in some functionality or documentation, or may not be fully
// tested.  Nonetheless, you can expect most functions to work.
//
//*****************************************************************************

#ifndef AVRLIB_SPIFLASH_H
#define AVRLIB_SPIFLASH_H

#include "global.h"

// Compatible with:
// - ST M25Pxx devices
// - Atmel AT25Fxxx devices
// - many more

// device commands
#define SPIFLASH_CMD_WREN               0x06    // write enable
#define SPIFLASH_CMD_WRDI               0x04    // write disable
#define SPIFLASH_CMD_RDID               0x9F    // read ID register
#define SPIFLASH_CMD_RDSR               0x05    // read status register
#define SPIFLASH_CMD_WRSR               0x01    // write status register
#define SPIFLASH_CMD_READ               0x03    // read
#define SPIFLASH_CMD_FASTREAD   0x0B    // high-speed read
#define SPIFLASH_CMD_PAGEPROG   0x02    // page program
#define SPIFLASH_CMD_SECTERASE  0xD8    // sector erase
#define SPIFLASH_CMD_CHIPERASE  0xC7    // chip erase

// status register bits
#define SPIFLASH_STATUS_BUSY    0x01    // busy, write in progress
#define SPIFLASH_STATUS_WEN             0x02    // write enable
#define SPIFLASH_STATUS_BP0             0x04    // block protect 0
#define SPIFLASH_STATUS_BP1             0x08    // block protect 1
#define SPIFLASH_STATUS_BP2             0x10    // block protect 2
#define SPIFLASH_STATUS_WPEN    0x80    // write protect enabled

// device constants
#define SPIFLASH_PAGESIZE               256             // 256 bytes/page

// functions

// Initializes spiflash for operation
void spiflashInit(void);

// Get spiflash ID
// NOTE: supported only on some flash memories
unsigned short spiflashGetID(void);

// Erase entire flash chip
void spiflashChipErase(void);

// Read flash memory
// - addr may be any value
// - nbytes may be any value
void spiflashRead(unsigned long addr, unsigned long nbytes, unsigned char *data);

// Write flash memory (automatic handling of page writes)
// - memory must be previously erased
// - addr MUST start at a page break
//      OR
// - nbytes must be small enough such that page boundary is not crossed
void spiflashWrite(unsigned long addr, unsigned long nbytes, unsigned char *data);

#endif
{FILE END}
{FOOTER START}

Powered by WebSVN v2.8.3