Loading...
Searching...
No Matches
w25q128.h
1
6
7// ALLOW FORMATTING
8#ifndef _FLASH_H
9#define _FLASH_H
10
11#include "spi.h"
12#include "gpiopin.h"
13
14#define W25Q128_PAGE_PROGRAM 0x02
15#define W25Q128_READ_DATA 0x03
16#define W25Q128_WRITE_ENABLE 0x06
17#define W25Q128_ERASE_CHIP 0x60
18#define W25Q128_READ_STATUS_REGISTER_1 0x05
19#define W25Q128_READ_STATUS_REGISTER_2 0x35
20#define W25Q128_READ_STATUS_REGISTER_3 0x15
21
22#define W25Q128_PAGE_SIZE 256 // 256 bytes per page
23#define W25Q128_PAGE_COUNT 65536 // 65536 total pages
24
30
31typedef struct W25Q128 {
35 long pageCount;
36 void (*erase)(struct W25Q128 *);
37 void (*readPage)(struct W25Q128 *, uint32_t, volatile uint8_t *);
38 void (*writePage)(struct W25Q128 *, uint32_t, uint8_t *);
39} W25Q128_t;
40
41void configure_SPI4_Flash();
43void W25Q128_readPage(W25Q128_t *, uint32_t, volatile uint8_t *);
44void W25Q128_writePage(W25Q128_t *, uint32_t, uint8_t *);
47void _W25Q128_readStatus1(W25Q128_t *, uint8_t *);
48void _W25Q128_readStatus2(W25Q128_t *, uint8_t *);
49void _W25Q128_readStatus3(W25Q128_t *, uint8_t *);
50
52#endif
Struct definition for a GPIO pin.
Definition gpiopin.h:151
Struct definition for SPI interface. Provides the interface for API consumers to interact with the SP...
Definition spi.h:134
void(* readPage)(struct W25Q128 *, uint32_t, volatile uint8_t *)
Read page method.
Definition w25q128.h:37
int pageSize
Number of bytes per page.
Definition w25q128.h:34
void(* writePage)(struct W25Q128 *, uint32_t, uint8_t *)
Write page method.
Definition w25q128.h:38
GPIOpin_t cs
Chip select GPIO.
Definition w25q128.h:33
void(* erase)(struct W25Q128 *)
Chip erase method.
Definition w25q128.h:36
SPI_t * base
Parent SPI interface.
Definition w25q128.h:32
long pageCount
Total number of pages.
Definition w25q128.h:35
void _W25Q128_writeEnable(W25Q128_t *)
Send Write Enable instruction to the flash device.
Definition w25q128.c:51
void W25Q128_erase(W25Q128_t *)
Erase flash chip.
Definition w25q128.c:129
void W25Q128_readPage(W25Q128_t *, uint32_t, volatile uint8_t *)
Read from flash.
Definition w25q128.c:195
void _W25Q128_readStatus2(W25Q128_t *, uint8_t *)
Read from Status Register 2.
Definition w25q128.c:88
void _W25Q128_readStatus3(W25Q128_t *, uint8_t *)
Read from Status Register 3.
Definition w25q128.c:107
W25Q128_t W25Q128_init(W25Q128_t *, SPI_t *, GPIOpin_t)
Initialise flash struct.
Definition w25q128.c:23
void _W25Q128_readStatus1(W25Q128_t *, uint8_t *)
Read from Status Register 1.
Definition w25q128.c:69
void W25Q128_writePage(W25Q128_t *, uint32_t, uint8_t *)
Write page to flash.
Definition w25q128.c:157