hbridge14 2.1.0.0
hbridge14.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 HBRIDGE14_H
29#define HBRIDGE14_H
30
31#ifdef __cplusplus
32extern "C"{
33#endif
34
39#ifdef PREINIT_SUPPORTED
40#include "preinit.h"
41#endif
42
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
45 #include "delays.h"
46 #endif
47#endif
48
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_i2c_master.h"
52#include "drv_spi_master.h"
53#include "spi_specifics.h"
54
75#define HBRIDGE14_REG_FAULT_STATUS 0x00
76#define HBRIDGE14_REG_DIAG_STATUS 0x02
77#define HBRIDGE14_REG_IC1_CTRL 0x04
78#define HBRIDGE14_REG_IC2_CTRL 0x06
79#define HBRIDGE14_REG_IC3_CTRL 0x08
80#define HBRIDGE14_REG_IC4_CTRL 0x0A
81#define HBRIDGE14_REG_INPUT_PORT 0x00
82#define HBRIDGE14_REG_OUTPUT_PORT 0x01
83#define HBRIDGE14_REG_POLARITY_INV 0x02
84#define HBRIDGE14_REG_CONFIG 0x03
85
86 // hbridge14_reg
87
103#define HBRIDGE14_DIS_ON 0x01
104#define HBRIDGE14_DIS_OFF 0x00
105
111#define HBRIDGE14_SLEEP_ON 0x01
112#define HBRIDGE14_SLEEP_OFF 0x00
113
119#define HBRIDGE14_PIN_STATE_HIGH 0x01
120#define HBRIDGE14_PIN_STATE_LOW 0x00
121
127#define HBRIDGE14_DRIVE_MOTOR_CW 0x00
128#define HBRIDGE14_DRIVE_MOTOR_CCW 0x01
129#define HBRIDGE14_DRIVE_MOTOR_BRAKE 0x02
130#define HBRIDGE14_DRIVE_MOTOR_COASTING 0x03
131
137#define HBRIDGE14_NONE_PIN 0x00
138#define HBRIDGE14_SLP_PIN 0x01
139#define HBRIDGE14_FLT_PIN 0x02
140#define HBRIDGE14_DIS_PIN 0x04
141#define HBRIDGE14_ALL_PIN 0x07
142
148#define HBRIDGE14_TOF_80_US 0xC0
149#define HBRIDGE14_TOF_60_US 0x80
150#define HBRIDGE14_TOF_40_US 0x40
151#define HBRIDGE14_TOF_20_US 0x00
152#define HBRIDGE14_SPI_IN_EN 0x20
153#define HBRIDGE14_SPI_IN_DIS 0x00
154#define HBRIDGE14_S_SR_2_6V_US 0x1C
155#define HBRIDGE14_S_SR_5_3V_US 0x18
156#define HBRIDGE14_S_SR_7_9V_US 0x14
157#define HBRIDGE14_S_SR_10_8V_US 0x10
158#define HBRIDGE14_S_SR_13_V_US 0x0C
159#define HBRIDGE14_S_SR_18_3V_US 0x08
160#define HBRIDGE14_S_SR_34_V_US 0x04
161#define HBRIDGE14_S_SR_53_2V_US 0x00
162#define HBRIDGE14_MODE_DISABLED 0x03
163#define HBRIDGE14_MODE_INDEPENDENT 0x02
164#define HBRIDGE14_MODE_PWM 0x01
165#define HBRIDGE14_MODE_PH_EN 0x00
166
172#define HBRIDGE14_ITRIP_REP 0x80
173#define HBRIDGE14_TSD_MODE_AUTO 0x40
174#define HBRIDGE14_OTW_REP 0x20
175#define HBRIDGE14_DIS_CPUV 0x10
176#define HBRIDGE14_OCP_TRETRY_4_MS 0x0C
177#define HBRIDGE14_OCP_TRETRY_2_MS 0x08
178#define HBRIDGE14_OCP_TRETRY_1_MS 0x04
179#define HBRIDGE14_OCP_TRETRY_500_NS 0x00
180#define HBRIDGE14_OCP_MODE_NOT_REPORT 0x03
181#define HBRIDGE14_OCP_MODE_REPORT 0x02
182#define HBRIDGE14_OCP_MODE_RETRING 0x01
183#define HBRIDGE14_OCP_MODE_LATCHED 0x00
184
190#define HBRIDGE14_CLR_FLT 0x80
191#define HBRIDGE14_LOCK_REG 0x30
192#define HBRIDGE14_UNLOCK_REG 0x40
193#define HBRIDGE14_OUT1_DIS 0x08
194#define HBRIDGE14_OUT2_DIS 0x04
195#define HBRIDGE14_EN_IN1 0x02
196#define HBRIDGE14_PH_IN2 0x01
197
203#define HBRIDGE14_EN_OLP 0x40
204#define HBRIDGE14_OLP_DLY_300_US 0x00
205#define HBRIDGE14_OLP_DLY_1_2_MS 0x20
206#define HBRIDGE14_EN_OLA 0x10
207#define HBRIDGE14_ITRIP_LVL_7_A 0x0C
208#define HBRIDGE14_ITRIP_LVL_6_5_A 0x08
209#define HBRIDGE14_ITRIP_LVL_5_4_A 0x04
210#define HBRIDGE14_ITRIP_LVL_4_A 0x00
211#define HBRIDGE14_DIS_ITRIP_OUT1_OUT2 0x03
212#define HBRIDGE14_DIS_ITRIP_OUT2 0x02
213#define HBRIDGE14_DIS_ITRIP_OUT1 0x01
214#define HBRIDGE14_DIS_ITRIP 0x00
215
221#define HBRIDGE14_DEVICE_ADDRESS_A1A0_00 0x70
222#define HBRIDGE14_DEVICE_ADDRESS_A1A0_01 0x71
223#define HBRIDGE14_DEVICE_ADDRESS_A1A0_10 0x72
224#define HBRIDGE14_DEVICE_ADDRESS_A1A0_11 0x73
225
234#define HBRIDGE14_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
235#define HBRIDGE14_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
236
237 // hbridge14_set
238
253#define HBRIDGE14_MAP_MIKROBUS( cfg, mikrobus ) \
254 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
255 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
256 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
257 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
258 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
259 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
260 cfg.in2 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
261 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
262 cfg.in1 = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
263 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
264
265 // hbridge14_map
266 // hbridge14
267
272typedef struct hbridge14_s
273{
274 digital_out_t in2;
275 digital_out_t rst;
276 digital_out_t in1;
278 digital_in_t int_pin;
280 i2c_master_t i2c;
281 spi_master_t spi;
284 pin_name_t chip_select;
287
292typedef struct
293{
294 pin_name_t scl;
295 pin_name_t sda;
296 pin_name_t miso;
297 pin_name_t mosi;
298 pin_name_t sck;
299 pin_name_t cs;
300 pin_name_t in2;
301 pin_name_t rst;
302 pin_name_t in1;
303 pin_name_t int_pin;
305 uint32_t i2c_speed;
306 uint8_t i2c_address;
308 uint32_t spi_speed;
309 spi_master_mode_t spi_mode;
310 spi_master_chip_select_polarity_t cs_polarity;
313
324
341
356
370
385err_t hbridge14_generic_write ( hbridge14_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len );
386
401err_t hbridge14_generic_read ( hbridge14_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len );
402
412void hbridge14_set_in1_pin ( hbridge14_t *ctx, uint8_t pin_state );
413
423void hbridge14_set_rst_pin ( hbridge14_t *ctx, uint8_t pin_state );
424
434
444
459err_t hbridge14_register_write ( hbridge14_t *ctx, uint8_t reg, uint8_t data_in );
460
474err_t hbridge14_register_read ( hbridge14_t *ctx, uint8_t reg, uint8_t *data_out );
475
490err_t hbridge14_port_expander_write ( hbridge14_t *ctx, uint8_t reg, uint8_t data_in );
491
505err_t hbridge14_port_expander_read ( hbridge14_t *ctx, uint8_t reg, uint8_t *data_out );
506
519err_t hbridge14_set_pins ( hbridge14_t *ctx, uint8_t set_mask, uint8_t clr_mask );
520
532err_t hbridge14_disable_state ( hbridge14_t *ctx, uint8_t dis_state );
533
545err_t hbridge14_sleep_state ( hbridge14_t *ctx, uint8_t sleep_state );
546
558err_t hbridge14_drive_motor ( hbridge14_t *ctx, uint8_t state );
559
560#ifdef __cplusplus
561}
562#endif
563#endif // HBRIDGE14_H
564
565 // hbridge14
566
567// ------------------------------------------------------------------------ END
err_t hbridge14_port_expander_read(hbridge14_t *ctx, uint8_t reg, uint8_t *data_out)
H-Bridge 14 port ecpander read register function.
uint8_t hbridge14_get_int_pin(hbridge14_t *ctx)
H-Bridge 14 get INT pin function.
err_t hbridge14_drive_motor(hbridge14_t *ctx, uint8_t state)
H-Bridge 14 drive motor function.
void hbridge14_set_in1_pin(hbridge14_t *ctx, uint8_t pin_state)
H-Bridge 14 set IN1 pin function.
err_t hbridge14_disable_state(hbridge14_t *ctx, uint8_t dis_state)
H-Bridge 14 control disable function.
err_t hbridge14_register_write(hbridge14_t *ctx, uint8_t reg, uint8_t data_in)
H-Bridge 14 data register writing function.
err_t hbridge14_sleep_state(hbridge14_t *ctx, uint8_t sleep_state)
H-Bridge 14 control sleep function.
err_t hbridge14_register_read(hbridge14_t *ctx, uint8_t reg, uint8_t *data_out)
H-Bridge 14 data register reading function.
void hbridge14_cfg_setup(hbridge14_cfg_t *cfg)
H-Bridge 14 configuration object setup function.
err_t hbridge14_generic_write(hbridge14_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
H-Bridge 14 data writing function.
err_t hbridge14_set_pins(hbridge14_t *ctx, uint8_t set_mask, uint8_t clr_mask)
H-Bridge 14 set pins function.
err_t hbridge14_init(hbridge14_t *ctx, hbridge14_cfg_t *cfg)
H-Bridge 14 initialization function.
uint8_t hbridge14_get_ip_pin(hbridge14_t *ctx)
H-Bridge 14 get IP pin function.
err_t hbridge14_generic_read(hbridge14_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
H-Bridge 14 data reading function.
void hbridge14_set_rst_pin(hbridge14_t *ctx, uint8_t pin_state)
H-Bridge 14 set RST pin function.
err_t hbridge14_port_expander_write(hbridge14_t *ctx, uint8_t reg, uint8_t data_in)
H-Bridge 14 port ecpander write register function.
err_t hbridge14_default_cfg(hbridge14_t *ctx)
H-Bridge 14 default configuration function.
hbridge14_return_value_t
H-Bridge 14 Click return value data.
Definition hbridge14.h:319
@ HBRIDGE14_ERROR
Definition hbridge14.h:321
@ HBRIDGE14_OK
Definition hbridge14.h:320
struct hbridge14_s hbridge14_t
H-Bridge 14 Click context object.
This file contains SPI specific macros, functions, etc.
H-Bridge 14 Click configuration object.
Definition hbridge14.h:293
uint32_t i2c_speed
Definition hbridge14.h:305
spi_master_chip_select_polarity_t cs_polarity
Definition hbridge14.h:310
pin_name_t in2
Definition hbridge14.h:300
pin_name_t sck
Definition hbridge14.h:298
spi_master_mode_t spi_mode
Definition hbridge14.h:309
pin_name_t mosi
Definition hbridge14.h:297
uint32_t spi_speed
Definition hbridge14.h:308
pin_name_t scl
Definition hbridge14.h:294
pin_name_t in1
Definition hbridge14.h:302
pin_name_t int_pin
Definition hbridge14.h:303
pin_name_t miso
Definition hbridge14.h:296
pin_name_t sda
Definition hbridge14.h:295
pin_name_t rst
Definition hbridge14.h:301
pin_name_t cs
Definition hbridge14.h:299
uint8_t i2c_address
Definition hbridge14.h:306
H-Bridge 14 Click context object.
Definition hbridge14.h:273
digital_out_t in2
Definition hbridge14.h:274
spi_master_t spi
Definition hbridge14.h:281
digital_in_t int_pin
Definition hbridge14.h:278
i2c_master_t i2c
Definition hbridge14.h:280
digital_out_t rst
Definition hbridge14.h:275
uint8_t slave_address
Definition hbridge14.h:283
pin_name_t chip_select
Definition hbridge14.h:284
digital_out_t in1
Definition hbridge14.h:276