Go to the documentation of this file.
35 #include "drv_digital_out.h"
36 #include "drv_digital_in.h"
37 #include "drv_i2c_master.h"
38 #include "drv_spi_master.h"
61 #define SMOKE2_REG_STATUS 0x00
62 #define SMOKE2_REG_INT_MASK 0x01
63 #define SMOKE2_REG_GPIO_DRV 0x02
64 #define SMOKE2_REG_BG_STATUS 0x04
65 #define SMOKE2_REG_FIFO_THR 0x06
66 #define SMOKE2_REG_DEVID 0x08
67 #define SMOKE2_REG_I2CS_ID 0x09
68 #define SMOKE2_REG_CLK_RATIO 0x0A
69 #define SMOKE2_REG_GPIO_CTRL 0x0B
70 #define SMOKE2_REG_SLAVE_ADDR_KEY 0x0D
71 #define SMOKE2_REG_SW_RESET 0x0F
72 #define SMOKE2_REG_MODE 0x10
73 #define SMOKE2_REG_SLOT_EN 0x11
74 #define SMOKE2_REG_FSAMPLE 0x12
75 #define SMOKE2_REG_PD_LED_SELECT 0x14
76 #define SMOKE2_REG_NUM_AVG 0x15
77 #define SMOKE2_REG_BIG_MEAS_A 0x16
78 #define SMOKE2_REG_INT_SEQ_A 0x17
79 #define SMOKE2_REG_SLOTA_CH1_OFFSET 0x18
80 #define SMOKE2_REG_SLOTA_CH2_OFFSET 0x19
81 #define SMOKE2_REG_SLOTA_CH3_OFFSET 0x1A
82 #define SMOKE2_REG_SLOTA_CH4_OFFSET 0x1B
83 #define SMOKE2_REG_BIG_MEAS_B 0x1C
84 #define SMOKE2_REG_INT_SEQ_B 0x1D
85 #define SMOKE2_REG_SLOTB_CH1_OFFSET 0x1E
86 #define SMOKE2_REG_SLOTB_CH2_OFFSET 0x1F
87 #define SMOKE2_REG_SLOTB_CH3_OFFSET 0x20
88 #define SMOKE2_REG_SLOTB_CH4_OFFSET 0x21
89 #define SMOKE2_REG_ILED3_COARSE 0x22
90 #define SMOKE2_REG_ILED1_COARSE 0x23
91 #define SMOKE2_REG_ILED2_COARSE 0x24
92 #define SMOKE2_REG_ILED_FINE 0x25
93 #define SMOKE2_REG_SLOTA_LED_PULSE 0x30
94 #define SMOKE2_REG_SLOTA_NUM_PULSES 0x31
95 #define SMOKE2_REG_LED_DISABLE 0x34
96 #define SMOKE2_REG_SLOTB_LED_PULSE 0x35
97 #define SMOKE2_REG_SLOTB_NUM_PULSES 0x36
98 #define SMOKE2_REG_ALT_PWR_DN 0x37
99 #define SMOKE2_REG_EXT_SYNC_STARTUP 0x38
100 #define SMOKE2_REG_SLOTA_AFE_WINDOW 0x39
101 #define SMOKE2_REG_SLOTB_AFE_WINDOW 0x3B
102 #define SMOKE2_REG_AFE_PWR_CFG1 0x3C
103 #define SMOKE2_REG_SLOTA_FLOAT_LED 0x3E
104 #define SMOKE2_REG_SLOTB_FLOAT_LED 0x3F
105 #define SMOKE2_REG_SLOTA_TIA_CFG 0x42
106 #define SMOKE2_REG_SLOTA_AFE_CFG 0x43
107 #define SMOKE2_REG_SLOTB_TIA_CFG 0x44
108 #define SMOKE2_REG_SLOTB_AFE_CFG 0x45
109 #define SMOKE2_REG_SAMPLE_CLK 0x4B
110 #define SMOKE2_REG_CLK32M_ADJUST 0x4D
111 #define SMOKE2_REG_EXT_SYNC_SEL 0x4F
112 #define SMOKE2_REG_CLK32M_CAL_EN 0x50
113 #define SMOKE2_REG_AFE_PWR_CFG2 0x54
114 #define SMOKE2_REG_TIA_INDEP_GAIN 0x55
115 #define SMOKE2_REG_MATH 0x58
116 #define SMOKE2_REG_FLT_CONFIG_B 0x59
117 #define SMOKE2_REG_FLT_LED_FIRE 0x5A
118 #define SMOKE2_REG_FLT_CONFIG_A 0x5E
119 #define SMOKE2_REG_DATA_ACCESS_CTL 0x5F
120 #define SMOKE2_REG_FIFO_ACCESS 0x60
121 #define SMOKE2_REG_SLOTA_CH1 0x64
122 #define SMOKE2_REG_SLOTA_CH2 0x65
123 #define SMOKE2_REG_SLOTA_CH3 0x66
124 #define SMOKE2_REG_SLOTA_CH4 0x67
125 #define SMOKE2_REG_SLOTB_CH1 0x68
126 #define SMOKE2_REG_SLOTB_CH2 0x69
127 #define SMOKE2_REG_SLOTB_CH3 0x6A
128 #define SMOKE2_REG_SLOTB_CH4 0x6B
129 #define SMOKE2_REG_A_CH1_LOW 0x70
130 #define SMOKE2_REG_A_CH2_LOW 0x71
131 #define SMOKE2_REG_A_CH3_LOW 0x72
132 #define SMOKE2_REG_A_CH4_LOW 0x73
133 #define SMOKE2_REG_A_CH1_HIGH 0x74
134 #define SMOKE2_REG_A_CH2_HIGH 0x75
135 #define SMOKE2_REG_A_CH3_HIGH 0x76
136 #define SMOKE2_REG_A_CH4_HIGH 0x77
137 #define SMOKE2_REG_B_CH1_LOW 0x78
138 #define SMOKE2_REG_B_CH2_LOW 0x79
139 #define SMOKE2_REG_B_CH3_LOW 0x7A
140 #define SMOKE2_REG_B_CH4_LOW 0x7B
141 #define SMOKE2_REG_B_CH1_HIGH 0x7C
142 #define SMOKE2_REG_B_CH2_HIGH 0x7D
143 #define SMOKE2_REG_B_CH3_HIGH 0x7E
144 #define SMOKE2_REG_B_CH4_HIGH 0x7F
162 #define SMOKE2_SLOT_A 0
163 #define SMOKE2_SLOT_B 4
169 #define SMOKE2_CHN_1 0
170 #define SMOKE2_CHN_2 1
171 #define SMOKE2_CHN_3 2
172 #define SMOKE2_CHN_4 3
178 #define SMOKE2_MODE_IDLE 0
179 #define SMOKE2_MODE_PROGRAM 1
180 #define SMOKE2_MODE_NORMAL 2
186 #define SMOKE2_SMOKE_DETECTED 0xCC
187 #define SMOKE2_SMOKE_NOT_DETECTED 0xDD
193 #define SMOKE2_READ_CMD 0
194 #define SMOKE2_WRITE_CMD 1
201 #define SMOKE2_SET_DEV_ADDR 0x64
211 #define SMOKE2_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
212 #define SMOKE2_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
230 #define SMOKE2_MAP_MIKROBUS( cfg, mikrobus ) \
231 cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
232 cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA ); \
233 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
234 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
235 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
236 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
237 cfg.int_pin = MIKROBUS( mikrobus, MIKROBUS_INT )
pin_name_t sda
Definition: smoke2.h:290
struct smoke2_s smoke2_t
Smoke 2 Click context object.
uint8_t smoke2_get_bit(smoke2_t *ctx, uint8_t reg, uint8_t bit_num)
Smoke 2 generic function for reading bit state.
void smoke2_get_int(smoke2_t *ctx, uint8_t *fifo, uint8_t *slot_a, uint8_t *slot_b)
Smoke 2 get mode function.
Smoke 2 Click context object.
Definition: smoke2.h:264
err_t smoke2_generic_write(smoke2_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Smoke 2 data writing function.
i2c_master_t i2c
Definition: smoke2.h:267
pin_name_t int_pin
Definition: smoke2.h:295
digital_in_t int_pin
Definition: smoke2.h:265
pin_name_t cs
Definition: smoke2.h:294
pin_name_t sck
Definition: smoke2.h:293
uint16_t smoke2_read_data(smoke2_t *ctx, uint8_t reg)
Smoke 2 generic function for reading data from registar.
This file contains SPI specific macros, functions, etc.
uint8_t i2c_address
Definition: smoke2.h:298
void smoke2_cfg_setup(smoke2_cfg_t *cfg)
Smoke 2 configuration object setup function.
smoke2_drv_t drv_sel
Definition: smoke2.h:304
void smoke2_set_bit(smoke2_t *ctx, uint8_t reg, uint8_t bit_num, uint8_t val)
Smoke 2 generic function for writing bit state.
uint16_t threshold_value
Definition: smoke2.h:278
uint16_t smoke2_read_sens_data(smoke2_t *ctx, uint8_t slot, uint8_t chn)
Smoke 2 reading bit state function.
spi_master_mode_t spi_mode
Definition: smoke2.h:301
void smoke2_write_data(smoke2_t *ctx, uint8_t reg, uint16_t tx_data)
Smoke 2 generic function for writing data to register function.
smoke2_drv_t
Smoke 2 Click driver selector.
Definition: smoke2.h:247
uint32_t spi_speed
Definition: smoke2.h:300
spi_master_chip_select_polarity_t cs_polarity
Definition: smoke2.h:302
uint8_t slave_address
Definition: smoke2.h:270
@ SMOKE2_OK
Definition: smoke2.h:314
uint16_t calibration_value
Definition: smoke2.h:277
@ SMOKE2_DRV_SEL_I2C
Definition: smoke2.h:249
pin_name_t mosi
Definition: smoke2.h:292
void smoke2_drv_interface_selection(smoke2_cfg_t *cfg, smoke2_drv_t drv_sel)
Smoke 2 driver interface setup function.
uint16_t smoke2_smoke_calibration(smoke2_t *ctx, uint16_t threshold)
Smoke 2 calibrating data and setting threshold function.
err_t smoke2_init(smoke2_t *ctx, smoke2_cfg_t *cfg)
Smoke 2 initialization function.
void smoke2_default_cfg(smoke2_t *ctx)
Smoke 2 default configuration function.
smoke2_return_value_t
Smoke 2 Click return value data.
Definition: smoke2.h:313
err_t smoke2_generic_read(smoke2_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Smoke 2 data reading function.
pin_name_t miso
Definition: smoke2.h:291
uint8_t enabled_slot
Definition: smoke2.h:279
err_t(* smoke2_master_io_t)(struct smoke2_s *, uint8_t, uint8_t *, uint8_t)
Smoke 2 Click driver interface.
Definition: smoke2.h:257
pin_name_t chip_select
Definition: smoke2.h:271
@ SMOKE2_ERROR
Definition: smoke2.h:315
uint32_t i2c_speed
Definition: smoke2.h:297
smoke2_drv_t drv_sel
Definition: smoke2.h:272
smoke2_master_io_t read_f
Definition: smoke2.h:275
pin_name_t scl
Definition: smoke2.h:289
Smoke 2 Click configuration object.
Definition: smoke2.h:288
void smoke2_soft_reset(smoke2_t *ctx)
Smoke 2 reseting device function.
spi_master_t spi
Definition: smoke2.h:268
void smoke2_set_mode(smoke2_t *ctx, uint8_t mode)
Smoke 2 setting mode function.
smoke2_master_io_t write_f
Definition: smoke2.h:274
uint8_t smoke2_check_smoke(smoke2_t *ctx)
Smoke 2 checking smoke detection function.
@ SMOKE2_DRV_SEL_SPI
Definition: smoke2.h:248
uint8_t smoke2_get_int_pin(smoke2_t *ctx)
Smoke 2 get state of int pin function.