buck14  2.0.0.0
buck14.h
Go to the documentation of this file.
1 /*
2  * MikroSDK - MikroE Software Development Kit
3  * Copyright© 2020 MikroElektronika d.o.o.
4  *
5  * Permission is hereby granted, free of charge, to any person
6  * obtaining a copy of this software and associated documentation
7  * files (the "Software"), to deal in the Software without restriction,
8  * including without limitation the rights to use, copy, modify, merge,
9  * publish, distribute, sublicense, and/or sell copies of the Software,
10  * and to permit persons to whom the Software is furnished to do so,
11  * subject to the following conditions:
12  *
13  * The above copyright notice and this permission notice shall be
14  * included in all copies or substantial portions of the Software.
15  *
16  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
17  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
19  * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
20  * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
21  * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE
22  * OR OTHER DEALINGS IN THE SOFTWARE.
23  */
24 
33 // ----------------------------------------------------------------------------
34 
35 #ifndef BUCK14_H
36 #define BUCK14_H
37 
38 #include "drv_digital_out.h"
39 #include "drv_digital_in.h"
40 #include "drv_i2c_master.h"
41 
42 // -------------------------------------------------------------- PUBLIC MACROS
52 #define BUCK14_MAP_MIKROBUS( cfg, mikrobus ) \
53  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
54  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
55  cfg.pg = MIKROBUS( mikrobus, MIKROBUS_AN ); \
56  cfg.en = MIKROBUS( mikrobus, MIKROBUS_CS ); \
57  cfg.syn = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
58  cfg.alr = MIKROBUS( mikrobus, MIKROBUS_INT );
59 
65 #define BUCK14_RETVAL uint8_t
66 
67 #define BUCK14_OK 0x00
68 #define BUCK14_INIT_ERROR 0xFF
69 
75 #define BUCK14_SLAVE_ADDR 0x0A
76 
82 #define BUCK14_CMD_OPERATION 0x01
83 #define BUCK14_CMD_ON_OFF_CONFIG 0x02
84 #define BUCK14_CMD_WRITE_PROTECT 0x10
85 
91 #define BUCK14_CMD_CAPABILITY 0x19
92 #define BUCK14_CMD_VOUT_MODE 0x20
93 #define BUCK14_CMD_VOUT_COMMAND 0x21
94 #define BUCK14_CMD_VOUT_TRIM 0x22
95 #define BUCK14_CMD_VOUT_CAL_OFFSET 0x23
96 #define BUCK14_CMD_VOUT_MAX 0x24
97 #define BUCK14_CMD_VOUT_MARGIN_HIGH 0x25
98 #define BUCK14_CMD_VOUT_MARGIN_LOW 0x26
99 #define BUCK14_CMD_VOUT_TRANSITION_RATE 0x27
100 #define BUCK14_CMD_VOUT_DROOP 0x28
101 #define BUCK14_CMD_FREQUENCY_SWITCH 0x33
102 #define BUCK14_CMD_VIN_ON 0x35
103 #define BUCK14_CMD_VIN_OFF 0x36
104 #define BUCK14_CMD_IOUT_CAL_GAIN 0x38
105 #define BUCK14_CMD_IOUT_CAL_OFFSET 0x39
106 
112 #define BUCK14_CMD_FAULT_POWER_GOOD_ON 0x5E
113 #define BUCK14_CMD_FAULT_POWERGOOD_OFF 0x5F
114 #define BUCK14_CMD_VOUT_OC_FAULT_LIMIT 0x40
115 #define BUCK14_CMD_VOUT_UV_FAULT_LIMIT 0x44
116 #define BUCK14_CMD_IOUT_OC_FAULT_LIMIT 0x46
117 #define BUCK14_CMD_OT_FAULT_LIMIT 0x4F
118 #define BUCK14_CMD_OT_WARN_LIMIT 0x51
119 #define BUCK14_CMD_VIN_OV_FAULT_LIMIT 0x55
120 #define BUCK14_CMD_VIN_UV_FAULT_LIMIT 0x59
121 
127 #define BUCK14_CMD_VOUT_OV_FAULT_RESPONSE 0x41
128 #define BUCK14_CMD_VOUT_UV_FAULT_RESPONSE 0x45
129 #define BUCK14_CMD_OT_FAULT_RESPONSE 0x50
130 #define BUCK14_CMD_VIN_OV_FAULT_RESPONSE 0x56
131 #define BUCK14_CMD_VIN_UV_FAULT_RESPONSE 0x5A
132 #define BUCK14_CMD_IOUT_OC_FAULT_RESPONSE 0x47
133 #define BUCK14_CMD_TON_MAX_FAULT_RESPONSE 0x63
134 
140 #define BUCK14_CMD_TON_DELAY 0x60
141 #define BUCK14_CMD_TON_RISE 0x61
142 #define BUCK14_CMD_TOFF_DELAY 0x64
143 #define BUCK14_CMD_TOFF_FALL 0x65
144 #define BUCK14_CMD_TON_MAX_FAULT_LIMIT 0x62
145 
151 #define BUCK14_CMD_CLEAR_FAULTS 0x03
152 #define BUCK14_CMD_STATUS_BYTE 0x78
153 #define BUCK14_CMD_STATUS_WORD 0x79
154 #define BUCK14_CMD_STATUS_VOUT 0x7A
155 #define BUCK14_CMD_STATUS_IOUT 0x7B
156 #define BUCK14_CMD_STATUS_INPUT 0x7C
157 #define BUCK14_CMD_STATUS_TEMPERATURE 0x7D
158 #define BUCK14_CMD_STATUS_CML 0x7E
159 #define BUCK14_CMD_STATUS_MFR_SPECIFIC 0x80
160 
166 #define BUCK14_CMD_READ_VIN 0x88
167 #define BUCK14_CMD_READ_VOUT 0x8B
168 #define BUCK14_CMD_READ_IOUT 0x8C
169 #define BUCK14_CMD_READ_TEMPERATURE_1 0x8D
170 #define BUCK14_CMD_READ_TEMPERATURE_2 0x8E
171 #define BUCK14_CMD_READ_DUTY_CYCLE 0x94
172 #define BUCK14_CMD_READ_FREQUENCY 0x95
173 
179 #define BUCK14_CMD_INTERLEAVE 0x37
180 
186 #define BUCK14_CMD_PMBUS_REVISION 0x98
187 #define BUCK14_CMD_MFR_ID 0x99
188 #define BUCK14_CMD_MFR_MODEL 0x9A
189 #define BUCK14_CMD_MFR_REVISION 0x9B
190 #define BUCK14_CMD_MFR_LOCATION 0x9C
191 #define BUCK14_CMD_MFR_DATE 0x9D
192 #define BUCK14_CMD_MFR_SERIAL 0x9E
193 #define BUCK14_CMD_IC_DEVICE_ID 0xAD
194 #define BUCK14_CMD_IC_DEVICE_REV 0xAE
195 
201 #define BUCK14_CMD_STORE_DEFAULT_ALL 0x11
202 #define BUCK14_CMD_RESTORE_DEFAUL_ALL 0x12
203 #define BUCK14_CMD_STORE_USER_ALL 0x15
204 #define BUCK14_CMD_RESTORE_USER_ALL 0x16
205 
211 #define BUCK14_CMD_ADAPTIVE_MODE 0xD0
212 #define BUCK14_CMD_FEEDBACK_EFFORT 0xD3
213 #define BUCK14_CMD_LOOP_CONFIG 0xD5
214 #define BUCK14_CMD_TEST_MODE 0xD9
215 #define BUCK14_CMD_COMP_MODEL 0xDB
216 #define BUCK14_CMD_STRAP_DISABLE 0xDC
217 #define BUCK14_CMD_MANUF_CONF 0xE0
218 #define BUCK14_CMD_MANUF_LOCK 0xE1
219 #define BUCK14_CMD_MANUF_PASSWD 0xE2
220 #define BUCK14_CMD_USER_CONF 0xE3
221 #define BUCK14_CMD_USER_LOCK 0xE4
222 #define BUCK14_CMD_USER_PASSWD 0xE5
223 #define BUCK14_CMD_SECURITY_LEVVEL 0xE6
224 #define BUCK14_CMD_DEADTIME_GCTRL 0xE7
225 #define BUCK14_CMD_ZETAP 0xE8
226 
232 #define BUCK14_CTRL_DISABLE 0x00
233 #define BUCK14_CTRL_SOFT_DISABLE 0x60
234 #define BUCK14_CTRL_ENABLE_NO_MARGIN 0x80
235 #define BUCK14_CTRL_ENABLE_LOW_MARGIN1 0x96
236 #define BUCK14_CTRL_ENABLE_LOW_MARGIN2 0x98
237 #define BUCK14_CTRL_ENABLE_HIGH_MARGIN1 0xA6
238 #define BUCK14_CTRL_ENABLE_HIGH_MARGIN2 0xA8
239 
245 #define BUCK14_VOUT_MODE_EXPONENT_12 0x14
246 #define BUCK14_VOUT_MODE_EXPONENT_13 0x13
247 #define BUCK14_VOUT_MODE_VALUE 0.000244
248 
254 #define BUCK14_PIN_STATE_HIGH 1
255 #define BUCK14_PIN_STATE_LOW 0
256 
262 #define BUCK14_SUCCESSFUL 0xAA
263 #define BUCK14_ID_ERROR 0xBB
264 #define BUCK14_CMD_ERROR 0xCC
265 #define BUCK14_ERROR 0xDD
266 
272 #define BUCK14_AMODE_CALIB_CONT_RAMP_UP 0x4B
273  // End group macro
276 // --------------------------------------------------------------- PUBLIC TYPES
285 typedef struct
286 {
287  // Output pins
288 
289  digital_out_t en;
290  digital_out_t syn;
291 
292  // Input pins
293 
294  digital_in_t pg;
295  digital_in_t alr;
296 
297  // Modules
298 
299  i2c_master_t i2c;
300 
301  // ctx variable
302 
303  uint8_t slave_address;
304 
305 } buck14_t;
306 
310 typedef struct
311 {
312  // Communication gpio pins
313 
314  pin_name_t scl;
315  pin_name_t sda;
316 
317  // Additional gpio pins
318 
319  pin_name_t pg;
320  pin_name_t en;
321  pin_name_t syn;
322  pin_name_t alr;
323 
324  // static variable
325 
326  uint32_t i2c_speed;
327  uint8_t i2c_address;
328 
329 } buck14_cfg_t;
330  // End types group
332 // ----------------------------------------------- PUBLIC FUNCTION DECLARATIONS
333 
339 #ifdef __cplusplus
340 extern "C"{
341 #endif
342 
352 
361 
370 
381 void buck14_generic_write ( buck14_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
382 
393 void buck14_generic_read ( buck14_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len );
394 
403 void buck14_power_ctrl ( buck14_t *ctx, uint8_t state );
404 
413 void buck14_power_sync ( buck14_t *ctx, uint8_t state );
414 
422 uint8_t buck14_power_good ( buck14_t *ctx );
423 
431 uint8_t buck14_salert ( buck14_t *ctx );
432 
440 uint8_t buck14_check_mfr_id ( buck14_t *ctx );
441 
449 void buck14_reset ( buck14_t *ctx );
450 
458 uint16_t buc14_read_vout ( buck14_t *ctx );
459 
468 uint8_t buc14_write_vout ( buck14_t *ctx, float vout );
469 
470 #ifdef __cplusplus
471 }
472 #endif
473 #endif // _BUCK14_H_
474  // End public_function group
477 
478 // ------------------------------------------------------------------------- END
buck14_t::alr
digital_in_t alr
Definition: buck14.h:295
BUCK14_RETVAL
#define BUCK14_RETVAL
Definition: buck14.h:65
buck14_cfg_setup
void buck14_cfg_setup(buck14_cfg_t *cfg)
Config Object Initialization function.
buck14_t::pg
digital_in_t pg
Definition: buck14.h:294
buck14_default_cfg
void buck14_default_cfg(buck14_t *ctx)
Click Default Configuration function.
buck14_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: buck14.h:326
buck14_t
Click ctx object definition.
Definition: buck14.h:286
buck14_power_good
uint8_t buck14_power_good(buck14_t *ctx)
Get power good function.
buck14_t::en
digital_out_t en
Definition: buck14.h:289
buck14_power_sync
void buck14_power_sync(buck14_t *ctx, uint8_t state)
Set power sync function.
buck14_cfg_t::i2c_address
uint8_t i2c_address
Definition: buck14.h:327
buck14_cfg_t
Click configuration structure definition.
Definition: buck14.h:311
buck14_cfg_t::pg
pin_name_t pg
Definition: buck14.h:319
buck14_init
BUCK14_RETVAL buck14_init(buck14_t *ctx, buck14_cfg_t *cfg)
Initialization function.
buck14_generic_write
void buck14_generic_write(buck14_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic write function.
buck14_cfg_t::syn
pin_name_t syn
Definition: buck14.h:321
buc14_write_vout
uint8_t buc14_write_vout(buck14_t *ctx, float vout)
Set Vout function.
buck14_generic_read
void buck14_generic_read(buck14_t *ctx, uint8_t reg, uint8_t *data_buf, uint8_t len)
Generic read function.
buck14_cfg_t::en
pin_name_t en
Definition: buck14.h:320
buck14_reset
void buck14_reset(buck14_t *ctx)
Reset function.
buck14_t::syn
digital_out_t syn
Definition: buck14.h:290
buck14_t::i2c
i2c_master_t i2c
Definition: buck14.h:299
buck14_t::slave_address
uint8_t slave_address
Definition: buck14.h:303
buck14_power_ctrl
void buck14_power_ctrl(buck14_t *ctx, uint8_t state)
Set power ctrl function.
buck14_cfg_t::scl
pin_name_t scl
Definition: buck14.h:314
buc14_read_vout
uint16_t buc14_read_vout(buck14_t *ctx)
Read Vout function.
buck14_salert
uint8_t buck14_salert(buck14_t *ctx)
Get alert function.
buck14_check_mfr_id
uint8_t buck14_check_mfr_id(buck14_t *ctx)
Fucntion for checking manufacturer id.
buck14_cfg_t::sda
pin_name_t sda
Definition: buck14.h:315
buck14_cfg_t::alr
pin_name_t alr
Definition: buck14.h:322