|
|
|
@ -70,44 +70,44 @@
|
|
|
|
|
* SPI_Init(SPI_SPEED_FCPU_DIV_2 | SPI_ORDER_MSB_FIRST | SPI_SCK_LEAD_FALLING |
|
|
|
|
|
* SPI_SAMPLE_TRAILING | SPI_MODE_MASTER);
|
|
|
|
|
* Dataflash_Init();
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* uint8_t WriteBuffer[DATAFLASH_PAGE_SIZE];
|
|
|
|
|
* uint8_t ReadBuffer[DATAFLASH_PAGE_SIZE];
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Fill page write buffer with a repeating pattern
|
|
|
|
|
* for (uint16_t i = 0; i < DATAFLASH_PAGE_SIZE; i++)
|
|
|
|
|
* WriteBuffer[i] = (i & 0xFF);
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Must select the chip of interest first before operating on it
|
|
|
|
|
* Dataflash_SelectChip(DATAFLASH_CHIP1);
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Write to the Dataflash's first internal memory buffer
|
|
|
|
|
* printf("Writing data to first dataflash buffer:\r\n");
|
|
|
|
|
* Dataflash_SendByte(DF_CMD_BUFF1WRITE);
|
|
|
|
|
* Dataflash_SendAddressBytes(0, 0);
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* for (uint16_t i = 0; i < DATAFLASH_PAGE_SIZE; i++)
|
|
|
|
|
* Dataflash_SendByte(WriteBuffer[i]);
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Commit the Dataflash's first memory buffer to the non-volatile FLASH memory
|
|
|
|
|
* printf("Committing page to non-volatile memory page index 5:\r\n");
|
|
|
|
|
* Dataflash_SendByte(DF_CMD_BUFF1TOMAINMEMWITHERASE);
|
|
|
|
|
* Dataflash_SendAddressBytes(5, 0);
|
|
|
|
|
* Dataflash_WaitWhileBusy();
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Read the page from non-volatile FLASH memory into the Dataflash's second memory buffer
|
|
|
|
|
* printf("Reading data into second dataflash buffer:\r\n");
|
|
|
|
|
* Dataflash_SendByte(DF_CMD_MAINMEMTOBUFF2);
|
|
|
|
|
* Dataflash_SendAddressBytes(5, 0);
|
|
|
|
|
* Dataflash_WaitWhileBusy();
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Read the Dataflash's second internal memory buffer
|
|
|
|
|
* Dataflash_SendByte(DF_CMD_BUFF2READ);
|
|
|
|
|
* Dataflash_SendAddressBytes(0, 0);
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* for (uint16_t i = 0; i < DATAFLASH_PAGE_SIZE; i++)
|
|
|
|
|
* ReadBuffer[i] = Dataflash_ReceiveByte();
|
|
|
|
|
*
|
|
|
|
|
*
|
|
|
|
|
* // Deselect the chip after use
|
|
|
|
|
* Dataflash_DeselectChip();
|
|
|
|
|
* \endcode
|
|
|
|
@ -131,18 +131,16 @@
|
|
|
|
|
|
|
|
|
|
/* 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.
|
|
|
|
|