Nut/OS  4.10.3
API Reference
spi_at45d.c File Reference

Routines for Atmel AT45 serial DataFlash memory chips. More...

#include <cfg/os.h>
#include <cfg/memory.h>
#include <dev/blockdev.h>
#include <sys/nutdebug.h>
#include <sys/timer.h>
#include <string.h>
#include <dev/at45d.h>
#include <dev/spi_at45d.h>
Include dependency graph for spi_at45d.c:

Go to the source code of this file.

Defines

#define AT45_WRITE_POLLS   1000

Functions

int SpiAt45dCommand (NUTDEVICE *dev, uint8_t op, uint32_t parm, int oplen, CONST void *txbuf, void *rxbuf, int xlen)
 Send DataFlash command.
uint8_t SpiAt45dStatus (NUTDEVICE *dev)
 Query the status of the DataFlash.
int SpiAt45dWaitReady (NUTDEVICE *dev, uint32_t tmo, int poll)
 Wait until DataFlash memory cycle finished.
int SpiAt45dPageErase (NUTDEVICE *dev, uint32_t pgn)
 Erase specified DataFlash page.
int SpiAt45dChipErase (NUTDEVICE *dev)
 Erase all DataFlash pages.
int SpiAt45dInit (NUTDEVICE *dev)
 Initialize the DataFlash device.
int SpiAt45dPageRead (NUTDEVICE *dev, uint32_t pgn, void *data, int len)
 Read data from DataFlash memory.
int SpiAt45dPageWrite (NUTDEVICE *dev, uint32_t pgn, CONST void *data, int len)
 Write data to DataFlash memory.
int SpiAt45dPageWrite_P (NUTDEVICE *dev, uint32_t pgn, PGM_P data, int len)
uint32_t SpiAt45dPages (NUTDEVICE *dev)
 Return the number of pages.
int SpiAt45dPageSize (NUTDEVICE *dev)
 Return the page size.
int SpiAt45dIOCtl (NUTDEVICE *dev, int req, void *conf)
 Perform block I/O device control functions.

Detailed Description

Routines for Atmel AT45 serial DataFlash memory chips.

 * $Id: spi_at45d.c 3653 2011-11-14 15:20:31Z haraldkipp $
 * 

Definition in file spi_at45d.c.


Define Documentation

#define AT45_WRITE_POLLS   1000

Definition at line 59 of file spi_at45d.c.

Referenced by SpiAt45dPageWrite().


Function Documentation

int SpiAt45dCommand ( NUTDEVICE dev,
uint8_t  op,
uint32_t  parm,
int  oplen,
CONST void *  txbuf,
void *  rxbuf,
int  xlen 
)

Send DataFlash command.

Parameters:
devSpecifies the DataFlash device.
opCommand operation code.
parmOptional command parameter.
oplenCommand length.
txbufPointer to the transmit data buffer, may be set to NULL.
rxbufPointer to the receive data buffer, may be set to NULL.
xlenNumber of byte to receive and/or transmit.

Definition at line 197 of file spi_at45d.c.

References _NUTDEVICE::dev_icb, and NUTASSERT.

uint8_t SpiAt45dStatus ( NUTDEVICE dev)

Query the status of the DataFlash.

Parameters:
devSpecifies the Flash device.
Returns:
0 on success or -1 in case of an error.

Definition at line 210 of file spi_at45d.c.

References _NUTDEVICE::dev_icb, and NUTASSERT.

int SpiAt45dWaitReady ( NUTDEVICE dev,
uint32_t  tmo,
int  poll 
)

Wait until DataFlash memory cycle finished.

Parameters:
devSpecifies the DataFlash device.
Returns:
0 on success or -1 in case of an error.

Definition at line 223 of file spi_at45d.c.

References _NUTDEVICE::dev_icb, and NUTASSERT.

int SpiAt45dPageErase ( NUTDEVICE dev,
uint32_t  pgn 
)

Erase specified DataFlash page.

Parameters:
devSpecifies the registered DataFlash device.
pgnPage number to erase, starting at 0.
Returns:
0 on success or -1 in case of an error.

Definition at line 237 of file spi_at45d.c.

References _NUTBLOCKIO::blkio_info, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, DFCMD_PAGE_ERASE, and NUTASSERT.

int SpiAt45dChipErase ( NUTDEVICE dev)

Erase all DataFlash pages.

Definition at line 259 of file spi_at45d.c.

int SpiAt45dInit ( NUTDEVICE dev)

Initialize the DataFlash device.

This routine determines the DataFlash type. It is internally called by Nut/OS during device registration.

The driver framework may call this function more than once.

Parameters:
devSpecifies the DataFlash device.
Returns:
0 on success or -1 if no valid DataFlash was found.

Definition at line 276 of file spi_at45d.c.

References at45d_info, at45d_known_types, AT45D_STATUS_DENSITY, AT45D_STATUS_PAGE_SIZE, _NUTBLOCKIO::blkio_blk_cnt, _NUTBLOCKIO::blkio_blk_siz, _NUTBLOCKIO::blkio_info, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, and NUTASSERT.

int SpiAt45dPageRead ( NUTDEVICE dev,
uint32_t  pgn,
void *  data,
int  len 
)

Read data from DataFlash memory.

Parameters:
devSpecifies the registered DataFlash device.
pgnPage number to read, starting at 0.
dataPoints to a buffer that receives the data.
lenNumber of bytes to read.
Returns:
The number of bytes actually read. A return value of -1 indicates an error.

Definition at line 320 of file spi_at45d.c.

References _NUTBLOCKIO::blkio_info, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, DFCMD_CONT_READ, and NUTASSERT.

Referenced by SpiAt45dConfigRead(), and SpiAt45dConfigWrite().

int SpiAt45dPageWrite ( NUTDEVICE dev,
uint32_t  pgn,
CONST void *  data,
int  len 
)

Write data to DataFlash memory.

Each page will be automatically erased before writing the data. If the last page is not completely filled with new data, the contents of remaining bytes at the end of the page is undetermined.

Parameters:
devSpecifies the registered DataFlash device.
pgnThe page number.
dataPoints to the buffer that contains the bytes to be written.
lenNumber of bytes available in the buffer. This may be less than the page size, in which case the remaining bytes of the page will be set to 0xff.
Returns:
The number of bytes actually written. A return value of -1 indicates an error.

Definition at line 360 of file spi_at45d.c.

References AT45_WRITE_POLLS, _NUTBLOCKIO::blkio_info, _NUTDEVICE::dev_dcb, _NUTDEVICE::dev_icb, DFCMD_BUF1_FLASH, DFCMD_BUF1_WRITE, and NUTASSERT.

Referenced by SpiAt45dConfigWrite().

int SpiAt45dPageWrite_P ( NUTDEVICE dev,
uint32_t  pgn,
PGM_P  data,
int  len 
)

Definition at line 414 of file spi_at45d.c.

uint32_t SpiAt45dPages ( NUTDEVICE dev)

Return the number of pages.

Parameters:
devSpecifies the registered DataFlash device.
Returns:
The total number of pages available in this device.

Definition at line 427 of file spi_at45d.c.

References _NUTBLOCKIO::blkio_info, _NUTDEVICE::dev_dcb, and NUTASSERT.

int SpiAt45dPageSize ( NUTDEVICE dev)

Return the page size.

Parameters:
devSpecifies the registered DataFlash device.
Returns:
The number of bytes per page.

Definition at line 446 of file spi_at45d.c.

References _NUTBLOCKIO::blkio_info, _NUTDEVICE::dev_dcb, and NUTASSERT.

Referenced by SpiAt45dConfigSize(), and SpiAt45dConfigWrite().

int SpiAt45dIOCtl ( NUTDEVICE dev,
int  req,
void *  conf 
)

Perform block I/O device control functions.

This function is called by the ioctl() function of the C runtime library. Applications should not directly call this function.

Parameters:
devIdentifies the device that receives the control command.
reqRequested control command. May be set to one of the following constants:
confPoints to a buffer that contains any data required for the given control function or receives data from that function.
Returns:
0 on success, -1 otherwise.

Definition at line 475 of file spi_at45d.c.

References NUTASSERT, NUTBLKDEV_MEDIAAVAIL, and NUTBLKDEV_MEDIACHANGE.