X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/e611b250c170c9e830f8212ca5d49e505e3f4af1..d770d98bca4af54b10316d03979bfcdb71ce623d:/LUFA/Drivers/Board/Dataflash.h?ds=inline diff --git a/LUFA/Drivers/Board/Dataflash.h b/LUFA/Drivers/Board/Dataflash.h index 2b682d7c9..aa0c0892f 100644 --- a/LUFA/Drivers/Board/Dataflash.h +++ b/LUFA/Drivers/Board/Dataflash.h @@ -52,21 +52,7 @@ /* Includes: */ #include "../AT90USBXXX/SPI.h" #include "../../Common/Common.h" - - #if !defined(BOARD) - #error BOARD must be set in makefile to a value specified in BoardTypes.h. - #elif (BOARD == BOARD_USBKEY) - #include "USBKEY/Dataflash.h" - #elif (BOARD == BOARD_STK525) - #include "STK525/Dataflash.h" - #elif (BOARD == BOARD_STK526) - #include "STK526/Dataflash.h" - #elif (BOARD == BOARD_USER) - #include "Board/Dataflash.h" - #else - #error The selected board does not contain a dataflash IC. - #endif - + /* Enable C linkage for C++ Compilers: */ #if defined(__cplusplus) extern "C" { @@ -89,19 +75,6 @@ #define Dataflash_DeselectChip() Dataflash_SelectChip(DATAFLASH_NO_CHIP) /* Inline Functions: */ - /** Initializes the dataflash driver (including the SPI driver) so that commands and data may be - * sent to an attached dataflash IC. - * - * \param PrescalerMask SPI prescaler mask, see SPI.h documentation - */ - static inline void Dataflash_Init(const uint8_t PrescalerMask) - { - DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; - DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; - - SPI_Init(PrescalerMask, true); - } - /** Sends a byte to the currently selected dataflash IC, and returns a byte from the dataflash. * * \param Byte of data to send to the dataflash @@ -133,21 +106,45 @@ { return SPI_ReceiveByte(); } + + /* Includes: */ + #if !defined(BOARD) + #error BOARD must be set in makefile to a value specified in BoardTypes.h. + #elif (BOARD == BOARD_USBKEY) + #include "USBKEY/Dataflash.h" + #elif (BOARD == BOARD_STK525) + #include "STK525/Dataflash.h" + #elif (BOARD == BOARD_STK526) + #include "STK526/Dataflash.h" + #elif (BOARD == BOARD_USER) + #include "Board/Dataflash.h" + #else + #error The selected board does not contain a dataflash IC. + #endif + + /* Inline Functions: */ + /** Initializes the dataflash driver (including the SPI driver) so that commands and data may be + * sent to an attached dataflash IC. + * + * \param PrescalerMask SPI prescaler mask, see SPI.h documentation + */ + static inline void Dataflash_Init(const uint8_t PrescalerMask) + { + DATAFLASH_CHIPCS_DDR |= DATAFLASH_CHIPCS_MASK; + DATAFLASH_CHIPCS_PORT |= DATAFLASH_CHIPCS_MASK; + + SPI_Init(PrescalerMask, true); + } /** Toggles the select line of the currently selected dataflash IC, so that it is ready to receive * a new command. */ static inline void Dataflash_ToggleSelectedChipCS(void) { - #if (DATAFLASH_TOTALCHIPS == 2) - uint8_t SelectedChipMask = Dataflash_GetSelectedChip(); + uint8_t SelectedChipMask = Dataflash_GetSelectedChip(); - Dataflash_DeselectChip(); - Dataflash_SelectChip(SelectedChipMask); - #else - Dataflash_DeselectChip(); - Dataflash_SelectChip(DATAFLASH_CHIP1); - #endif + Dataflash_DeselectChip(); + Dataflash_SelectChip(SelectedChipMask); } /** Spinloops while the currently selected dataflash is busy executing a command, such as a main @@ -162,28 +159,14 @@ /** 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. + * 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 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; - - #if (DATAFLASH_TOTALCHIPS == 2) - if (PageAddress & 0x01) - Dataflash_SelectChip(DATAFLASH_CHIP2); - else - Dataflash_SelectChip(DATAFLASH_CHIP1); - #else - Dataflash_SelectChip(DATAFLASH_CHIP1); - #endif - } + static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress); /** 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. @@ -191,16 +174,7 @@ * \param PageAddress Page address within the selected dataflash IC * \param BufferByte Address within the dataflash's buffer */ - static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte) - { - #if (DATAFLASH_TOTALCHIPS == 2) - PageAddress >>= 1; - #endif - - Dataflash_SendByte(PageAddress >> 5); - Dataflash_SendByte((PageAddress << 3) | (BufferByte >> 8)); - Dataflash_SendByte(BufferByte); - } + static inline void Dataflash_SendAddressBytes(uint16_t PageAddress, const uint16_t BufferByte); /* Disable C linkage for C++ Compilers: */ #if defined(__cplusplus)