VSF Documented
vsf_iic_internal.h
Go to the documentation of this file.
1#ifndef __VSF_IIC_INTERNAL_H__
2#define __VSF_IIC_INTERNAL_H__
3
4#include "hal/vsf_hal_cfg.h"
5#include "../../__device.h"
6
8typedef struct {
10
12
14
16
18
20
22
25
28typedef enum {
34 IIC_REQ_ARLO = 5
36
37typedef enum {
38 IIC_MASTER_READ = 0x00000001U,
39
40 IIC_DUTYCYCLE_2 = 0x00000000U,
41 IIC_DUTYCYCLE_16_9 = 0x00004000U,
42
45
48
51
52 IIC_NOSTRETCH_DISABLE = 0x00000000U,
53 IIC_NOSTRETCH_ENABLE = 0x00000080U,
55
56typedef enum {
57 IIC1_GPIO_CLK_EN = 0x00000008U,
58 IIC1_CLK_EN = 0x00200000U,
59 IIC1_GPIO_MODE = 0xFF000000U,
60
61 IIC2_GPIO_CLK_EN = 0x00000008U,
62 IIC2_CLK_EN = 0x00400000U,
63 IIC2_GPIO_MODE = 0x0000FF00U,
65
66typedef enum {
67 IIC_EN = 0x00000001U,
68 IIC_START = 0x00000100U,
69 IIC_STOP = 0x00000200U,
70 IIC_ACK_EN = 0x00000400U,
71 IIC_POS_EN = 0x00000800U,
73
74typedef enum {
75 IIC_IT_ERR_EN = 0x00000100U,
76 IIC_IT_EVT_EN = 0x00000200U,
77 IIC_IT_BUF_EN = 0x00000400U,
79
80typedef enum {
81 IIC_SB_SET = 0x00000001U,
82 IIC_ADDR_SET = 0x00000002U,
83 IIC_BTF_SET = 0x00000004U,
84 IIC_STOPF_SET = 0x00000010U,
85 IIC_RXNE_SET = 0x00000040U,
86 IIC_TXE_SET = 0x00000080U,
87 IIC_ARLO_SET = 0x00000200U,
88 IIC_AF_SET = 0x00000400U,
89
90 IIC_BUSY = 0x00000002U,
92
93typedef enum {
94 NO_START = 0x00000001U,
95 NO_ADDR = 0x00000002U,
96 NO_STOP = 0x00000004U,
98
101typedef struct vsf_iic_t vsf_iic_t;
102
103typedef struct vsf_iic_t{
121 void (*callback_handler)(vsf_iic_t *iic_obj);
124} vsf_iic_t;
125
127 void (*m_w_evt_sb)(vsf_iic_t *iic_obj);
128 void (*m_w_evt_addr)(vsf_iic_t *iic_obj);
129 void (*m_w_evt_txe_btf)(vsf_iic_t *iic_obj);
130 void (*m_w_evt_txe)(vsf_iic_t *iic_obj);
131
132 void (*m_r_evt_sb)(vsf_iic_t *iic_obj);
133 void (*m_r_evt_addr)(vsf_iic_t *iic_obj);
134 void (*m_r_evt_rxne)(vsf_iic_t *iic_obj);
135
136 void (*m_w_err_arlo)(vsf_iic_t *iic_obj);
137};
138
140 void (*s_w_evt_addr)(vsf_iic_t *iic_obj);
141 void (*s_w_evt_txe)(vsf_iic_t *iic_obj);
142
143 void (*s_r_evt_addr)(vsf_iic_t *iic_obj);
144 void (*s_r_evt_stopf)(vsf_iic_t *iic_obj);
145 void (*s_r_evt_rxne)(vsf_iic_t *iic_obj);
146
147 void (*s_r_err_af)(vsf_iic_t *iic_obj);
148};
149
150extern bool vsf_iic_master_init(vsf_iic_t *iic_obj, iic_cfg_t *cfg_obj);
151
152extern bool vsf_iic_master_read(vsf_iic_t *iic_obj, uint8_t slave_address, uint8_t *input, uint16_t size);
153
154extern bool vsf_iic_master_write(vsf_iic_t *iic_obj, uint8_t slave_address, uint8_t *output, uint16_t out_size, uint8_t *arlo_buffer, uint16_t arlo_size, uint8_t Process_sele);
155
156//extern bool vsf_iic_cancel(vsf_iic_t *iic_obj);
157
159
161
162extern bool vsf_iic_slave_init(vsf_iic_t *iic_obj, iic_cfg_t *cfg_obj);
163
164extern bool vsf_iic_slave_read(vsf_iic_t *iic_obj, uint8_t *input, uint16_t size);
165
166extern bool vsf_iic_slave_write(vsf_iic_t *iic_obj, uint8_t *output, uint16_t size);
167
168//extern bool vsf_iic_set_address(vsf_iic_t *iic_obj, vsf_iic_addr_cfg_t *address);
169
170//extern vsf_iic_addr_cfg_t vsf_iic_get_address(vsf_iic_t *iic_obj, uint8_t index);
171
172//extern bool vsf_iic_slave_enable(vsf_iic_t *iic_obj);
173
174//extern bool vsf_iic_slave_disable(vsf_iic_t *iic_obj);
175
177
178extern fsm_rt_t vsf_iic_task(vsf_iic_t *iic_obj);
179
180//extern bool vsf_iic_feed_data(vsf_iic_t *iic_obj, uint8_t data);
181
182#endif
unsigned short uint16_t
Definition stdint.h:7
unsigned uint32_t
Definition stdint.h:9
unsigned char uint8_t
Definition stdint.h:5
i2c address configuration structure
Definition vsf_iic_internal.h:8
uint32_t addressing_mode
Definition vsf_iic_internal.h:13
uint32_t own_address1
Definition vsf_iic_internal.h:15
uint32_t no_stretch_mode
Definition vsf_iic_internal.h:23
uint32_t dual_address_mode
Definition vsf_iic_internal.h:17
uint32_t duty_cycle
Definition vsf_iic_internal.h:11
uint32_t general_call_mode
Definition vsf_iic_internal.h:21
uint32_t clock_speed
Definition vsf_iic_internal.h:9
uint32_t own_address2
Definition vsf_iic_internal.h:19
Definition vsf_template_i2c.h:334
Definition vsf_iic_internal.h:126
void(* m_w_evt_txe_btf)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:129
void(* m_w_err_arlo)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:136
void(* m_r_evt_addr)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:133
void(* m_w_evt_txe)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:130
void(* m_r_evt_sb)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:132
void(* m_r_evt_rxne)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:134
void(* m_w_evt_sb)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:127
void(* m_w_evt_addr)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:128
Definition vsf_iic_internal.h:139
void(* s_r_evt_stopf)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:144
void(* s_r_evt_rxne)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:145
void(* s_w_evt_addr)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:140
void(* s_r_evt_addr)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:143
void(* s_r_err_af)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:147
void(* s_w_evt_txe)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:141
Definition vsf_iic_internal.h:103
uint8_t * input
Definition vsf_iic_internal.h:113
uint32_t arlo_size
Definition vsf_iic_internal.h:116
vsf_iic_m_evt_interface_t * master_evt_handler
Definition vsf_iic_internal.h:122
uint8_t * arlo_buffer
Definition vsf_iic_internal.h:115
uint32_t out_size
Definition vsf_iic_internal.h:119
bool is_write
Definition vsf_iic_internal.h:106
uint32_t in_size
Definition vsf_iic_internal.h:117
bool is_master
Definition vsf_iic_internal.h:105
bool iic_is_busy
Definition vsf_iic_internal.h:107
uint8_t slave_address
Definition vsf_iic_internal.h:112
bool is_arlo
Definition vsf_iic_internal.h:108
uint32_t out_count
Definition vsf_iic_internal.h:120
bool no_stop
Definition vsf_iic_internal.h:111
bool is_af_back
Definition vsf_iic_internal.h:109
I2C_TypeDef * iic_reg
Definition vsf_iic_internal.h:104
void(* callback_handler)(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.h:121
vsf_iic_s_evt_interface_t * slave_evt_handler
Definition vsf_iic_internal.h:123
bool no_addr
Definition vsf_iic_internal.h:110
uint32_t in_count
Definition vsf_iic_internal.h:118
uint8_t * output
Definition vsf_iic_internal.h:114
fsm_rt_t
Definition vsf_fsm.h:315
em_vsf_iic_request_state_t vsf_iic_get_request_state(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.c:428
em_vsf_iic_request_state_t
Definition vsf_iic_internal.h:28
@ IIC_REQ_ARLO
Definition vsf_iic_internal.h:34
@ IIC_REQ_ON_GOING
Definition vsf_iic_internal.h:29
@ IIC_REQ_CANCEL
Definition vsf_iic_internal.h:33
@ IIC_REQ_BUS_ERROR
Definition vsf_iic_internal.h:32
@ IIC_REQ_SUCCESS
Definition vsf_iic_internal.h:30
@ IIC_REQ_FAILED
Definition vsf_iic_internal.h:31
bool vsf_iic_slave_read(vsf_iic_t *iic_obj, uint8_t *input, uint16_t size)
Definition vsf_iic_internal.c:400
bool vsf_iic_master_read(vsf_iic_t *iic_obj, uint8_t slave_address, uint8_t *input, uint16_t size)
Definition vsf_iic_internal.c:342
em_iic_it_t
Definition vsf_iic_internal.h:74
@ IIC_IT_EVT_EN
Definition vsf_iic_internal.h:76
@ IIC_IT_BUF_EN
Definition vsf_iic_internal.h:77
@ IIC_IT_ERR_EN
Definition vsf_iic_internal.h:75
em_iic_mode_t
Definition vsf_iic_internal.h:37
@ IIC_ADDRESSINGMODE_10BIT
Definition vsf_iic_internal.h:44
@ IIC_GENERALCALL_DISABLE
Definition vsf_iic_internal.h:49
@ IIC_DUTYCYCLE_2
Definition vsf_iic_internal.h:40
@ IIC_NOSTRETCH_ENABLE
Definition vsf_iic_internal.h:53
@ IIC_ADDRESSINGMODE_7BIT
Definition vsf_iic_internal.h:43
@ IIC_DUALADDRESS_ENABLE
Definition vsf_iic_internal.h:47
@ IIC_MASTER_READ
Definition vsf_iic_internal.h:38
@ IIC_DUALADDRESS_DISABLE
Definition vsf_iic_internal.h:46
@ IIC_GENERALCALL_ENABLE
Definition vsf_iic_internal.h:50
@ IIC_DUTYCYCLE_16_9
Definition vsf_iic_internal.h:41
@ IIC_NOSTRETCH_DISABLE
Definition vsf_iic_internal.h:52
bool vsf_iic_master_init(vsf_iic_t *iic_obj, iic_cfg_t *cfg_obj)
Definition vsf_iic_internal.c:146
bool vsf_iic_slave_init(vsf_iic_t *iic_obj, iic_cfg_t *cfg_obj)
Definition vsf_iic_internal.c:229
bool vsf_iic_slave_register_event(vsf_iic_t *iic_obj, vsf_iic_s_evt_interface_t *evt_obj)
Definition vsf_iic_internal.c:461
bool vsf_iic_slave_write(vsf_iic_t *iic_obj, uint8_t *output, uint16_t size)
Definition vsf_iic_internal.c:372
em_iic_cr1_reg_t
Definition vsf_iic_internal.h:66
@ IIC_POS_EN
Definition vsf_iic_internal.h:71
@ IIC_STOP
Definition vsf_iic_internal.h:69
@ IIC_ACK_EN
Definition vsf_iic_internal.h:70
@ IIC_EN
Definition vsf_iic_internal.h:67
@ IIC_START
Definition vsf_iic_internal.h:68
em_iic_low_hardware_cfg_t
Definition vsf_iic_internal.h:56
@ IIC1_GPIO_MODE
Definition vsf_iic_internal.h:59
@ IIC2_GPIO_MODE
Definition vsf_iic_internal.h:63
@ IIC1_CLK_EN
Definition vsf_iic_internal.h:58
@ IIC2_CLK_EN
Definition vsf_iic_internal.h:62
@ IIC2_GPIO_CLK_EN
Definition vsf_iic_internal.h:61
@ IIC1_GPIO_CLK_EN
Definition vsf_iic_internal.h:57
bool vsf_iic_master_write(vsf_iic_t *iic_obj, uint8_t slave_address, uint8_t *output, uint16_t out_size, uint8_t *arlo_buffer, uint16_t arlo_size, uint8_t Process_sele)
Definition vsf_iic_internal.c:299
bool vsf_iic_master_register_event(vsf_iic_t *iic_obj, vsf_iic_m_evt_interface_t *evt_obj)
Definition vsf_iic_internal.c:442
fsm_rt_t vsf_iic_task(vsf_iic_t *iic_obj)
Definition vsf_iic_internal.c:478
em_process_sele_t
Definition vsf_iic_internal.h:93
@ NO_STOP
Definition vsf_iic_internal.h:96
@ NO_START
Definition vsf_iic_internal.h:94
@ NO_ADDR
Definition vsf_iic_internal.h:95
em_iic_status_t
Definition vsf_iic_internal.h:80
@ IIC_SB_SET
Definition vsf_iic_internal.h:81
@ IIC_TXE_SET
Definition vsf_iic_internal.h:86
@ IIC_BTF_SET
Definition vsf_iic_internal.h:83
@ IIC_ARLO_SET
Definition vsf_iic_internal.h:87
@ IIC_RXNE_SET
Definition vsf_iic_internal.h:85
@ IIC_STOPF_SET
Definition vsf_iic_internal.h:84
@ IIC_AF_SET
Definition vsf_iic_internal.h:88
@ IIC_BUSY
Definition vsf_iic_internal.h:90
@ IIC_ADDR_SET
Definition vsf_iic_internal.h:82
uint32_t size
Definition vsf_memfs.h:50