HPM SDK
HPMicro Software Development Kit
e2p_device_spi.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2025 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef _E2P_DEVICE_SPI_H
9 #define _E2P_DEVICE_SPI_H
10 
11 #include "board.h"
12 #include "hpm_spi_drv.h"
13 #include "eeprom_device.h"
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
22 #define E2P_SPI_INSTRUCTION_WREN 0x06
23 #define E2P_SPI_INSTRUCTION_RDSR 0x05
24 #define E2P_SPI_INSTRUCTION_WRDI 0x04
25 #define E2P_SPI_INSTRUCTION_READ 0x03
26 #define E2P_SPI_INSTRUCTION_WRITE 0x02
27 #define E2P_SPI_INSTRUCTION_WRSR 0x01
28 
32 #define E2P_SPI_INSTRUCTION_STATUS_WIP_MASK 0x01
33 #define E2P_SPI_INSTRUCTION_STATUS_WEL_MASK 0x02
34 
38 typedef struct {
39  SPI_Type *base; /* SPI base address */
40  uint32_t cs_pin; /* Chip select pin */
41  uint32_t (*clock_init)(SPI_Type *ptr); /* Function to initialize SPI clock */
42  void (*pin_init)(void); /* Function to initialize SPI pins */
43  void (*cs_control)(uint32_t pin, uint8_t state); /* Function to control chip select pin */
45 
49 typedef struct {
50  uint32_t addr_bytes; /* Number of address bytes */
51  uint32_t page_size; /* Page size in bytes */
52  uint32_t timeout; /* Write cycle timeout in milliseconds */
53  uint32_t max_freq; /* Maximum supported frequency */
54  uint8_t borrow_bits; /* Number of borrow bits */
56 
64 hpm_stat_t e2p_device_spi_register_param(hpm_eeprom_device_t *device, void *host_info, uint32_t dev_id);
65 
72 
81 
88 
101 hpm_stat_t e2p_device_spi_read(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data);
102 
116 hpm_stat_t e2p_device_spi_write(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data);
117 
118 #ifdef __cplusplus
119 }
120 #endif
121 
122 #endif
e2p_device_spi_attribute_t * e2p_device_spi_get_attribute(hpm_eeprom_device_t *device)
Get eeprom spi device attribute.
Definition: e2p_device_spi.c:59
hpm_stat_t e2p_device_spi_register_param(hpm_eeprom_device_t *device, void *host_info, uint32_t dev_id)
Register eeprom spi device parameter to device structure.
Definition: e2p_device_spi.c:71
hpm_stat_t e2p_device_spi_deinit(hpm_eeprom_device_t *device)
De-initialize eeprom spi device.
Definition: e2p_device_spi.c:130
hpm_stat_t e2p_device_spi_read(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data)
Read data from eeprom spi device.
Definition: e2p_device_spi.c:195
hpm_stat_t e2p_device_spi_init(hpm_eeprom_device_t *device)
Initialize eeprom spi device, hw init(clock and pin) and spi master init.
Definition: e2p_device_spi.c:91
hpm_stat_t e2p_device_spi_write(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data)
Write data to eeprom spi device.
Definition: e2p_device_spi.c:456
uint32_t hpm_stat_t
Definition: hpm_common.h:135
Definition: hpm_spi_regs.h:12
eeprom spi device attribute structure
Definition: e2p_device_spi.h:49
uint32_t max_freq
Definition: e2p_device_spi.h:53
uint32_t timeout
Definition: e2p_device_spi.h:52
uint8_t borrow_bits
Definition: e2p_device_spi.h:54
uint32_t addr_bytes
Definition: e2p_device_spi.h:50
uint32_t page_size
Definition: e2p_device_spi.h:51
eeprom spi device board configuration structure
Definition: e2p_device_spi.h:38
SPI_Type * base
Definition: e2p_device_spi.h:39
uint32_t cs_pin
Definition: e2p_device_spi.h:40
eeprom device structure
Definition: eeprom_device.h:156