LibDriver FM24CLXX
Loading...
Searching...
No Matches
driver_fm24clxx.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_FM24CLXX_H
38#define DRIVER_FM24CLXX_H
39
40#include <stdio.h>
41#include <stdint.h>
42#include <string.h>
43
44#ifdef __cplusplus
45extern "C"{
46#endif
47
53
58
62typedef enum
63{
64 FM24CL04B = 512,
65 FM24CL16B = 2048,
66 FM24CL64B = 8192,
68
83
87typedef struct fm24clxx_handle_s
88{
89 uint8_t iic_addr;
90 uint8_t (*iic_init)(void);
91 uint8_t (*iic_deinit)(void);
92 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
93 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
94 uint8_t (*iic_read_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
95 uint8_t (*iic_write_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
96 void (*delay_ms)(uint32_t ms);
97 void (*debug_print)(const char *const fmt, ...);
98 uint16_t id;
99 uint8_t inited;
101
117
121
128
135#define DRIVER_FM24CLXX_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
136
143#define DRIVER_FM24CLXX_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
144
151#define DRIVER_FM24CLXX_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
152
159#define DRIVER_FM24CLXX_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
160
167#define DRIVER_FM24CLXX_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
168
175#define DRIVER_FM24CLXX_LINK_IIC_READ_ADDRESS16(HANDLE, FUC) (HANDLE)->iic_read_address16 = FUC
176
183#define DRIVER_FM24CLXX_LINK_IIC_WRITE_ADDRESS16(HANDLE, FUC) (HANDLE)->iic_write_address16 = FUC
184
191#define DRIVER_FM24CLXX_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
192
199#define DRIVER_FM24CLXX_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
200
204
211
220uint8_t fm24clxx_info(fm24clxx_info_t *info);
221
232uint8_t fm24clxx_init(fm24clxx_handle_t *handle);
233
244uint8_t fm24clxx_deinit(fm24clxx_handle_t *handle);
245
255uint8_t fm24clxx_set_type(fm24clxx_handle_t *handle, fm24clxx_t type);
256
266uint8_t fm24clxx_get_type(fm24clxx_handle_t *handle, fm24clxx_t *type);
267
278
289
304uint8_t fm24clxx_read(fm24clxx_handle_t *handle, uint16_t address, uint8_t *buf, uint16_t len);
305
320uint8_t fm24clxx_write(fm24clxx_handle_t *handle, uint16_t address, uint8_t *buf, uint16_t len);
321
325
329
330#ifdef __cplusplus
331}
332#endif
333
334#endif
uint8_t fm24clxx_set_addr_pin(fm24clxx_handle_t *handle, fm24clxx_address_t addr_pin)
set the chip address pin
uint8_t fm24clxx_init(fm24clxx_handle_t *handle)
initialize the chip
struct fm24clxx_handle_s fm24clxx_handle_t
fm24clxx handle structure definition
uint8_t fm24clxx_read(fm24clxx_handle_t *handle, uint16_t address, uint8_t *buf, uint16_t len)
read bytes from the chip
fm24clxx_address_t
fm24clxx address enumeration definition
fm24clxx_t
fm24clxx type enumeration definition
struct fm24clxx_info_s fm24clxx_info_t
fm24clxx information structure definition
uint8_t fm24clxx_set_type(fm24clxx_handle_t *handle, fm24clxx_t type)
set the chip type
uint8_t fm24clxx_write(fm24clxx_handle_t *handle, uint16_t address, uint8_t *buf, uint16_t len)
write bytes to the chip
uint8_t fm24clxx_info(fm24clxx_info_t *info)
get chip's information
uint8_t fm24clxx_get_addr_pin(fm24clxx_handle_t *handle, fm24clxx_address_t *addr_pin)
get the chip address pin
uint8_t fm24clxx_deinit(fm24clxx_handle_t *handle)
close the chip
uint8_t fm24clxx_get_type(fm24clxx_handle_t *handle, fm24clxx_t *type)
get the chip type
@ FM24CLXX_ADDRESS_A100
@ FM24CLXX_ADDRESS_A110
@ FM24CLXX_ADDRESS_A001
@ FM24CLXX_ADDRESS_A011
@ FM24CLXX_ADDRESS_A010
@ FM24CLXX_ADDRESS_A101
@ FM24CLXX_ADDRESS_A111
@ FM24CLXX_ADDRESS_A000
@ FM24CL64B
@ FM24CL04B
@ FM24CL16B
fm24clxx handle structure definition
void(* delay_ms)(uint32_t ms)
uint8_t(* iic_read_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
void(* debug_print)(const char *const fmt,...)
uint8_t(* iic_init)(void)
uint8_t(* iic_write_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
uint8_t(* iic_deinit)(void)
fm24clxx information structure definition
char manufacturer_name[32]