29 flash->base.
pageSize = W25Q128_PAGE_SIZE;
30 flash->base.
pageCount = W25Q128_PAGE_COUNT;
51void _W25Q128_writeEnable(
W25Q128_t *flash) {
56 spi->
transmit(spi, W25Q128_WRITE_ENABLE);
69void _W25Q128_readStatus1(
W25Q128_t *flash, uint8_t *status) {
74 *status = spi->
transmit(spi, W25Q128_READ_STATUS_REGISTER_1);
88void _W25Q128_readStatus2(
W25Q128_t *flash, uint8_t *status) {
93 *status = spi->
transmit(spi, W25Q128_READ_STATUS_REGISTER_2);
107void _W25Q128_readStatus3(
W25Q128_t *flash, uint8_t *status) {
112 *status = spi->
transmit(spi, W25Q128_READ_STATUS_REGISTER_3);
131 _W25Q128_writeEnable(driver);
139 spi->
transmit(spi, W25Q128_ERASE_CHIP);
144 _W25Q128_readStatus1(driver, &status);
145 }
while (status & 0x01);
160 _W25Q128_writeEnable(driver);
169 spi->
transmit(spi, W25Q128_PAGE_PROGRAM);
170 spi->
transmit(spi, (address & 0xFF0000) >> 16);
171 spi->
transmit(spi, (address & 0xFF00) >> 8);
172 spi->
transmit(spi, (address & 0xFF));
175 for (
int i = 0; i < 256; i++) {
183 _W25Q128_readStatus1(driver, &status);
184 }
while (status & 0x1);
205 spi->
transmit(spi, W25Q128_READ_DATA);
206 spi->
transmit(spi, (address & 0xFF0000) >> 16);
207 spi->
transmit(spi, (address & 0xFF00) >> 8);
208 spi->
transmit(spi, (address & 0xFF));
210 for (
int i = 0; i < 256; i++) {
int pageSize
Number of bytes per page.
long pageCount
Total number of pages.
void(* readPage)(struct Flash *, uint32_t, volatile uint8_t *)
Read page method.
void(* erase)(struct Flash *)
Chip erase method.
void(* writePage)(struct Flash *, uint32_t, uint8_t *)
Write page method.
GPIOpin_t cs
Chip select GPIO.
SPI_t * spi
Parent SPI interface.
void(* set)(struct GPIOpin *)
void(* reset)(struct GPIOpin *)
Struct definition for a GPIO pin.
uint16_t(* transmit)(struct SPI *, uint16_t)
SPI transmit method.
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...
void W25Q128_writePage(Flash_t *, uint32_t, uint8_t *)
Write page to flash.
void W25Q128_readPage(Flash_t *, uint32_t, volatile uint8_t *)
Read from flash.
W25Q128_t W25Q128_init(W25Q128_t *flash, SPI_t *spi, GPIOpin_t cs)
Initialise flash struct.
void W25Q128_erase(Flash_t *)
Erase flash chip.