hbridge12 2.1.0.0
hbridge12.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 HBRIDGE12_H
29#define HBRIDGE12_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_spi_master.h"
38#include "spi_specifics.h"
39
60#define HBRIDGE12_ADDR_AB 0x00
61#define HBRIDGE12_ADDR_CD 0x01
62 // hbridge12_reg
64
79#define HBRIDGE12_CURRENT_SCALE_20_PER 0x00
80#define HBRIDGE12_CURRENT_SCALE_38_PER 0x04
81#define HBRIDGE12_CURRENT_SCALE_56_PER 0x02
82#define HBRIDGE12_CURRENT_SCALE_71_PER 0x06
83#define HBRIDGE12_CURRENT_SCALE_83_PER 0x01
84#define HBRIDGE12_CURRENT_SCALE_92_PER 0x05
85#define HBRIDGE12_CURRENT_SCALE_98_PER 0x03
86#define HBRIDGE12_CURRENT_SCALE_100_PER 0x07
87
92#define HBRIDGE12_PHASE_OUT1_H_OUT2_L 0x01
93#define HBRIDGE12_PHASE_OUT1_L_OUT2_H 0x00
94
99#define HBRIDGE12_ENABE_BRIDGE_OUTPUT 0x01
100#define HBRIDGE12_DISABE_BRIDGE_OUTPUT 0x00
101
106#define HBRIDGE12_AB_BRIDGE_SEL 0x00
107#define HBRIDGE12_CD_BRIDGE_SEL 0x01
108
113#define HBRIDGE12_PIN_STATE_LOW 0x00
114#define HBRIDGE12_PIN_STATE_HIGH 0x01
115
124#define HBRIDGE12_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
125#define HBRIDGE12_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
126 // hbridge12_set
128
143#define HBRIDGE12_MAP_MIKROBUS( cfg, mikrobus ) \
144 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
145 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
146 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
147 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
148 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
149 cfg.slp = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
150 cfg.stb = MIKROBUS( mikrobus, MIKROBUS_INT )
151 // hbridge12_map // hbridge12
154
159typedef struct
160{
161 // Output pins
162 digital_out_t rst;
163 digital_out_t slp;
164 digital_out_t stb;
166 // Modules
167 spi_master_t spi;
169 pin_name_t chip_select;
172
177typedef struct
178{
179 // Communication gpio pins
180 pin_name_t miso;
181 pin_name_t mosi;
182 pin_name_t sck;
183 pin_name_t cs;
185 // Additional gpio pins
186 pin_name_t rst;
187 pin_name_t slp;
188 pin_name_t stb;
190 // static variable
191 uint32_t spi_speed;
192 spi_master_mode_t spi_mode;
193 spi_master_chip_select_polarity_t cs_polarity;
196
201typedef struct
202{
203 uint8_t addr;
204 uint8_t ch1_en;
205 uint8_t ch1_phase;
207 uint8_t ch1_decay;
208 uint8_t ch2_en;
209 uint8_t ch2_phase;
211 uint8_t ch2_decay;
212
214
219typedef enum
220{
222 HBRIDGE12_ERROR = -1
223
225
242
257
271
281void hbridge12_set_rst ( hbridge12_t *ctx, uint8_t pin_state );
282
292void hbridge12_set_slp ( hbridge12_t *ctx, uint8_t pin_state );
293
303void hbridge12_set_strobe ( hbridge12_t *ctx, uint8_t pin_state );
304
314
325void hbridge12_get_settings ( hbridge12_t *ctx, uint8_t channel_sel, hbridge12_config_t *config_data );
326
338void hbridge12_set_settings ( hbridge12_t *ctx, uint8_t channel_sel, hbridge12_config_t config_data );
339
340
354
367void hbridge12_set_current_scale ( hbridge12_t *ctx, uint8_t channel_sel, uint8_t out1_curr_scale,
368 uint8_t out2_curr_scale );
369
382void hbridge12_set_decay ( hbridge12_t *ctx, uint8_t channel_sel, uint8_t out1_decay,
383 uint8_t out2_decay );
384
396err_t hbridge12_turn_clockwise ( hbridge12_t *ctx, uint8_t channel_sel );
397
409err_t hbridge12_turn_counterclockwise ( hbridge12_t *ctx, uint8_t channel_sel );
410
422err_t hbridge12_turn_brake_on ( hbridge12_t *ctx, uint8_t channel_sel );
423
435err_t hbridge12_freewheeling_on ( hbridge12_t *ctx, uint8_t channel_sel );
436
437#ifdef __cplusplus
438}
439#endif
440#endif // HBRIDGE12_H
441 // hbridge12
443
444// ------------------------------------------------------------------------ END
void hbridge12_set_decay(hbridge12_t *ctx, uint8_t channel_sel, uint8_t out1_decay, uint8_t out2_decay)
H-Bridge 12 set decay function.
void hbridge12_set_settings(hbridge12_t *ctx, uint8_t channel_sel, hbridge12_config_t config_data)
H-Bridge 12 set settings function.
err_t hbridge12_init(hbridge12_t *ctx, hbridge12_cfg_t *cfg)
H-Bridge 12 initialization function.
void hbridge12_cfg_setup(hbridge12_cfg_t *cfg)
H-Bridge 12 configuration object setup function.
err_t hbridge12_turn_clockwise(hbridge12_t *ctx, uint8_t channel_sel)
H-Bridge 12 turn motor clockwise function.
err_t hbridge12_turn_counterclockwise(hbridge12_t *ctx, uint8_t channel_sel)
H-Bridge 12 turn motor counterclockwise function.
err_t hbridge12_freewheeling_on(hbridge12_t *ctx, uint8_t channel_sel)
H-Bridge 12 set motor into freewheeling mode function.
err_t hbridge12_turn_brake_on(hbridge12_t *ctx, uint8_t channel_sel)
H-Bridge 12 turn motor brake on function.
void hbridge12_set_rst(hbridge12_t *ctx, uint8_t pin_state)
H-Bridge 12 set RST pin state function.
void hbridge12_set_current_scale(hbridge12_t *ctx, uint8_t channel_sel, uint8_t out1_curr_scale, uint8_t out2_curr_scale)
H-Bridge 12 set current scale function.
err_t hbridge12_write_config(hbridge12_t *ctx, hbridge12_config_t config_data)
H-Bridge 12 write settings function.
void hbridge12_set_strobe(hbridge12_t *ctx, uint8_t pin_state)
H-Bridge 12 set STB pin state function.
void hbridge12_get_settings(hbridge12_t *ctx, uint8_t channel_sel, hbridge12_config_t *config_data)
H-Bridge 12 get settings function.
void hbridge12_set_slp(hbridge12_t *ctx, uint8_t pin_state)
H-Bridge 12 set SLP pin state function.
void hbridge12_generate_strobe(hbridge12_t *ctx)
H-Bridge 12 generate strobe signal function.
err_t hbridge12_default_cfg(hbridge12_t *ctx)
H-Bridge 12 default configuration function.
hbridge12_return_value_t
H-Bridge 12 Click return value data.
Definition: hbridge12.h:220
@ HBRIDGE12_OK
Definition: hbridge12.h:221
@ HBRIDGE12_ERROR
Definition: hbridge12.h:222
This file contains SPI specific macros, functions, etc.
H-Bridge 12 Click configuration object.
Definition: hbridge12.h:178
pin_name_t slp
Definition: hbridge12.h:187
spi_master_chip_select_polarity_t cs_polarity
Definition: hbridge12.h:193
pin_name_t sck
Definition: hbridge12.h:182
spi_master_mode_t spi_mode
Definition: hbridge12.h:192
pin_name_t mosi
Definition: hbridge12.h:181
uint32_t spi_speed
Definition: hbridge12.h:191
pin_name_t miso
Definition: hbridge12.h:180
pin_name_t rst
Definition: hbridge12.h:186
pin_name_t stb
Definition: hbridge12.h:188
pin_name_t cs
Definition: hbridge12.h:183
H-Bridge 12 Click configuration structure.
Definition: hbridge12.h:202
uint8_t ch2_decay
Definition: hbridge12.h:211
uint8_t ch1_cur_scale
Definition: hbridge12.h:206
uint8_t ch2_cur_scale
Definition: hbridge12.h:210
uint8_t ch1_en
Definition: hbridge12.h:204
uint8_t ch2_phase
Definition: hbridge12.h:209
uint8_t ch2_en
Definition: hbridge12.h:208
uint8_t ch1_phase
Definition: hbridge12.h:205
uint8_t addr
Definition: hbridge12.h:203
uint8_t ch1_decay
Definition: hbridge12.h:207
H-Bridge 12 Click context object.
Definition: hbridge12.h:160
spi_master_t spi
Definition: hbridge12.h:167
digital_out_t slp
Definition: hbridge12.h:163
digital_out_t stb
Definition: hbridge12.h:164
digital_out_t rst
Definition: hbridge12.h:162
pin_name_t chip_select
Definition: hbridge12.h:169