28#ifndef SOLENOIDDRIVER_H
29#define SOLENOIDDRIVER_H
39#ifdef PREINIT_SUPPORTED
43#ifdef MikroCCoreVersion
44 #if MikroCCoreVersion >= 1
49#include "drv_digital_out.h"
50#include "drv_digital_in.h"
51#include "drv_spi_master.h"
74#define SOLENOIDDRIVER_REG_OUT_CTRL 0x00
75#define SOLENOIDDRIVER_REG_STANDARD_DIAGNOSIS 0x01
76#define SOLENOIDDRIVER_REG_IN0_MAP 0x04
77#define SOLENOIDDRIVER_REG_IN1_MAP 0x05
78#define SOLENOIDDRIVER_REG_IN_STATUS_MONITOR 0x06
79#define SOLENOIDDRIVER_REG_OPEN_LOAD_CURRENT_CTRL 0x08
80#define SOLENOIDDRIVER_REG_OUT_STATUS_MONITOR 0x09
81#define SOLENOIDDRIVER_REG_CONFIG 0x0C
82#define SOLENOIDDRIVER_REG_OUT_CLEAR_LATCH 0x0D
83#define SOLENOIDDRIVER_REG_CONFIG2 0x28
101#define SOLENOIDDRIVER_DIAG_UVRVM 0x4000
102#define SOLENOIDDRIVER_DIAG_MODE_LIMP_HOME 0x0800
103#define SOLENOIDDRIVER_DIAG_MODE_ACTIVE 0x1000
104#define SOLENOIDDRIVER_DIAG_MODE_IDLE 0x1800
105#define SOLENOIDDRIVER_DIAG_MODE_MASK 0x1800
106#define SOLENOIDDRIVER_DIAG_TER 0x0400
107#define SOLENOIDDRIVER_DIAG_OLOFF 0x0100
108#define SOLENOIDDRIVER_DIAG_ERR_OUT3 0x0008
109#define SOLENOIDDRIVER_DIAG_ERR_OUT2 0x0004
110#define SOLENOIDDRIVER_DIAG_ERR_OUT1 0x0002
111#define SOLENOIDDRIVER_DIAG_ERR_OUT0 0x0001
117#define SOLENOIDDRIVER_OUT_CTRL_EN3 0x08
118#define SOLENOIDDRIVER_OUT_CTRL_EN2 0x04
119#define SOLENOIDDRIVER_OUT_CTRL_EN1 0x02
120#define SOLENOIDDRIVER_OUT_CTRL_EN0 0x01
126#define SOLENOIDDRIVER_IN0_MAP_OUT3 0x08
127#define SOLENOIDDRIVER_IN0_MAP_OUT2 0x04
128#define SOLENOIDDRIVER_IN0_MAP_OUT1 0x02
129#define SOLENOIDDRIVER_IN0_MAP_OUT0 0x01
130#define SOLENOIDDRIVER_IN0_MAP_NONE 0x00
136#define SOLENOIDDRIVER_IN1_MAP_OUT3 0x08
137#define SOLENOIDDRIVER_IN1_MAP_OUT2 0x04
138#define SOLENOIDDRIVER_IN1_MAP_OUT1 0x02
139#define SOLENOIDDRIVER_IN1_MAP_OUT0 0x01
140#define SOLENOIDDRIVER_IN1_MAP_NONE 0x00
146#define SOLENOIDDRIVER_IN_STATUS_MONITOR_TER 0x80
147#define SOLENOIDDRIVER_IN_STATUS_MONITOR_INST1 0x02
148#define SOLENOIDDRIVER_IN_STATUS_MONITOR_INST0 0x01
154#define SOLENOIDDRIVER_OPEN_LOAD_CURRENT_CTRL_IOL3 0x08
155#define SOLENOIDDRIVER_OPEN_LOAD_CURRENT_CTRL_IOL2 0x04
156#define SOLENOIDDRIVER_OPEN_LOAD_CURRENT_CTRL_IOL1 0x02
157#define SOLENOIDDRIVER_OPEN_LOAD_CURRENT_CTRL_IOL0 0x01
163#define SOLENOIDDRIVER_OUT_STATUS_MONITOR_OSM3 0x08
164#define SOLENOIDDRIVER_OUT_STATUS_MONITOR_OSM2 0x04
165#define SOLENOIDDRIVER_OUT_STATUS_MONITOR_OSM1 0x02
166#define SOLENOIDDRIVER_OUT_STATUS_MONITOR_OSM0 0x01
172#define SOLENOIDDRIVER_CONFIG_ACT 0x80
173#define SOLENOIDDRIVER_CONFIG_RST 0x40
174#define SOLENOIDDRIVER_CONFIG_DISOL 0x20
175#define SOLENOIDDRIVER_CONFIG_OCP 0x10
176#define SOLENOIDDRIVER_CONFIG_PAR1 0x02
177#define SOLENOIDDRIVER_CONFIG_PAR0 0x01
183#define SOLENOIDDRIVER_OUT_CLEAR_LATCH_CLR3 0x08
184#define SOLENOIDDRIVER_OUT_CLEAR_LATCH_CLR2 0x04
185#define SOLENOIDDRIVER_OUT_CLEAR_LATCH_CLR1 0x02
186#define SOLENOIDDRIVER_OUT_CLEAR_LATCH_CLR0 0x01
192#define SOLENOIDDRIVER_CONFIG2_LOCK_SET_LOCK 0xC0
193#define SOLENOIDDRIVER_CONFIG2_LOCK_SET_UNLOCK 0x60
194#define SOLENOIDDRIVER_CONFIG2_LOCK_MASK 0xE0
195#define SOLENOIDDRIVER_CONFIG2_OTW 0x04
196#define SOLENOIDDRIVER_CONFIG2_SR_1_2V 0x00
197#define SOLENOIDDRIVER_CONFIG2_SR_3V 0x01
198#define SOLENOIDDRIVER_CONFIG2_SR_MASK 0x01
208#define SOLENOIDDRIVER_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
209#define SOLENOIDDRIVER_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
227#define SOLENOIDDRIVER_MAP_MIKROBUS( cfg, mikrobus ) \
228 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
229 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
230 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
231 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
232 cfg.in1 = MIKROBUS( mikrobus, MIKROBUS_AN ); \
233 cfg.sleep = MIKROBUS( mikrobus, MIKROBUS_RST ); \
234 cfg.in0 = MIKROBUS( mikrobus, MIKROBUS_PWM );
void solenoiddriver_set_in0_pin(solenoiddriver_t *ctx, uint8_t state)
Solenoid Driver set IN0 pin function.
err_t solenoiddriver_clear_latch(solenoiddriver_t *ctx)
Solenoid Driver clear latch outputs function.
void solenoiddriver_set_sleep_pin(solenoiddriver_t *ctx, uint8_t state)
Solenoid Driver set SLEEP pin function.
void solenoiddriver_enter_sleep(solenoiddriver_t *ctx)
Solenoid Driver enter sleep mode function.
void solenoiddriver_cfg_setup(solenoiddriver_cfg_t *cfg)
Solenoid Driver configuration object setup function.
err_t solenoiddriver_set_output(solenoiddriver_t *ctx, uint8_t out_ctrl)
Solenoid Driver set output function.
void solenoiddriver_set_in1_pin(solenoiddriver_t *ctx, uint8_t state)
Solenoid Driver set IN1 pin function.
err_t solenoiddriver_init(solenoiddriver_t *ctx, solenoiddriver_cfg_t *cfg)
Solenoid Driver initialization function.
void solenoiddriver_exit_sleep(solenoiddriver_t *ctx)
Solenoid Driver exit sleep mode function.
err_t solenoiddriver_default_cfg(solenoiddriver_t *ctx)
Solenoid Driver default configuration function.
err_t solenoiddriver_read_reg(solenoiddriver_t *ctx, uint8_t reg, uint8_t *data_out)
Solenoid Driver read register function.
err_t solenoiddriver_reset_device(solenoiddriver_t *ctx)
Solenoid Driver device reset function.
err_t solenoiddriver_lock_settings(solenoiddriver_t *ctx)
Solenoid Driver lock settings function.
err_t solenoiddriver_unlock_settings(solenoiddriver_t *ctx)
Solenoid Driver unlock settings function.
err_t solenoiddriver_write_reg(solenoiddriver_t *ctx, uint8_t reg, uint8_t data_in)
Solenoid Driver write register function.
solenoiddriver_return_value_t
Solenoid Driver Click return value data.
Definition solenoiddriver.h:288
@ SOLENOIDDRIVER_ERROR
Definition solenoiddriver.h:290
@ SOLENOIDDRIVER_OK
Definition solenoiddriver.h:289
This file contains SPI specific macros, functions, etc.
Solenoid Driver Click configuration object.
Definition solenoiddriver.h:264
pin_name_t sleep
Definition solenoiddriver.h:273
pin_name_t in0
Definition solenoiddriver.h:274
spi_master_chip_select_polarity_t cs_polarity
Definition solenoiddriver.h:279
pin_name_t sck
Definition solenoiddriver.h:268
spi_master_mode_t spi_mode
Definition solenoiddriver.h:278
pin_name_t mosi
Definition solenoiddriver.h:267
uint32_t spi_speed
Definition solenoiddriver.h:277
pin_name_t in1
Definition solenoiddriver.h:272
pin_name_t miso
Definition solenoiddriver.h:266
pin_name_t cs
Definition solenoiddriver.h:269
Solenoid Driver Click context object.
Definition solenoiddriver.h:244
digital_out_t sleep
Definition solenoiddriver.h:247
uint16_t diagnosis
Definition solenoiddriver.h:255
spi_master_t spi
Definition solenoiddriver.h:251
pin_name_t chip_select
Definition solenoiddriver.h:253
digital_out_t in1
Definition solenoiddriver.h:246
digital_out_t in0
Definition solenoiddriver.h:248