LibDriver AT24CXX  2.0.0
AT24CXX full-featured driver
driver_at24cxx.h
Go to the documentation of this file.
1 
38 #ifndef DRIVER_AT24CXX_H
39 #define DRIVER_AT24CXX_H
40 
41 #include <stdio.h>
42 #include <stdint.h>
43 #include <string.h>
44 
45 #ifdef __cplusplus
46 extern "C"{
47 #endif
48 
63 typedef enum
64 {
65  AT24C01 = 128,
66  AT24C02 = 256,
67  AT24C04 = 512,
68  AT24C08 = 1024,
69  AT24C16 = 2048,
70  AT24C32 = 4096,
71  AT24C64 = 8192,
72  AT24C128 = 16384,
73  AT24C256 = 32768,
74  AT24C512 = 65536,
75  AT24CM01 = 131072,
76  AT24CM02 = 262144,
77 } at24cxx_t;
78 
82 typedef enum
83 {
93 
97 typedef struct at24cxx_handle_s
98 {
99  uint8_t iic_addr;
100  uint8_t (*iic_init)(void);
101  uint8_t (*iic_deinit)(void);
102  uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
103  uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
104  uint8_t (*iic_read_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
105  uint8_t (*iic_write_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
106  void (*delay_ms)(uint32_t ms);
107  void (*debug_print)(const char *const fmt, ...);
108  uint32_t id;
109  uint8_t inited;
111 
115 typedef struct at24cxx_info_s
116 {
117  char chip_name[32];
118  char manufacturer_name[32];
119  char interface[8];
125  uint32_t driver_version;
127 
145 #define DRIVER_AT24CXX_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
146 
153 #define DRIVER_AT24CXX_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
154 
161 #define DRIVER_AT24CXX_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
162 
169 #define DRIVER_AT24CXX_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
170 
177 #define DRIVER_AT24CXX_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
178 
185 #define DRIVER_AT24CXX_LINK_IIC_READ_ADDRESS16(HANDLE, FUC) (HANDLE)->iic_read_address16 = FUC
186 
193 #define DRIVER_AT24CXX_LINK_IIC_WRITE_ADDRESS16(HANDLE, FUC) (HANDLE)->iic_write_address16 = FUC
194 
201 #define DRIVER_AT24CXX_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
202 
209 #define DRIVER_AT24CXX_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
210 
230 uint8_t at24cxx_info(at24cxx_info_t *info);
231 
242 uint8_t at24cxx_init(at24cxx_handle_t *handle);
243 
254 uint8_t at24cxx_deinit(at24cxx_handle_t *handle);
255 
265 uint8_t at24cxx_set_type(at24cxx_handle_t *handle, at24cxx_t type);
266 
276 uint8_t at24cxx_get_type(at24cxx_handle_t *handle, at24cxx_t *type);
277 
287 uint8_t at24cxx_set_addr_pin(at24cxx_handle_t *handle, at24cxx_address_t addr_pin);
288 
298 uint8_t at24cxx_get_addr_pin(at24cxx_handle_t *handle, at24cxx_address_t *addr_pin);
299 
314 uint8_t at24cxx_read(at24cxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len);
315 
330 uint8_t at24cxx_write(at24cxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len);
331 
340 #ifdef __cplusplus
341 }
342 #endif
343 
344 #endif
uint8_t at24cxx_set_type(at24cxx_handle_t *handle, at24cxx_t type)
set the chip type
uint8_t at24cxx_get_addr_pin(at24cxx_handle_t *handle, at24cxx_address_t *addr_pin)
get the chip address pin
uint8_t at24cxx_init(at24cxx_handle_t *handle)
initialize the chip
struct at24cxx_info_s at24cxx_info_t
at24cxx information structure definition
uint8_t at24cxx_read(at24cxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len)
read bytes from the chip
at24cxx_t
at24cxx type enumeration definition
uint8_t at24cxx_deinit(at24cxx_handle_t *handle)
close the chip
struct at24cxx_handle_s at24cxx_handle_t
at24cxx handle structure definition
uint8_t at24cxx_write(at24cxx_handle_t *handle, uint32_t address, uint8_t *buf, uint16_t len)
write bytes to the chip
at24cxx_address_t
at24cxx address enumeration definition
uint8_t at24cxx_info(at24cxx_info_t *info)
get chip's information
uint8_t at24cxx_set_addr_pin(at24cxx_handle_t *handle, at24cxx_address_t addr_pin)
set the chip address pin
uint8_t at24cxx_get_type(at24cxx_handle_t *handle, at24cxx_t *type)
get the chip type
@ AT24CM01
@ AT24C512
@ AT24C256
@ AT24C01
@ AT24CM02
@ AT24C32
@ AT24C08
@ AT24C128
@ AT24C64
@ AT24C16
@ AT24C02
@ AT24C04
@ AT24CXX_ADDRESS_A100
@ AT24CXX_ADDRESS_A111
@ AT24CXX_ADDRESS_A011
@ AT24CXX_ADDRESS_A000
@ AT24CXX_ADDRESS_A010
@ AT24CXX_ADDRESS_A001
@ AT24CXX_ADDRESS_A101
@ AT24CXX_ADDRESS_A110
at24cxx 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)
at24cxx information structure definition
float supply_voltage_max_v
uint32_t driver_version
char manufacturer_name[32]
float supply_voltage_min_v
char chip_name[32]