/*
LUFA Library
- Copyright (C) Dean Camera, 2012.
+ Copyright (C) Dean Camera, 2021.
dean [at] fourwalledcubicle [dot] com
www.lufa-lib.org
*/
/*
- Copyright 2012 Dean Camera (dean [at] fourwalledcubicle [dot] com)
+ Copyright 2021 Dean Camera (dean [at] fourwalledcubicle [dot] com)
Permission to use, copy, modify, distribute, and sell this
software and its documentation for any purpose is hereby granted
advertising or publicity pertaining to distribution of the
software without specific, written prior permission.
- The author disclaim all warranties with regard to this
+ The author disclaims all warranties with regard to this
software, including all implied warranties of merchantability
and fitness. In no event shall the author be liable for any
special, indirect or consequential damages or any damages
* \defgroup Group_Dataflash Dataflash Driver - LUFA/Drivers/Board/Dataflash.h
* \brief Atmel Dataflash storage IC board hardware driver.
*
- * \section Sec_Dependencies Module Source Dependencies
+ * \section Sec_Dataflash_Dependencies Module Source Dependencies
* The following files must be built with any user project that uses this module:
* - None
*
- * \section Sec_ModDescription Module Description
+ * \section Sec_Dataflash_ModDescription Module Description
* Dataflash driver. This module provides an easy to use interface for the Dataflash ICs located on many boards,
* for the storage of large amounts of data into the Dataflash's non-volatile memory.
*
* If the \c BOARD value is set to \c BOARD_USER, this will include the \c /Board/Dataflash.h file in the user project
- * directory. Otherwise, it will include the appropriate built in board driver header file.
+ * directory. Otherwise, it will include the appropriate built-in board driver header file.
*
* For possible \c BOARD makefile values, see \ref Group_BoardTypes.
*
- * \section Sec_ExampleUsage Example Usage
+ * \section Sec_Dataflash_ExampleUsage Example Usage
* The following snippet is an example of how this module may be used within a typical
* application.
*
* \code
- * // Initialize the SPI and board Dataflash drivers before first use
- * SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING |
- * SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);
+ * // Initialize the board Dataflash driver before first use
* Dataflash_Init();
*
* uint8_t WriteBuffer[DATAFLASH_PAGE_SIZE];
/* Includes: */
#include "../../Common/Common.h"
- #include "../Peripheral/SPI.h"
/* Enable C linkage for C++ Compilers: */
#if defined(__cplusplus)
/* 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[in] index Index of the dataflash chip mask to retrieve
+ * \attention This macro will only work correctly on chip index numbers that are compile-time
+ * constants defined by the preprocessor.
+ *
+ * \param[in] index Index of the dataflash chip mask to retrieve.
*
* \return Mask for the given Dataflash chip's /CS pin
*/
- #define DATAFLASH_CHIP_MASK(index) __GET_DATAFLASH_MASK(index)
+ #define DATAFLASH_CHIP_MASK(index) CONCAT_EXPANDED(DATAFLASH_CHIP, index)
/* Inline Functions: */
/** Initializes the dataflash driver so that commands and data may be sent to an attached dataflash IC.
*
- * \note The microcontroller's SPI driver must be initialized before any of the dataflash commands are used.
+ * \note The microcontroller's physical interface driver connected to the Dataflash IC must be initialized before
+ * any of the dataflash commands are used. This is usually a SPI hardware port, but on some devices/boards may
+ * be a USART operating in SPI Master mode.
*/
static inline void Dataflash_Init(void);
/** Selects the given dataflash chip.
*
- * \param[in] ChipMask Mask of the Dataflash IC to select, in the form of \c DATAFLASH_CHIPn mask (where n is
+ * \param[in] ChipMask Mask of the Dataflash IC to select, in the form of a \c DATAFLASH_CHIPn mask (where n is
* the chip number).
*/
static inline void Dataflash_SelectChip(const uint8_t ChipMask) ATTR_ALWAYS_INLINE;
/* Includes: */
#if (BOARD == BOARD_NONE)
- #error The Board Dataflash driver cannot be used if the makefile BOARD option is not set.
+ #define DATAFLASH_TOTALCHIPS 0
+ #define DATAFLASH_NO_CHIP 0
+ #define DATAFLASH_CHIP1 0
+ #define DATAFLASH_PAGE_SIZE 0
+ #define DATAFLASH_PAGES 0
+ static inline void Dataflash_Init(void) {};
+ static inline uint8_t Dataflash_TransferByte(const uint8_t Byte) { return 0; };
+ static inline void Dataflash_SendByte(const uint8_t Byte) {};
+ static inline uint8_t Dataflash_ReceiveByte(void) { return 0; };
+ static inline uint8_t Dataflash_GetSelectedChip(void) { return 0; };
+ static inline void Dataflash_SelectChip(const uint8_t ChipMask) {};
+ static inline void Dataflash_DeselectChip(void) {};
+ static inline void Dataflash_SelectChipFromPage(const uint16_t PageAddress) {};
+ static inline void Dataflash_ToggleSelectedChipCS(void) {};
+ static inline void Dataflash_WaitWhileBusy(void) {};
+ static inline void Dataflash_SendAddressBytes(uint16_t PageAddress,
+ const uint16_t BufferByte) {};
#elif (BOARD == BOARD_USBKEY)
#include "AVR8/USBKEY/Dataflash.h"
#elif (BOARD == BOARD_STK525)