Go to the documentation of this file.
28 #ifndef PIEZOACCEL225G_H
29 #define PIEZOACCEL225G_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 PIEZOACCEL225G_FAST_CMD_ADC_START 0x0A
75 #define PIEZOACCEL225G_FAST_CMD_ADC_STANDBY 0x0B
76 #define PIEZOACCEL225G_FAST_CMD_ADC_SHUTDOWN 0x0C
77 #define PIEZOACCEL225G_FAST_CMD_FULL_SHUTDOWN 0x0D
78 #define PIEZOACCEL225G_FAST_CMD_FULL_RESET 0x0E
96 #define PIEZOACCEL225G_REG_ADCDATA 0x00
97 #define PIEZOACCEL225G_REG_CONFIG0 0x01
98 #define PIEZOACCEL225G_REG_CONFIG1 0x02
99 #define PIEZOACCEL225G_REG_CONFIG2 0x03
100 #define PIEZOACCEL225G_REG_CONFIG3 0x04
101 #define PIEZOACCEL225G_REG_IRQ 0x05
102 #define PIEZOACCEL225G_REG_MUX 0x06
103 #define PIEZOACCEL225G_REG_SCAN 0x07
104 #define PIEZOACCEL225G_REG_TIMER 0x08
105 #define PIEZOACCEL225G_REG_OFFSETCAL 0x09
106 #define PIEZOACCEL225G_REG_GAINCAL 0x0A
107 #define PIEZOACCEL225G_REG_LOCK 0x0D
108 #define PIEZOACCEL225G_REG_CRCCFG 0x0F
126 #define PIEZOACCEL225G_CONFIG0_VREF_SEL_INT_2_4_V 0x80
127 #define PIEZOACCEL225G_CONFIG0_VREF_SEL_EXT 0x00
128 #define PIEZOACCEL225G_CONFIG0_VREF_SEL_MASK 0x80
129 #define PIEZOACCEL225G_CONFIG0_EXIT_PART_SHUTDOWN 0x40
130 #define PIEZOACCEL225G_CONFIG0_CLK_SEL_INT_CLKOUT 0x30
131 #define PIEZOACCEL225G_CONFIG0_CLK_SEL_INT 0x20
132 #define PIEZOACCEL225G_CONFIG0_CLK_SEL_EXT 0x00
133 #define PIEZOACCEL225G_CONFIG0_CLK_SEL_MASK 0x30
134 #define PIEZOACCEL225G_CONFIG0_CS_SEL_15_UA 0x0C
135 #define PIEZOACCEL225G_CONFIG0_CS_SEL_3_7_UA 0x08
136 #define PIEZOACCEL225G_CONFIG0_CS_SEL_0_9_UA 0x04
137 #define PIEZOACCEL225G_CONFIG0_CS_SEL_NO_IN_CURR 0x00
138 #define PIEZOACCEL225G_CONFIG0_CS_SEL_MASK 0x0C
139 #define PIEZOACCEL225G_CONFIG0_ADC_MODE_CONVERSION 0x03
140 #define PIEZOACCEL225G_CONFIG0_ADC_MODE_STANDBY 0x02
141 #define PIEZOACCEL225G_CONFIG0_ADC_MODE_SHUTDOWN 0x00
142 #define PIEZOACCEL225G_CONFIG0_ADC_MODE_MASK 0x03
148 #define PIEZOACCEL225G_CONFIG1_PRE_DIV_8 0xC0
149 #define PIEZOACCEL225G_CONFIG1_PRE_DIV_4 0x80
150 #define PIEZOACCEL225G_CONFIG1_PRE_DIV_2 0x40
151 #define PIEZOACCEL225G_CONFIG1_PRE_DIV_1 0x00
152 #define PIEZOACCEL225G_CONFIG1_PRE_MASK 0xC0
153 #define PIEZOACCEL225G_CONFIG1_OSR_98304 0x3C
154 #define PIEZOACCEL225G_CONFIG1_OSR_81920 0x38
155 #define PIEZOACCEL225G_CONFIG1_OSR_49152 0x34
156 #define PIEZOACCEL225G_CONFIG1_OSR_40960 0x30
157 #define PIEZOACCEL225G_CONFIG1_OSR_24576 0x2C
158 #define PIEZOACCEL225G_CONFIG1_OSR_20480 0x28
159 #define PIEZOACCEL225G_CONFIG1_OSR_16384 0x24
160 #define PIEZOACCEL225G_CONFIG1_OSR_8192 0x20
161 #define PIEZOACCEL225G_CONFIG1_OSR_4096 0x1C
162 #define PIEZOACCEL225G_CONFIG1_OSR_2048 0x18
163 #define PIEZOACCEL225G_CONFIG1_OSR_1024 0x14
164 #define PIEZOACCEL225G_CONFIG1_OSR_512 0x10
165 #define PIEZOACCEL225G_CONFIG1_OSR_256 0x0C
166 #define PIEZOACCEL225G_CONFIG1_OSR_128 0x08
167 #define PIEZOACCEL225G_CONFIG1_OSR_64 0x04
168 #define PIEZOACCEL225G_CONFIG1_OSR_32 0x00
169 #define PIEZOACCEL225G_CONFIG1_OSR_MASK 0x3C
175 #define PIEZOACCEL225G_CONFIG2_BOOST_X2 0xC0
176 #define PIEZOACCEL225G_CONFIG2_BOOST_X1 0x80
177 #define PIEZOACCEL225G_CONFIG2_BOOST_X0_66 0x40
178 #define PIEZOACCEL225G_CONFIG2_BOOST_X0_5 0x00
179 #define PIEZOACCEL225G_CONFIG2_BOOST_MASK 0xC0
180 #define PIEZOACCEL225G_CONFIG2_GAIN_X64 0x38
181 #define PIEZOACCEL225G_CONFIG2_GAIN_X32 0x30
182 #define PIEZOACCEL225G_CONFIG2_GAIN_X16 0x28
183 #define PIEZOACCEL225G_CONFIG2_GAIN_X8 0x20
184 #define PIEZOACCEL225G_CONFIG2_GAIN_X4 0x18
185 #define PIEZOACCEL225G_CONFIG2_GAIN_X2 0x10
186 #define PIEZOACCEL225G_CONFIG2_GAIN_X1 0x08
187 #define PIEZOACCEL225G_CONFIG2_GAIN_X1_PER_3 0x00
188 #define PIEZOACCEL225G_CONFIG2_GAIN_MASK 0x38
189 #define PIEZOACCEL225G_CONFIG2_AZ_MUX_EN 0x04
190 #define PIEZOACCEL225G_CONFIG2_AZ_REF_EN 0x02
191 #define PIEZOACCEL225G_CONFIG2_RESERVED 0x01
197 #define PIEZOACCEL225G_CONFIG3_CONV_MODE_CONT 0xC0
198 #define PIEZOACCEL225G_CONFIG3_CONV_MODE_ONES_STB 0x80
199 #define PIEZOACCEL225G_CONFIG3_CONV_MODE_ONES_SHD 0x00
200 #define PIEZOACCEL225G_CONFIG3_CONV_MODE_MASK 0xC0
201 #define PIEZOACCEL225G_CONFIG3_DATA_FMT_32B_R_CHID 0x30
202 #define PIEZOACCEL225G_CONFIG3_DATA_FMT_32B_R 0x20
203 #define PIEZOACCEL225G_CONFIG3_DATA_FMT_32B_L 0x10
204 #define PIEZOACCEL225G_CONFIG3_DATA_FMT_24B 0x00
205 #define PIEZOACCEL225G_CONFIG3_DATA_FMT_MASK 0x30
206 #define PIEZOACCEL225G_CONFIG3_CRC_FMT_32B 0x08
207 #define PIEZOACCEL225G_CONFIG3_CRC_FMT_16B 0x00
208 #define PIEZOACCEL225G_CONFIG3_CRC_FMT_MASK 0x08
209 #define PIEZOACCEL225G_CONFIG3_EN_CRCCOM 0x04
210 #define PIEZOACCEL225G_CONFIG3_EN_OFFCAL 0x02
211 #define PIEZOACCEL225G_CONFIG3_EN_GAINCAL 0x01
217 #define PIEZOACCEL225G_IRQ_DR_STATUS 0x40
218 #define PIEZOACCEL225G_IRQ_CRCCFG_STATUS 0x20
219 #define PIEZOACCEL225G_IRQ_POR_STATUS 0x10
220 #define PIEZOACCEL225G_IRQ_MODE1_MDAT 0x08
221 #define PIEZOACCEL225G_IRQ_MODE1_IRQOUT 0x00
222 #define PIEZOACCEL225G_IRQ_MODE1_MASK 0x08
223 #define PIEZOACCEL225G_IRQ_MODE0_INACT_HIGH 0x04
224 #define PIEZOACCEL225G_IRQ_MODE0_INACT_HIGH_Z 0x00
225 #define PIEZOACCEL225G_IRQ_MODE0_MASK 0x04
226 #define PIEZOACCEL225G_IRQ_EN_FAST_CMD 0x02
227 #define PIEZOACCEL225G_IRQ_EN_STP 0x01
233 #define PIEZOACCEL225G_SCAN_DLY_512_DMCLK 0xE00000ul
234 #define PIEZOACCEL225G_SCAN_DLY_256_DMCLK 0xC00000ul
235 #define PIEZOACCEL225G_SCAN_DLY_128_DMCL 0xA00000ul
236 #define PIEZOACCEL225G_SCAN_DLY_64_DMCLK 0x800000ul
237 #define PIEZOACCEL225G_SCAN_DLY_32_DMCLK 0x600000ul
238 #define PIEZOACCEL225G_SCAN_DLY_16_DMCLK 0x400000ul
239 #define PIEZOACCEL225G_SCAN_DLY_8_DMCLK 0x200000ul
240 #define PIEZOACCEL225G_SCAN_DLY_NO_DELAY 0x000000ul
241 #define PIEZOACCEL225G_SCAN_DLY_MASK 0xE00000ul
242 #define PIEZOACCEL225G_SCAN_CH_OFFSET 0x008000ul
243 #define PIEZOACCEL225G_SCAN_CH_VCM 0x004000ul
244 #define PIEZOACCEL225G_SCAN_CH_AVDD 0x002000ul
245 #define PIEZOACCEL225G_SCAN_CH_TEMP 0x001000ul
246 #define PIEZOACCEL225G_SCAN_CH_DIFF_CH2_CH3 0x000200ul
247 #define PIEZOACCEL225G_SCAN_CH_DIFF_CH0_CH1 0x000100ul
248 #define PIEZOACCEL225G_SCAN_CH_SINGLE_ENDED_CH3 0x000008ul
249 #define PIEZOACCEL225G_SCAN_CH_SINGLE_ENDED_CH2 0x000004ul
250 #define PIEZOACCEL225G_SCAN_CH_SINGLE_ENDED_CH1 0x000002ul
251 #define PIEZOACCEL225G_SCAN_CH_SINGLE_ENDED_CH0 0x000001ul
257 #define PIEZOACCEL225G_STATUS_DEV_ADDR_MASK 0x30
258 #define PIEZOACCEL225G_STATUS_DEV_ADDR_FLAG 0x08
259 #define PIEZOACCEL225G_STATUS_DR_FLAG 0x04
260 #define PIEZOACCEL225G_STATUS_CRCCFG_FLAG 0x02
261 #define PIEZOACCEL225G_STATUS_POR_FLAG 0x01
267 #define PIEZOACCEL225G_CMD_TYPE_FAST_CMD 0x00
268 #define PIEZOACCEL225G_CMD_TYPE_STATIC_REG_READ 0x01
269 #define PIEZOACCEL225G_CMD_TYPE_INC_REG_WRITE 0x02
270 #define PIEZOACCEL225G_CMD_TYPE_INC_REG_READ 0x03
276 #define PIEZOACCEL225G_CMD_DEV_ADDR 0x01
282 #define PIEZOACCEL225G_LOCK_BYTE 0x00
283 #define PIEZOACCEL225G_UNLOCK_BYTE 0xA5
289 #define PIEZOACCEL225G_DATA_READY_TIMEOUT_MS 1000
299 #define PIEZOACCEL225G_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
300 #define PIEZOACCEL225G_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
318 #define PIEZOACCEL225G_MAP_MIKROBUS( cfg, mikrobus ) \
319 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
320 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
321 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
322 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
323 cfg.clk = MIKROBUS( mikrobus, MIKROBUS_PWM ); \
324 cfg.irq = MIKROBUS( mikrobus, MIKROBUS_INT )
631 #endif // PIEZOACCEL225G_H
uint8_t piezoaccel225g_get_clk_pin(piezoaccel225g_t *ctx)
Piezo Accel 2 25g get clk pin function.
uint8_t status
Definition: piezoaccel225g.h:357
@ PIEZOACCEL225G_ERROR
Definition: piezoaccel225g.h:391
err_t piezoaccel225g_read_adc_data(piezoaccel225g_t *ctx, piezoaccel225g_adc_data_t *data_out)
Piezo Accel 2 25g read adc data function.
err_t piezoaccel225g_reg_read_8(piezoaccel225g_t *ctx, uint8_t reg, uint8_t *data_out)
Piezo Accel 2 25g reg read 8 function.
This file contains SPI specific macros, functions, etc.
Piezo Accel 2 25g Click configuration object.
Definition: piezoaccel225g.h:366
pin_name_t irq
Definition: piezoaccel225g.h:375
uint32_t raw_x
Definition: piezoaccel225g.h:335
uint32_t raw_y
Definition: piezoaccel225g.h:336
err_t piezoaccel225g_wait_data_ready(piezoaccel225g_t *ctx, uint16_t timeout_ms)
Piezo Accel 2 25g wait data ready function.
digital_in_t irq
Definition: piezoaccel225g.h:350
err_t piezoaccel225g_fast_cmd_write(piezoaccel225g_t *ctx, uint8_t fast_cmd)
Piezo Accel 2 25g fast cmd write function.
pin_name_t miso
Definition: piezoaccel225g.h:368
Piezo Accel 2 25g Click context object.
Definition: piezoaccel225g.h:347
pin_name_t mosi
Definition: piezoaccel225g.h:369
err_t piezoaccel225g_reg_write_24(piezoaccel225g_t *ctx, uint8_t reg, uint32_t data_in)
Piezo Accel 2 25g reg write 24 function.
uint32_t spi_speed
Definition: piezoaccel225g.h:378
err_t piezoaccel225g_lock_reg_write(piezoaccel225g_t *ctx)
Piezo Accel 2 25g lock reg write function.
@ PIEZOACCEL225G_OK
Definition: piezoaccel225g.h:390
err_t piezoaccel225g_reg_read_24(piezoaccel225g_t *ctx, uint8_t reg, uint32_t *data_out)
Piezo Accel 2 25g reg read 24 function.
spi_master_chip_select_polarity_t cs_polarity
Definition: piezoaccel225g.h:380
uint8_t piezoaccel225g_get_irq_pin(piezoaccel225g_t *ctx)
Piezo Accel 2 25g get irq pin function.
piezoaccel225g_return_value_t
Piezo Accel 2 25g Click return value data.
Definition: piezoaccel225g.h:389
pin_name_t cs
Definition: piezoaccel225g.h:371
err_t piezoaccel225g_reg_read_32(piezoaccel225g_t *ctx, uint8_t reg, uint32_t *data_out)
Piezo Accel 2 25g reg read 32 function.
err_t piezoaccel225g_reg_write_8(piezoaccel225g_t *ctx, uint8_t reg, uint8_t data_in)
Piezo Accel 2 25g reg write 8 function.
spi_master_t spi
Definition: piezoaccel225g.h:353
pin_name_t chip_select
Definition: piezoaccel225g.h:355
pin_name_t sck
Definition: piezoaccel225g.h:370
err_t piezoaccel225g_reg_read_multi(piezoaccel225g_t *ctx, uint8_t reg, uint8_t *data_out, uint8_t len)
Piezo Accel 2 25g reg read multi function.
err_t piezoaccel225g_unlock_reg_write(piezoaccel225g_t *ctx)
Piezo Accel 2 25g unlock reg write function.
err_t piezoaccel225g_reg_write_multi(piezoaccel225g_t *ctx, uint8_t reg, uint8_t *data_in, uint8_t len)
Piezo Accel 2 25g reg write multi function.
uint32_t raw_temp
Definition: piezoaccel225g.h:338
pin_name_t clk
Definition: piezoaccel225g.h:374
digital_in_t clk
Definition: piezoaccel225g.h:349
Piezo Accel 2 25g Click adc data object.
Definition: piezoaccel225g.h:334
err_t piezoaccel225g_default_cfg(piezoaccel225g_t *ctx)
Piezo Accel 2 25g default configuration function.
spi_master_mode_t spi_mode
Definition: piezoaccel225g.h:379
err_t piezoaccel225g_init(piezoaccel225g_t *ctx, piezoaccel225g_cfg_t *cfg)
Piezo Accel 2 25g initialization function.
void piezoaccel225g_cfg_setup(piezoaccel225g_cfg_t *cfg)
Piezo Accel 2 25g configuration object setup function.
uint32_t raw_z
Definition: piezoaccel225g.h:337