LibDriver PCA9548A
Loading...
Searching...
No Matches
driver_pca9548a.h
Go to the documentation of this file.
1
36
37#ifndef DRIVER_PCA9548A_H
38#define DRIVER_PCA9548A_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
73
77typedef enum
78{
82
97
101typedef struct pca9548a_handle_s
102{
103 uint8_t (*reset_gpio_init)(void);
104 uint8_t (*reset_gpio_deinit)(void);
105 uint8_t (*reset_gpio_write)(uint8_t level);
106 uint8_t (*iic_init)(void);
107 uint8_t (*iic_deinit)(void);
108 uint8_t (*iic_read_cmd)(uint8_t addr, uint8_t *buf, uint16_t len);
109 uint8_t (*iic_write_cmd)(uint8_t addr, uint8_t *buf, uint16_t len);
110 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
111 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
112 uint8_t (*iic_read_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
113 uint8_t (*iic_write_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
114 void (*delay_ms)(uint32_t ms);
115 void (*debug_print)(const char *const fmt, ...);
116 uint8_t iic_addr;
117 uint8_t channel;
118 uint8_t inited;
120
136
140
147
154#define DRIVER_PCA9548A_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
155
162#define DRIVER_PCA9548A_LINK_RESET_GPIO_INIT(HANDLE, FUC) (HANDLE)->reset_gpio_init = FUC
163
170#define DRIVER_PCA9548A_LINK_RESET_GPIO_DEINIT(HANDLE, FUC) (HANDLE)->reset_gpio_deinit = FUC
171
178#define DRIVER_PCA9548A_LINK_RESET_GPIO_WRITE(HANDLE, FUC) (HANDLE)->reset_gpio_write = FUC
179
186#define DRIVER_PCA9548A_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
187
194#define DRIVER_PCA9548A_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
195
202#define DRIVER_PCA9548A_LINK_IIC_READ_COMMAND(HANDLE, FUC) (HANDLE)->iic_read_cmd = FUC
203
210#define DRIVER_PCA9548A_LINK_IIC_WRITE_COMMAND(HANDLE, FUC) (HANDLE)->iic_write_cmd = FUC
211
218#define DRIVER_PCA9548A_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
219
226#define DRIVER_PCA9548A_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
227
234#define DRIVER_PCA9548A_LINK_IIC_READ_ADDRESS16(HANDLE, FUC) (HANDLE)->iic_read_address16 = FUC
235
242#define DRIVER_PCA9548A_LINK_IIC_WRITE_ADDRESS16(HANDLE, FUC) (HANDLE)->iic_write_address16 = FUC
243
250#define DRIVER_PCA9548A_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
251
258#define DRIVER_PCA9548A_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
259
263
270
279uint8_t pca9548a_info(pca9548a_info_t *info);
280
291
302
315uint8_t pca9548a_init(pca9548a_handle_t *handle);
316
328uint8_t pca9548a_deinit(pca9548a_handle_t *handle);
329
343
356
368
382uint8_t pca9548a_iic_read_command(pca9548a_handle_t *handle, uint8_t addr, uint8_t *buf, uint16_t len);
383
397uint8_t pca9548a_iic_write_command(pca9548a_handle_t *handle, uint8_t addr, uint8_t *buf, uint16_t len);
398
413uint8_t pca9548a_iic_read(pca9548a_handle_t *handle, uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
414
429uint8_t pca9548a_iic_write(pca9548a_handle_t *handle, uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
430
445uint8_t pca9548a_iic_read_address16(pca9548a_handle_t *handle, uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
446
461uint8_t pca9548a_iic_write_address16(pca9548a_handle_t *handle, uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len);
462
466
470
471#ifdef __cplusplus
472}
473#endif
474
475#endif
uint8_t pca9548a_get_channel(pca9548a_handle_t *handle, pca9548a_channel_t channel, pca9548a_bool_t *enable)
get channel
uint8_t pca9548a_set_channel(pca9548a_handle_t *handle, pca9548a_channel_t channel, pca9548a_bool_t enable)
set channel
uint8_t pca9548a_iic_read_address16(pca9548a_handle_t *handle, uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
iic read address16
uint8_t pca9548a_init(pca9548a_handle_t *handle)
initialize the chip
uint8_t pca9548a_iic_read_command(pca9548a_handle_t *handle, uint8_t addr, uint8_t *buf, uint16_t len)
iic read command
uint8_t pca9548a_reset_bus(pca9548a_handle_t *handle)
reset bus
uint8_t pca9548a_get_addr_pin(pca9548a_handle_t *handle, pca9548a_address_t *addr_pin)
get the address pin
uint8_t pca9548a_iic_write_address16(pca9548a_handle_t *handle, uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
iic write address16
pca9548a_channel_t
pca9548a channel enumeration definition
uint8_t pca9548a_iic_write(pca9548a_handle_t *handle, uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
iic write
pca9548a_address_t
pca9548a address enumeration definition
uint8_t pca9548a_set_addr_pin(pca9548a_handle_t *handle, pca9548a_address_t addr_pin)
set the address pin
uint8_t pca9548a_iic_write_command(pca9548a_handle_t *handle, uint8_t addr, uint8_t *buf, uint16_t len)
iic write command
struct pca9548a_info_s pca9548a_info_t
pca9548a information structure definition
pca9548a_bool_t
pca9548a bool enumeration definition
uint8_t pca9548a_info(pca9548a_info_t *info)
get chip's information
uint8_t pca9548a_deinit(pca9548a_handle_t *handle)
close the chip
struct pca9548a_handle_s pca9548a_handle_t
pca9548a handle structure definition
uint8_t pca9548a_iic_read(pca9548a_handle_t *handle, uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
iic read
@ PCA9548A_CHANNEL_0
@ PCA9548A_CHANNEL_1
@ PCA9548A_CHANNEL_2
@ PCA9548A_CHANNEL_3
@ PCA9548A_CHANNEL_7
@ PCA9548A_CHANNEL_4
@ PCA9548A_CHANNEL_5
@ PCA9548A_CHANNEL_6
@ PCA9548A_ADDRESS_A100
@ PCA9548A_ADDRESS_A001
@ PCA9548A_ADDRESS_A110
@ PCA9548A_ADDRESS_A101
@ PCA9548A_ADDRESS_A111
@ PCA9548A_ADDRESS_A011
@ PCA9548A_ADDRESS_A000
@ PCA9548A_ADDRESS_A010
@ PCA9548A_BOOL_FALSE
@ PCA9548A_BOOL_TRUE
pca9548a handle structure definition
void(* delay_ms)(uint32_t ms)
uint8_t(* reset_gpio_deinit)(void)
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(* reset_gpio_init)(void)
uint8_t(* iic_read_cmd)(uint8_t addr, uint8_t *buf, uint16_t len)
uint8_t(* iic_write_address16)(uint8_t addr, uint16_t reg, uint8_t *buf, uint16_t len)
uint8_t(* reset_gpio_write)(uint8_t level)
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)
uint8_t(* iic_write_cmd)(uint8_t addr, uint8_t *buf, uint16_t len)
pca9548a information structure definition
char manufacturer_name[32]