HPM SDK
HPMicro Software Development Kit
e2p_device_i2c.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_I2C_H
9 #define _E2P_DEVICE_I2C_H
10 
11 #include "board.h"
12 #include "hpm_i2c_drv.h"
13 #include "eeprom_device.h"
14 
15 #ifdef __cplusplus
16 extern "C" {
17 #endif
18 
22 #define HPM_E2P_I2C_DEV_ADDR(family_id, custom_id) ((uint8_t)(family_id) | (uint8_t)(custom_id))
23 #define HPM_E2P_I2C_ADD_CUSTOM_ID_TO_DEV_ID(dev_id, custom_id) ((((uint32_t)(custom_id)) << 16) | ((uint32_t)(dev_id)))
24 
28 typedef struct {
29  I2C_Type *base; /* I2C base address */
30  uint32_t (*clock_init)(I2C_Type *ptr); /* Function to initialize I2C clock */
31  void (*pin_init)(void); /* Function to initialize I2C pins */
33 
37 typedef struct {
38  uint32_t dev_addr; /* Device i2c address */
39  uint32_t addr_bytes; /* Number of address bytes */
40  uint32_t page_size; /* Page size in bytes */
41  uint32_t timeout; /* Write cycle timeout in milliseconds */
42  uint8_t borrow_bits; /* Number of borrow bits */
44 
45 
53 hpm_stat_t e2p_device_i2c_register_param(hpm_eeprom_device_t *device, void *host_info, uint32_t dev_id);
54 
61 
68 
75 
89 hpm_stat_t e2p_device_i2c_read(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data);
90 
104 hpm_stat_t e2p_device_i2c_write(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data);
105 
106 #ifdef __cplusplus
107 }
108 #endif
109 
110 #endif
e2p_device_i2c_attribute_t * e2p_device_i2c_get_attribute(hpm_eeprom_device_t *device)
Get eeprom i2c device attribute.
Definition: e2p_device_i2c.c:55
hpm_stat_t e2p_device_i2c_register_param(hpm_eeprom_device_t *device, void *host_info, uint32_t dev_id)
Register eeprom i2c device parameter to device structure.
Definition: e2p_device_i2c.c:67
hpm_stat_t e2p_device_i2c_deinit(hpm_eeprom_device_t *device)
De-initialize eeprom i2c device.
Definition: e2p_device_i2c.c:111
hpm_stat_t e2p_device_i2c_write(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data)
Write data to eeprom i2c device.
Definition: e2p_device_i2c.c:403
hpm_stat_t e2p_device_i2c_init(hpm_eeprom_device_t *device)
Initialize eeprom i2c device, hw init(clock and pin) and i2c master init.
Definition: e2p_device_i2c.c:89
hpm_stat_t e2p_device_i2c_read(hpm_eeprom_device_t *device, uint32_t data_addr, uint32_t len, uint8_t *data)
Read data from eeprom i2c device.
Definition: e2p_device_i2c.c:201
uint32_t hpm_stat_t
Definition: hpm_common.h:135
Definition: hpm_i2c_regs.h:12
eeprom i2c device configuration structure
Definition: e2p_device_i2c.h:37
uint32_t addr_bytes
Definition: e2p_device_i2c.h:39
uint32_t dev_addr
Definition: e2p_device_i2c.h:38
uint8_t borrow_bits
Definition: e2p_device_i2c.h:42
uint32_t timeout
Definition: e2p_device_i2c.h:41
uint32_t page_size
Definition: e2p_device_i2c.h:40
eeprom i2c device board configuration structure
Definition: e2p_device_i2c.h:28
I2C_Type * base
Definition: e2p_device_i2c.h:29
eeprom device structure
Definition: eeprom_device.h:156