X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/6a10d6b465be27db090d760dc0fbe722c94e4344..2a0c28e6e47c8a173f32fc99cd8666a2633c5c12:/LUFA/Drivers/Board/STK525/Dataflash.h diff --git a/LUFA/Drivers/Board/STK525/Dataflash.h b/LUFA/Drivers/Board/STK525/Dataflash.h index 3f30f97b9..33787569a 100644 --- a/LUFA/Drivers/Board/STK525/Dataflash.h +++ b/LUFA/Drivers/Board/STK525/Dataflash.h @@ -30,12 +30,18 @@ /** \file * - * Board specific HWB driver header for the STK525. + * Board specific Dataflash driver header for the STK525. * * \note This file should not be included directly. It is automatically included as needed by the dataflash driver * dispatch header located in LUFA/Drivers/Board/Dataflash.h. */ +/** \ingroup Group_Dataflash + * @defgroup Group_Dataflash_STK525 STK525 + * + * @{ + */ + #ifndef __DATAFLASH_STK525_H__ #define __DATAFLASH_STK525_H__ @@ -72,4 +78,39 @@ /** Total number of pages inside the board's dataflash IC. */ #define DATAFLASH_PAGES 8192 + /* Inline Functions: */ + /** Selects a dataflash IC from the given page number, which should range from 0 to + * ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). For boards containing only one + * dataflash IC, this will select DATAFLASH_CHIP1. If the given page number is outside + * the total number of pages contained in the boards dataflash ICs, all dataflash ICs + * are deselected. + * + * \param[in] PageAddress Address of the page to manipulate, ranging from + * ((DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS) - 1). + */ + static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress) + { + Dataflash_DeselectChip(); + + if (PageAddress >= (DATAFLASH_PAGES * DATAFLASH_TOTALCHIPS)) + return; + + Dataflash_SelectChip(DATAFLASH_CHIP1); + } + + /** Sends a set of page and buffer address bytes to the currently selected dataflash IC, for use with + * dataflash commands which require a complete 24-byte address. + * + * \param[in] PageAddress Page address within the selected dataflash IC + * \param[in] BufferByte Address within the dataflash's buffer + */ + static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte) + { + Dataflash_SendByte(PageAddress >> 5); + Dataflash_SendByte((PageAddress << 3) | (BufferByte >> 8)); + Dataflash_SendByte(BufferByte); + } + #endif + +/** @} */