stepdown6  2.1.0.0
stepdown6.h
Go to the documentation of this file.
1 /****************************************************************************
2 ** Copyright (C) 2020 MikroElektronika d.o.o.
3 ** Contact: https://www.mikroe.com/contact
4 **
5 ** Permission is hereby granted, free of charge, to any person obtaining a copy
6 ** of this software and associated documentation files (the "Software"), to deal
7 ** in the Software without restriction, including without limitation the rights
8 ** to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9 ** copies of the Software, and to permit persons to whom the Software is
10 ** furnished to do so, subject to the following conditions:
11 ** The above copyright notice and this permission notice shall be
12 ** included in all copies or substantial portions of the Software.
13 **
14 ** THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15 ** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
16 ** OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 ** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
18 ** DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT
19 ** OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
20 ** USE OR OTHER DEALINGS IN THE SOFTWARE.
21 ****************************************************************************/
22 
28 #ifndef STEPDOWN6_H
29 #define STEPDOWN6_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_digital_in.h"
47 #include "drv_i2c_master.h"
48 
69 #define STEPDOWN6_REG_BUCK1_CTRL1 0x00
70 #define STEPDOWN6_REG_BUCK1_CTRL2 0x01
71 #define STEPDOWN6_REG_BUCK1_CTRL3 0x02
72 #define STEPDOWN6_REG_BUCK2_CTRL1 0x03
73 #define STEPDOWN6_REG_BUCK2_CTRL2 0x04
74 #define STEPDOWN6_REG_BUCK2_CTRL3 0x05
75 #define STEPDOWN6_REG_BUCK3_CTRL1 0x06
76 #define STEPDOWN6_REG_BUCK3_CTRL2 0x07
77 #define STEPDOWN6_REG_BUCK3_CTRL3 0x08
78 #define STEPDOWN6_REG_BUCK4_CTRL1 0x09
79 #define STEPDOWN6_REG_BUCK4_CTRL2 0x0A
80 #define STEPDOWN6_REG_BUCK4_CTRL3 0x0B
81 #define STEPDOWN6_REG_SYSTEM_CTRL1 0x0C
82 #define STEPDOWN6_REG_SYSTEM_CTRL2 0x0D
83 #define STEPDOWN6_REG_SYSTEM_CTRL3 0x0E
84 #define STEPDOWN6_REG_SYSTEM_CTRL4 0x0F
85 #define STEPDOWN6_REG_SYSTEM_CTRL5 0x10
86 #define STEPDOWN6_REG_SYSTEM_CTRL6 0x11
87 #define STEPDOWN6_REG_STATUS 0x12
88 #define STEPDOWN6_REG_SYSTEM_CTRL7 0x13
89  // stepdown6_reg
91 
111 #define STEPDOWN6_SOFT_START_DLY_0_MS 0x00
112 #define STEPDOWN6_SOFT_START_DLY_1_MS 0x10
113 #define STEPDOWN6_SOFT_START_DLY_2_MS 0x20
114 #define STEPDOWN6_SOFT_START_DLY_3_MS 0x30
115 #define STEPDOWN6_SOFT_ADD_DLY_100_US 0x08
116 #define STEPDOWN6_SOFT_START_CFG0 0x00
117 #define STEPDOWN6_SOFT_START_CFG1 0x01
118 #define STEPDOWN6_SOFT_START_CFG2 0x02
119 #define STEPDOWN6_SOFT_START_CFG3 0x03
120 #define STEPDOWN6_SOFT_START_CFG4 0x04
121 #define STEPDOWN6_SOFT_START_CFG5 0x05
122 #define STEPDOWN6_SOFT_START_CFG6 0x06
123 #define STEPDOWN6_SOFT_START_CFG7 0x07
124 
129 #define STEPDOWN6_VOUT_LIMIT_FB_EN 0x80
130 #define STEPDOWN6_VOUT_LIMIT_I2C_EN 0x00
131 #define STEPDOWN6_MODE_AUTO_PWM 0x00
132 #define STEPDOWN6_MODE_FORCED_PWM 0x40
133 #define STEPDOWN6_CURRENT_LIM_1A 0x00
134 #define STEPDOWN6_CURRENT_LIM_2A 0x10
135 #define STEPDOWN6_CURRENT_LIM_3A 0x20
136 #define STEPDOWN6_CURRENT_LIM_4A 0x30
137 #define STEPDOWN6_VOUT_OVP_EN 0x08
138 #define STEPDOWN6_PH_DELAY_0 0x00
139 #define STEPDOWN6_PH_DELAY_90 0x02
140 #define STEPDOWN6_PH_DELAY_180 0x04
141 #define STEPDOWN6_PH_DELAY_270 0x06
142 #define STEPDOWN6_VOUT_DIS_EN 0x01
143 
148 #define STEPDOWN6_VOUT_SELECT 0x80
149 #define STEPDOWN6_VOUT_REF 0x7F
150 
155 #define STEPDOWN6_EN1_OUTPUT 0x80
156 #define STEPDOWN6_EN2_OUTPUT 0x40
157 #define STEPDOWN6_EN3_OUTPUT 0x20
158 #define STEPDOWN6_EN4_OUTPUT 0x10
159 #define STEPDOWN6_UVLO_TH_3V5 0x00
160 #define STEPDOWN6_UVLO_TH_4V5 0x02
161 #define STEPDOWN6_UVLO_TH_5V8 0x04
162 #define STEPDOWN6_UVLO_TH_8V5 0x06
163 
168 #define STEPDOWN6_FREQ_533_HZ 0x00
169 #define STEPDOWN6_FREQ_800_HZ 0x40
170 #define STEPDOWN6_FREQ_1060_HZ 0x80
171 #define STEPDOWN6_FREQ_1600_HZ 0xC0
172 #define STEPDOWN6_SHUTDOWN_DELAY_EN 0x20
173 
178 #define STEPDOWN6_PG_DELAY_200_US 0x00
179 #define STEPDOWN6_PG_DELAY_5_MS 0x04
180 #define STEPDOWN6_PG_DELAY_25_MS 0x08
181 #define STEPDOWN6_PG_DELAY_75_MS 0x0C
182 #define STEPDOWN6_PG_DELAY_200_MS 0x10
183 #define STEPDOWN6_PARALLEL_2_EN 0x02
184 #define STEPDOWN6_PARALLEL_1_EN 0x01
185 
190 #define STEPDOWN6_SELECT_VOUT1 0x00
191 #define STEPDOWN6_SELECT_VOUT2 0x01
192 #define STEPDOWN6_SELECT_VOUT3 0x02
193 #define STEPDOWN6_SELECT_VOUT4 0x03
194 
199 #define STEPDOWN6_PIN_STATE_HIGH 0x01
200 #define STEPDOWN6_PIN_STATE_LOW 0x00
201 
206 #define STEPDOWN6_MIN_VOUT_VAL 550
207 #define STEPDOWN6_MAX_VOUT_VAL 1820
208 #define STEPDOWN6_INCREMENT_VOUT_VAL 10
209 
215 #define STEPDOWN6_DEVICE_ADDRESS 0x68
216  // stepdown6_set
218 
233 #define STEPDOWN6_MAP_MIKROBUS( cfg, mikrobus ) \
234  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
235  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
236  cfg.en = MIKROBUS( mikrobus, MIKROBUS_RST )
237  // stepdown6_map // stepdown6
240 
245 typedef struct
246 {
247  // Output pins
248  digital_out_t en;
250  // Modules
251  i2c_master_t i2c;
253  // I2C slave address
254  uint8_t slave_address;
256 } stepdown6_t;
257 
262 typedef struct
263 {
264  pin_name_t scl;
265  pin_name_t sda;
267  pin_name_t en;
269  uint32_t i2c_speed;
270  uint8_t i2c_address;
273 
278 typedef enum
279 {
281  STEPDOWN6_ERROR = -1
282 
284 
301 
316 
330 
345 err_t stepdown6_generic_write ( stepdown6_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
346 
361 err_t stepdown6_generic_read ( stepdown6_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
362 
372 void stepdown6_set_en_pin ( stepdown6_t *ctx, uint8_t pin_state );
373 
387 err_t stepdown6_write_reg ( stepdown6_t *ctx, uint8_t reg, uint8_t data_in );
388 
402 err_t stepdown6_read_reg ( stepdown6_t *ctx, uint8_t reg, uint8_t *data_out );
403 
416 err_t stepdown6_set_out_voltage ( stepdown6_t *ctx, uint8_t out_sel, uint16_t out_val );
417 
418 #ifdef __cplusplus
419 }
420 #endif
421 #endif // STEPDOWN6_H
422  // stepdown6
424 
425 // ------------------------------------------------------------------------ END
stepdown6_write_reg
err_t stepdown6_write_reg(stepdown6_t *ctx, uint8_t reg, uint8_t data_in)
Step Down 6 Register writing function.
stepdown6_generic_read
err_t stepdown6_generic_read(stepdown6_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Step Down 6 I2C reading function.
stepdown6_cfg_t::sda
pin_name_t sda
Definition: stepdown6.h:265
stepdown6_t
Step Down 6 Click context object.
Definition: stepdown6.h:246
stepdown6_init
err_t stepdown6_init(stepdown6_t *ctx, stepdown6_cfg_t *cfg)
Step Down 6 initialization function.
STEPDOWN6_ERROR
@ STEPDOWN6_ERROR
Definition: stepdown6.h:281
stepdown6_t::i2c
i2c_master_t i2c
Definition: stepdown6.h:251
stepdown6_set_en_pin
void stepdown6_set_en_pin(stepdown6_t *ctx, uint8_t pin_state)
Step Down 6 set EN pin state function.
stepdown6_cfg_t::en
pin_name_t en
Definition: stepdown6.h:267
stepdown6_cfg_t::i2c_address
uint8_t i2c_address
Definition: stepdown6.h:270
stepdown6_generic_write
err_t stepdown6_generic_write(stepdown6_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Step Down 6 I2C writing function.
STEPDOWN6_OK
@ STEPDOWN6_OK
Definition: stepdown6.h:280
stepdown6_t::slave_address
uint8_t slave_address
Definition: stepdown6.h:254
stepdown6_t::en
digital_out_t en
Definition: stepdown6.h:248
stepdown6_return_value_t
stepdown6_return_value_t
Step Down 6 Click return value data.
Definition: stepdown6.h:279
stepdown6_cfg_t
Step Down 6 Click configuration object.
Definition: stepdown6.h:263
stepdown6_cfg_t::scl
pin_name_t scl
Definition: stepdown6.h:264
stepdown6_set_out_voltage
err_t stepdown6_set_out_voltage(stepdown6_t *ctx, uint8_t out_sel, uint16_t out_val)
Step Down 6 Set output voltage function.
stepdown6_cfg_setup
void stepdown6_cfg_setup(stepdown6_cfg_t *cfg)
Step Down 6 configuration object setup function.
stepdown6_read_reg
err_t stepdown6_read_reg(stepdown6_t *ctx, uint8_t reg, uint8_t *data_out)
Step Down 6 Register reading function.
stepdown6_default_cfg
err_t stepdown6_default_cfg(stepdown6_t *ctx)
Step Down 6 default configuration function.
stepdown6_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: stepdown6.h:269