HPM SDK
HPMicro Software Development Kit
hpm_sccb.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2023 HPMicro
3  *
4  * SPDX-License-Identifier: BSD-3-Clause
5  *
6  */
7 
8 #ifndef HPM_SCCB_H
9 #define HPM_SCCB_H
10 
11 #include "hpm_common.h"
12 #include "hpm_soc_feature.h"
13 #include "hpm_i2c_drv.h"
14 
16 
17 typedef enum _sccb_xfer_flag {
18  /*Normal transfer with start condition, address, data and stop condition.*/
20  /*This flag allows the next transfer to change direction with repeated start*/
22  /*This flag allows chaining multiple writes or reads with the same direction*/
25 
26 typedef struct _sccb_bus {
27  uint8_t initialzed;
28  sccb_type sccb;
30 
31 #ifdef __cplusplus
32 extern "C"
33 {
34 #endif
35 
45 
54 uint8_t sccb_master_scan(sccb_type sccb);
55 
65 hpm_stat_t sccb_master_gencall(sccb_type sccb, uint8_t cmd);
66 
79 hpm_stat_t sccb_master_readb(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint8_t *reg_data);
80 
93 hpm_stat_t sccb_master_writeb(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint8_t reg_data);
94 
107 hpm_stat_t sccb_master_readb2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint8_t *reg_data);
108 
121 hpm_stat_t sccb_master_writeb2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint8_t reg_data);
122 
135 hpm_stat_t sccb_master_readw(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint16_t *reg_data);
136 
149 hpm_stat_t sccb_master_writew(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint16_t reg_data);
150 
163 hpm_stat_t sccb_master_readw2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint16_t *reg_data);
164 
177 hpm_stat_t sccb_master_writew2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint16_t reg_data);
178 
191 hpm_stat_t sccb_master_read_bytes(sccb_type sccb, uint8_t slv_addr, uint8_t *buf, const uint32_t len, uint8_t flags);
192 
205 hpm_stat_t cambus_write_bytes(sccb_type sccb, uint8_t slv_addr, uint8_t *buf, const uint32_t len, uint8_t flags);
206 
207 #ifdef __cplusplus
208 }
209 #endif
210 
211 #endif
uint32_t hpm_stat_t
Definition: hpm_common.h:126
@ sccb_xfer_suspend
Definition: hpm_sccb.h:23
hpm_stat_t sccb_master_writew2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint16_t reg_data)
sccb master write 16bit data of specify 16bit register from certain slave device
Definition: hpm_sccb.c:87
hpm_stat_t sccb_master_init(sccb_type sccb)
sccb master initialization
Definition: hpm_sccb.c:10
hpm_stat_t sccb_master_readb(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint8_t *reg_data)
sccb master read 8bit data of specify 8bit register from certain slave device
Definition: hpm_sccb.c:32
hpm_stat_t sccb_master_readw2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint16_t *reg_data)
sccb master read 16bit data of specify 16it register from certain slave device
Definition: hpm_sccb.c:76
uint8_t sccb_master_scan(sccb_type sccb)
sccb master scan slave addr
Definition: hpm_sccb.c:16
struct _sccb_bus hpm_sccb_bus_t
@ sccb_xfer_no_flags
Definition: hpm_sccb.h:19
hpm_stat_t cambus_write_bytes(sccb_type sccb, uint8_t slv_addr, uint8_t *buf, const uint32_t len, uint8_t flags)
sccb master weite the specified number of bytes continuously at the specified flag
Definition: hpm_sccb.c:101
hpm_stat_t sccb_master_gencall(sccb_type sccb, uint8_t cmd)
sccb master gen call slave
Definition: hpm_sccb.c:26
hpm_stat_t sccb_master_readw(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint16_t *reg_data)
sccb master read 16bit data of specify 8bit register from certain slave device
Definition: hpm_sccb.c:59
enum _sccb_xfer_flag sccb_xfer_flags_t
hpm_stat_t sccb_master_writeb2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint8_t reg_data)
sccb master write 8bit data of specify 16bit register from certain slave device
Definition: hpm_sccb.c:50
hpm_stat_t sccb_master_writeb(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint8_t reg_data)
sccb master write 8bit data of specify 8bit register from certain slave device
Definition: hpm_sccb.c:37
@ sccb_xfer_no_stop
Definition: hpm_sccb.h:21
hpm_stat_t sccb_master_read_bytes(sccb_type sccb, uint8_t slv_addr, uint8_t *buf, const uint32_t len, uint8_t flags)
sccb master reads the specified number of bytes continuously at the specified flag
Definition: hpm_sccb.c:96
hpm_stat_t sccb_master_writew(sccb_type sccb, uint8_t slv_addr, uint8_t reg_addr, uint16_t reg_data)
sccb master write 16bit data of specify 8bit register from certain slave device
Definition: hpm_sccb.c:70
hpm_stat_t sccb_master_readb2(sccb_type sccb, uint8_t slv_addr, uint16_t reg_addr, uint8_t *reg_data)
sccb master read 8bit data of specify 16bit register from certain slave device
Definition: hpm_sccb.c:42
I2C_Type * sccb_type
Definition: hpm_sccb.h:15
Definition: hpm_i2c_regs.h:12