From 86e6ed7f31d29fa3d2aea1f6c40aa4647fce2690 Mon Sep 17 00:00:00 2001 From: Dean Camera Date: Mon, 29 Jun 2009 09:30:06 +0000 Subject: Dataflash_WaitWhileBusy() now always ensures that the dataflash is ready for the next command immediately after returning, no need to call Dataflash_ToggleSelectedChipCS() afterwards. Added new DATAFLASH_CHIP_MASK() macro to the Dataflash driver, which returns the Dataflash select mask for the given chip index. Updated MassStorage device block write routines to use ping-pong Dataflash buffering to increase throughput by around 30%. --- LUFA/Drivers/Board/Dataflash.h | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) (limited to 'LUFA/Drivers/Board') diff --git a/LUFA/Drivers/Board/Dataflash.h b/LUFA/Drivers/Board/Dataflash.h index 57ce92d4c..e58828c5b 100644 --- a/LUFA/Drivers/Board/Dataflash.h +++ b/LUFA/Drivers/Board/Dataflash.h @@ -75,6 +75,18 @@ #endif /* Public Interface - May be used in end-application: */ + /* Macros: */ + #if !defined(__DOXYGEN__) + #define __GET_DATAFLASH_MASK2(x, y) x ## y + #define __GET_DATAFLASH_MASK(x) __GET_DATAFLASH_MASK2(DATAFLASH_CHIP,x) + #endif + + /* Retrieves the Dataflash chip select mask for the given Dataflash chip index. + * + * \param index Index of the dataflash chip mask to retrieve + */ + #define DATAFLASH_CHIP_MASK(index) __GET_DATAFLASH_MASK(index) + /* Pseudo-Function Macros: */ #if defined(__DOXYGEN__) /** Determines the currently selected dataflash chip. @@ -149,7 +161,7 @@ #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. @@ -183,6 +195,7 @@ Dataflash_ToggleSelectedChipCS(); Dataflash_SendByte(DF_CMD_GETSTATUS); while (!(Dataflash_ReceiveByte() & DF_STATUS_READY)); + Dataflash_ToggleSelectedChipCS(); } /** Selects a dataflash IC from the given page number, which should range from 0 to -- cgit v1.2.3