123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136 |
- #pragma once
- #ifndef EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN
- # error "No chip select pin defined -- missing EXTERNAL_FLASH_SPI_SLAVE_SELECT_PIN"
- #endif
- #ifndef EXTERNAL_FLASH_SPI_CLOCK_DIVISOR
- # ifdef __AVR__
- # define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 4
- # else
- # define EXTERNAL_FLASH_SPI_CLOCK_DIVISOR 8
- # endif
- #endif
- #ifndef EXTERNAL_FLASH_SPI_MODE
- # define EXTERNAL_FLASH_SPI_MODE 0
- #endif
- #ifndef EXTERNAL_FLASH_SPI_LSBFIRST
- # define EXTERNAL_FLASH_SPI_LSBFIRST false
- #endif
- #ifndef EXTERNAL_FLASH_ADDRESS_SIZE
- # define EXTERNAL_FLASH_ADDRESS_SIZE 3
- #endif
- #ifndef EXTERNAL_FLASH_PAGE_SIZE
- # define EXTERNAL_FLASH_PAGE_SIZE 256
- #endif
- #ifndef EXTERNAL_FLASH_SECTOR_SIZE
- # define EXTERNAL_FLASH_SECTOR_SIZE (4 * 1024L)
- #endif
- #ifndef EXTERNAL_FLASH_BLOCK_SIZE
- # define EXTERNAL_FLASH_BLOCK_SIZE (64 * 1024L)
- #endif
- #ifndef EXTERNAL_FLASH_SIZE
- # define EXTERNAL_FLASH_SIZE (512 * 1024L)
- #endif
- #define EXTERNAL_FLASH_BLOCK_COUNT ((EXTERNAL_FLASH_SIZE) / (EXTERNAL_FLASH_BLOCK_SIZE))
- #define EXTERNAL_FLASH_SECTOR_COUNT ((EXTERNAL_FLASH_SIZE) / (EXTERNAL_FLASH_SECTOR_SIZE))
- #define EXTERNAL_FLASH_PAGE_COUNT ((EXTERNAL_FLASH_SIZE) / (EXTERNAL_FLASH_PAGE_SIZE))
- typedef int16_t flash_status_t;
- #define FLASH_STATUS_SUCCESS (0)
- #define FLASH_STATUS_ERROR (-1)
- #define FLASH_STATUS_TIMEOUT (-2)
- #define FLASH_STATUS_BAD_ADDRESS (-3)
- #ifdef __cplusplus
- extern "C" {
- #endif
- #include <stdint.h>
- void flash_init(void);
- flash_status_t flash_erase_chip(void);
- flash_status_t flash_erase_block(uint32_t addr);
- flash_status_t flash_erase_sector(uint32_t addr);
- flash_status_t flash_read_block(uint32_t addr, void *buf, size_t len);
- flash_status_t flash_write_block(uint32_t addr, const void *buf, size_t len);
- #ifdef __cplusplus
- }
- #endif
|