hbridge13 2.1.0.0
hbridge13.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 HBRIDGE13_H
29#define HBRIDGE13_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
35#include "drv_digital_out.h"
36#include "drv_digital_in.h"
37#include "drv_i2c_master.h"
38#include "drv_analog_in.h"
39#include "drv_pwm.h"
40
61#define HBRIDGE13_REG_INPUT_PORT 0x00
62#define HBRIDGE13_REG_OUTPUT_PORT 0x01
63#define HBRIDGE13_REG_POLARITY_INV 0x02
64#define HBRIDGE13_REG_CONFIG 0x03
65 // hbridge13_reg
67
82#define HBRIDGE13_NONE_PIN 0x00
83#define HBRIDGE13_AIN1_IO_PIN 0x01
84#define HBRIDGE13_AIN2_IO_PIN 0x02
85#define HBRIDGE13_PWM_SW1_PIN 0x04
86#define HBRIDGE13_PWM_SW2_PIN 0x08
87#define HBRIDGE13_BIN1_IO_PIN 0x10
88#define HBRIDGE13_BIN2_IO_PIN 0x20
89#define HBRIDGE13_AN_SW_PIN 0x40
90#define HBRIDGE13_FLT_PIN 0x80
91#define HBRIDGE13_ALL_PIN 0xFF
92
97#define HBRIDGE13_DIR_FORWARD 0x01
98#define HBRIDGE13_DIR_REVERSE 0x00
99
104#define HBRIDGE13_AN_A_PIN_SEL 0x01
105#define HBRIDGE13_AN_B_PIN_SEL 0x00
106
112#define HBRIDGE13_DEVICE_ADDRESS_A1A0_00 0x70
113#define HBRIDGE13_DEVICE_ADDRESS_A1A0_01 0x71
114#define HBRIDGE13_DEVICE_ADDRESS_A1A0_10 0x72
115#define HBRIDGE13_DEVICE_ADDRESS_A1A0_11 0x73
116
121#define HBRIDGE13_ADC_RESOLUTION 0x0FFF
122#define HBRIDGE13_VREF_3V3 3.3
123#define HBRIDGE13_VREF_5V 5.0
124
129#define HBRIDGE13_DEF_FREQ 5000
130 // hbridge13_set
132
147#define HBRIDGE13_MAP_MIKROBUS( cfg, mikrobus ) \
148 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
149 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
150 cfg.an = MIKROBUS( mikrobus, MIKROBUS_AN ); \
151 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
152 cfg.pwm = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
153 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
154 // hbridge13_map // hbridge13
157
162typedef struct
163{
164 // Output pins
165 digital_out_t rst;
167 // Input pins
168 digital_in_t int_pin;
170 // Modules
171 i2c_master_t i2c;
172 pwm_t pwm;
173 analog_in_t adc;
175 // I2C slave address
178 // ADC reference voltage
179 float vref;
182 // PWM variable
183 uint32_t pwm_freq;
186
191typedef struct
192{
193 pin_name_t scl;
194 pin_name_t sda;
196 pin_name_t pwm;
198 pin_name_t an;
199 pin_name_t rst;
200 pin_name_t int_pin;
202 uint32_t i2c_speed;
203 uint8_t i2c_address;
205 // Static variable
206 uint32_t dev_pwm_freq;
207 analog_in_resolution_t resolution;
208 float vref;
211
216typedef enum
217{
219 HBRIDGE13_ERROR = -1
220
222
239
254
268
283err_t hbridge13_generic_write ( hbridge13_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
284
299err_t hbridge13_generic_read ( hbridge13_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
300
314err_t hbridge13_write_reg ( hbridge13_t *ctx, uint8_t reg, uint8_t data_out );
315
329err_t hbridge13_read_reg ( hbridge13_t *ctx, uint8_t reg, uint8_t *data_out );
330
343err_t hbridge13_set_pins ( hbridge13_t *ctx, uint8_t set_mask, uint8_t clr_mask );
344
356err_t hbridge13_set_duty_cycle ( hbridge13_t *ctx, float duty_cycle );
357
369
381
393
405
418err_t hbridge13_set_direction ( hbridge13_t *ctx, uint8_t dir_set, uint8_t speed );
419
431err_t hbridge13_read_raw_adc ( hbridge13_t *ctx, uint16_t *raw_adc );
432
444err_t hbridge13_read_voltage ( hbridge13_t *ctx, float *voltage );
445
457err_t hbridge13_set_vref ( hbridge13_t *ctx, float vref );
458
471err_t hbridge13_get_an_voltage ( hbridge13_t *ctx, float *voltage, uint8_t an_sel );
472
484err_t hbridge13_get_flt_state ( hbridge13_t *ctx, uint8_t *pin_state );
485
486#ifdef __cplusplus
487}
488#endif
489#endif // HBRIDGE13_H
490 // hbridge13
492
493// ------------------------------------------------------------------------ END
err_t hbridge13_pwm_stop(hbridge13_t *ctx)
H-Bridge 13 stop PWM module.
err_t hbridge13_write_reg(hbridge13_t *ctx, uint8_t reg, uint8_t data_out)
H-Bridge 13 write register function.
err_t hbridge13_set_brake(hbridge13_t *ctx)
H-Bridge 13 set brake function.
err_t hbridge13_pwm_start(hbridge13_t *ctx)
H-Bridge 13 start PWM module.
err_t hbridge13_set_direction(hbridge13_t *ctx, uint8_t dir_set, uint8_t speed)
H-Bridge 13 set direction function.
err_t hbridge13_generic_write(hbridge13_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
H-Bridge 13 I2C writing function.
err_t hbridge13_init(hbridge13_t *ctx, hbridge13_cfg_t *cfg)
H-Bridge 13 initialization function.
err_t hbridge13_get_flt_state(hbridge13_t *ctx, uint8_t *pin_state)
H-Bridge 13 get nFAULT state function.
err_t hbridge13_read_reg(hbridge13_t *ctx, uint8_t reg, uint8_t *data_out)
H-Bridge 13 read register function.
err_t hbridge13_get_an_voltage(hbridge13_t *ctx, float *voltage, uint8_t an_sel)
H-Bridge 13 get xIPROPI voltage function.
err_t hbridge13_generic_read(hbridge13_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
H-Bridge 13 I2C reading function.
err_t hbridge13_default_cfg(hbridge13_t *ctx)
H-Bridge 13 default configuration function.
err_t hbridge13_set_vref(hbridge13_t *ctx, float vref)
H-Bridge 13 set vref function.
err_t hbridge13_set_pins(hbridge13_t *ctx, uint8_t set_mask, uint8_t clr_mask)
H-Bridge 13 set output pin state function.
err_t hbridge13_set_coast(hbridge13_t *ctx)
H-Bridge 13 set coast function.
void hbridge13_cfg_setup(hbridge13_cfg_t *cfg)
H-Bridge 13 configuration object setup function.
err_t hbridge13_read_voltage(hbridge13_t *ctx, float *voltage)
H-Bridge 13 read voltage level function.
err_t hbridge13_set_duty_cycle(hbridge13_t *ctx, float duty_cycle)
H-Bridge 13 sets PWM duty cycle.
err_t hbridge13_read_raw_adc(hbridge13_t *ctx, uint16_t *raw_adc)
H-Bridge 13 read raw ADC value function.
hbridge13_return_value_t
H-Bridge 13 Click return value data.
Definition: hbridge13.h:217
@ HBRIDGE13_OK
Definition: hbridge13.h:218
@ HBRIDGE13_ERROR
Definition: hbridge13.h:219
H-Bridge 13 Click configuration object.
Definition: hbridge13.h:192
analog_in_resolution_t resolution
Definition: hbridge13.h:207
float vref
Definition: hbridge13.h:208
uint32_t i2c_speed
Definition: hbridge13.h:202
uint32_t dev_pwm_freq
Definition: hbridge13.h:206
pin_name_t scl
Definition: hbridge13.h:193
pin_name_t int_pin
Definition: hbridge13.h:200
pin_name_t pwm
Definition: hbridge13.h:196
pin_name_t sda
Definition: hbridge13.h:194
pin_name_t rst
Definition: hbridge13.h:199
pin_name_t an
Definition: hbridge13.h:198
uint8_t i2c_address
Definition: hbridge13.h:203
H-Bridge 13 Click context object.
Definition: hbridge13.h:163
float vref
Definition: hbridge13.h:179
uint32_t pwm_freq
Definition: hbridge13.h:183
digital_in_t int_pin
Definition: hbridge13.h:168
i2c_master_t i2c
Definition: hbridge13.h:171
digital_out_t rst
Definition: hbridge13.h:165
uint8_t slave_address
Definition: hbridge13.h:176
analog_in_t adc
Definition: hbridge13.h:173
pwm_t pwm
Definition: hbridge13.h:172