brushless14  2.0.0.0
brushless14.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 BRUSHLESS14_H
29 #define BRUSHLESS14_H
30 
31 #ifdef __cplusplus
32 extern "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_pwm.h"
39 
60 #define BRUSHLESS14_DAC_REG_CONFIG 0x01
61 #define BRUSHLESS14_DAC_REG_STATUS_TRIGGER 0x02
62 #define BRUSHLESS14_DAC_REG_BRDCAST 0x03
63 #define BRUSHLESS14_DAC_REG_DAC_A_DATA 0x08
64 #define BRUSHLESS14_DAC_REG_DAC_B_DATA 0x09
65 #define BRUSHLESS14_DAC_REG_DAC_C_DATA 0x0A
66 #define BRUSHLESS14_DAC_REG_DAC_D_DATA 0x0B
67 #define BRUSHLESS14_DAC_REG_DAC_E_DATA 0x0C
68 #define BRUSHLESS14_DAC_REG_DAC_F_DATA 0x0D
69 #define BRUSHLESS14_DAC_REG_DAC_G_DATA 0x0E
70 #define BRUSHLESS14_DAC_REG_DAC_H_DATA 0x0F
71 
72 #define BRUSHLESS14_PE_REG_INPUT_PORT 0x00
73 #define BRUSHLESS14_PE_REG_OUTPUT_PORT 0x01
74 #define BRUSHLESS14_PE_REG_POLARITY 0x02
75 #define BRUSHLESS14_PE_REG_CONFIGURATION 0x03
76  // brushless14_reg
78 
93 #define BRUSHLESS14_DAC_ID 0x0500
94 
100 #define BRUSHLESS14_EXPANDER_SLAVE_ADDR 0x73
101 #define BRUSHLESS14_DAC_SLAVE_ADDR 0x48
102 
107 #define BRUSHLESS14_DEF_FREQ 5000
108  // brushless14_set
110 
125 #define BRUSHLESS14_MAP_MIKROBUS( cfg, mikrobus ) \
126  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
127  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
128  cfg.dir = MIKROBUS( mikrobus, MIKROBUS_RST ); \
129  cfg.pwm = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
130  cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
131  // brushless14_map // brushless14
134 
139 typedef struct
140 {
141  // Output pins
142  digital_out_t dir;
144  // Input pins
145  digital_in_t int_pin;
147  // Modules
148  i2c_master_t i2c;
149  pwm_t pwm;
151  // I2C slave address
152  uint8_t slave_address;
153  // ctx variable
154  uint32_t pwm_freq;
156 } brushless14_t;
157 
162 typedef struct
163 {
164  pin_name_t scl;
165  pin_name_t sda;
166  pin_name_t pwm;
168  pin_name_t dir;
169  pin_name_t int_pin;
171  uint32_t i2c_speed;
172  uint8_t i2c_address;
173  uint32_t dev_pwm_freq;
176 
181 typedef enum
182 {
184  BRUSHLESS14_ERROR = -1
185 
187 
204 
219 
234 
246 err_t brushless14_set_duty_cycle ( brushless14_t *ctx, float duty_cycle );
247 
258 err_t brushless14_pwm_stop ( brushless14_t *ctx );
259 
270 err_t brushless14_pwm_start ( brushless14_t *ctx );
271 
284 err_t brushless14_dac_write ( brushless14_t *ctx, uint8_t reg, uint16_t in_data );
285 
298 err_t brushless14_dac_read ( brushless14_t *ctx, uint8_t reg, uint16_t *out_data );
299 
311 err_t brushless14_set_adj0 ( brushless14_t *ctx, uint16_t m_voltage );
312 
324 err_t brushless14_set_adj1 ( brushless14_t *ctx, uint16_t m_voltage );
325 
337 err_t brushless14_set_adj2 ( brushless14_t *ctx, uint16_t m_voltage );
338 
350 err_t brushless14_set_adj3 ( brushless14_t *ctx, uint16_t m_voltage );
351 
363 err_t brushless14_set_fpwm ( brushless14_t *ctx, uint16_t m_voltage );
364 
376 err_t brushless14_set_la ( brushless14_t *ctx, uint16_t m_voltage );
377 
390 err_t brushless14_port_expander_write ( brushless14_t *ctx, uint8_t reg, uint8_t in_data );
391 
404 err_t brushless14_port_expander_read ( brushless14_t *ctx, uint8_t reg, uint8_t *out_data );
405 
417 err_t brushless14_set_slop ( brushless14_t *ctx, uint8_t state );
418 
430 err_t brushless14_set_rot ( brushless14_t *ctx, uint8_t state );
431 
443 err_t brushless14_set_fst ( brushless14_t *ctx, uint8_t state );
444 
456 err_t brushless14_set_sel_adj ( brushless14_t *ctx, uint8_t state );
457 
469 err_t brushless14_set_lap ( brushless14_t *ctx, uint8_t state );
470 
482 err_t brushless14_get_fg_out ( brushless14_t *ctx, uint8_t *state );
483 
495 err_t brushless14_get_ld_out ( brushless14_t *ctx, uint8_t *state );
496 
504 uint8_t brushless14_get_int ( brushless14_t *ctx );
505 
514 void brushless14_set_dir ( brushless14_t *ctx, uint8_t state );
515 
516 #ifdef __cplusplus
517 }
518 #endif
519 #endif // BRUSHLESS14_H
520  // brushless14
522 
523 // ------------------------------------------------------------------------ END
brushless14_pwm_stop
err_t brushless14_pwm_stop(brushless14_t *ctx)
Brushless 14 stop PWM module.
brushless14_default_cfg
err_t brushless14_default_cfg(brushless14_t *ctx)
Brushless 14 default configuration function.
brushless14_set_rot
err_t brushless14_set_rot(brushless14_t *ctx, uint8_t state)
Set rotation speed of lead angle switching.
brushless14_set_fpwm
err_t brushless14_set_fpwm(brushless14_t *ctx, uint16_t m_voltage)
Set PWM frequency select input.
BRUSHLESS14_OK
Definition: brushless14.h:182
brushless14_cfg_t
Brushless 14 Click configuration object.
Definition: brushless14.h:161
brushless14_set_dir
void brushless14_set_dir(brushless14_t *ctx, uint8_t state)
Set dirrection pin state.
brushless14_set_adj3
err_t brushless14_set_adj3(brushless14_t *ctx, uint16_t m_voltage)
Set Adjusted input 3.
brushless14_set_slop
err_t brushless14_set_slop(brushless14_t *ctx, uint8_t state)
Set soft switching select.
brushless14_get_int
uint8_t brushless14_get_int(brushless14_t *ctx)
Get port expadner interrupt.
brushless14_cfg_setup
void brushless14_cfg_setup(brushless14_cfg_t *cfg)
Brushless 14 configuration object setup function.
brushless14_port_expander_read
err_t brushless14_port_expander_read(brushless14_t *ctx, uint8_t reg, uint8_t *out_data)
Port expander reading function.
brushless14_port_expander_write
err_t brushless14_port_expander_write(brushless14_t *ctx, uint8_t reg, uint8_t in_data)
Port expander write function.
brushless14_dac_read
err_t brushless14_dac_read(brushless14_t *ctx, uint8_t reg, uint16_t *out_data)
DAC reading function.
brushless14_set_adj2
err_t brushless14_set_adj2(brushless14_t *ctx, uint16_t m_voltage)
Set Adjusted input 2.
brushless14_set_la
err_t brushless14_set_la(brushless14_t *ctx, uint16_t m_voltage)
Set lead angle setting input.
brushless14_pwm_start
err_t brushless14_pwm_start(brushless14_t *ctx)
Brushless 14 start PWM module.
brushless14_get_fg_out
err_t brushless14_get_fg_out(brushless14_t *ctx, uint8_t *state)
Get rotation speed.
brushless14_t
Brushless 14 Click context object.
Definition: brushless14.h:138
brushless14_set_fst
err_t brushless14_set_fst(brushless14_t *ctx, uint8_t state)
Set forced commutation frequency select.
brushless14_set_duty_cycle
err_t brushless14_set_duty_cycle(brushless14_t *ctx, float duty_cycle)
Brushless 14 sets PWM duty cycle.
brushless14_dac_write
err_t brushless14_dac_write(brushless14_t *ctx, uint8_t reg, uint16_t in_data)
DAC write function.
BRUSHLESS14_ERROR
Definition: brushless14.h:183
brushless14_set_sel_adj
err_t brushless14_set_sel_adj(brushless14_t *ctx, uint8_t state)
Set PWM duty function setting.
brushless14_set_adj1
err_t brushless14_set_adj1(brushless14_t *ctx, uint16_t m_voltage)
Set Adjusted input 1.
brushless14_get_ld_out
err_t brushless14_get_ld_out(brushless14_t *ctx, uint8_t *state)
Get lock detection signal.
brushless14_return_value_t
brushless14_return_value_t
Brushless 14 Click return value data.
Definition: brushless14.h:180
brushless14_set_adj0
err_t brushless14_set_adj0(brushless14_t *ctx, uint16_t m_voltage)
Set Adjusted input 0.
brushless14_init
err_t brushless14_init(brushless14_t *ctx, brushless14_cfg_t *cfg)
Brushless 14 initialization function.
brushless14_set_lap
err_t brushless14_set_lap(brushless14_t *ctx, uint8_t state)
Set overlapping commutation select.