Go to the documentation of this file.
38 #include "mikrosdk_version.h"
41 #if mikroSDK_GET_VERSION < 20800ul
42 #include "rcu_delays.h"
48 #include "drv_digital_out.h"
49 #include "drv_digital_in.h"
50 #include "drv_spi_master.h"
64 #define RTD2_MAP_MIKROBUS( cfg, mikrobus ) \
65 cfg.miso = MIKROBUS( mikrobus, MIKROBUS_MISO ); \
66 cfg.mosi = MIKROBUS( mikrobus, MIKROBUS_MOSI ); \
67 cfg.sck = MIKROBUS( mikrobus, MIKROBUS_SCK ); \
68 cfg.cs = MIKROBUS( mikrobus, MIKROBUS_CS ); \
69 cfg.str = MIKROBUS( mikrobus, MIKROBUS_AN ); \
70 cfg.rst = MIKROBUS( mikrobus, MIKROBUS_RST ); \
71 cfg.rdy = MIKROBUS( mikrobus, MIKROBUS_INT )
82 #define RTD2_SET_DATA_SAMPLE_EDGE SET_SPI_DATA_SAMPLE_EDGE
83 #define RTD2_SET_DATA_SAMPLE_MIDDLE SET_SPI_DATA_SAMPLE_MIDDLE
89 #define RTD2_REG_MUX0 0x00
90 #define RTD2_REG_VBIAS 0x01
91 #define RTD2_REG_MUX1 0x02
92 #define RTD2_REG_SYS0 0x03
93 #define RTD2_REG_OFC0 0x04
94 #define RTD2_REG_OFC1 0x05
95 #define RTD2_REG_OFC2 0x06
96 #define RTD2_REG_FSC0 0x07
97 #define RTD2_REG_FSC1 0x08
98 #define RTD2_REG_FSC2 0x09
99 #define RTD2_REG_IDAC0 0x0A
100 #define RTD2_REG_IDAC1 0x0B
101 #define RTD2_REG_GPIOCFG 0x0C
102 #define RTD2_REG_GPIODIR 0x0D
103 #define RTD2_REG_GPIODAT 0x0E
115 #define RTD2_CMD_WAKEUP 0x01
116 #define RTD2_CMD_SLEEP 0x03
117 #define RTD2_CMD_SYNC 0x05
118 #define RTD2_CMD_RESET 0x07
119 #define RTD2_CMD_NOP 0xFF
126 #define RTD2_CMD_RDATA 0x12
127 #define RTD2_CMD_RDATAC 0x14
128 #define RTD2_CMD_SDATAC 0x16
135 #define RTD2_CMD_RREG 0x20
142 #define RTD2_CMD_WREG 0x40
149 #define RTD2_CMD_SYSOCAL 0x60
150 #define RTD2_CMD_SYSGCAL 0x61
151 #define RTD2_CMD_SELFOCAL 0x62
158 #define RTD2_RW_DUMMY 0xFF
171 #define RTD2_BCS_OFF 0x00
172 #define RTD2_BCS_500 0x40
173 #define RTD2_BCS_2 0x80
174 #define RTD2_BCS_10 0xC0
181 #define RTD2_AINP0 0x00
182 #define RTD2_AINP1 0x08
183 #define RTD2_AINP2 0x10
184 #define RTD2_AINP3 0x18
185 #define RTD2_AIN_POS 0x38
192 #define RTD2_AINN0 0x00
193 #define RTD2_AINN1 0x01
194 #define RTD2_AINN2 0x02
195 #define RTD2_AINN3 0x03
196 #define RTD2_AIN_NEG 0x07
203 #define RTD2_VBIAS_OFF 0x00
204 #define RTD2_VBIAS0 0x01
205 #define RTD2_VBIAS1 0x02
206 #define RTD2_VBIAS2 0x04
207 #define RTD2_VBIAS3 0x08
220 #define RTD2_INT_VREF_OFF 0x00
221 #define RTD2_INT_VREF_ON 0x20
222 #define RTD2_INT_VREF_CONV 0x40
229 #define RTD2_REF0 0x00
230 #define RTD2_INT 0x10
231 #define RTD2_INT_REF0 0x18
238 #define RTD2_MEAS_NORM 0x00
239 #define RTD2_MEAS_OFFSET 0x01
240 #define RTD2_MEAS_GAIN 0x02
241 #define RTD2_MEAS_TEMP 0x03
242 #define RTD2_MEAS_REF0 0x05
243 #define RTD2_MEAS_AVDD 0x06
244 #define RTD2_MEAS_DVDD 0x07
257 #define RTD2_GAIN_1 0x00
258 #define RTD2_GAIN_2 0x10
259 #define RTD2_GAIN_4 0x20
260 #define RTD2_GAIN_8 0x30
261 #define RTD2_GAIN_16 0x40
262 #define RTD2_GAIN_32 0x50
263 #define RTD2_GAIN_64 0x60
264 #define RTD2_GAIN_128 0x70
271 #define RTD2_DR_5 0x00
272 #define RTD2_DR_10 0x01
273 #define RTD2_DR_20 0x02
274 #define RTD2_DR_40 0x03
275 #define RTD2_DR_80 0x04
276 #define RTD2_DR_160 0x05
277 #define RTD2_DR_320 0x06
278 #define RTD2_DR_640 0x07
279 #define RTD2_DR_1000 0x08
280 #define RTD2_DR_2000 0x0F
293 #define RTD2_IDAC_ID 0x90
300 #define RTD2_DRDY_OFF 0x00
301 #define RTD2_DRDY_ON 0x08
308 #define RTD2_IDAC_OFF 0x00
309 #define RTD2_IDAC_50 0x01
310 #define RTD2_IDAC_100 0x02
311 #define RTD2_IDAC_250 0x03
312 #define RTD2_IDAC_500 0x04
313 #define RTD2_IDAC_750 0x05
314 #define RTD2_IDAC_1000 0x06
315 #define RTD2_IDAC_1500 0x07
328 #define RTD2_IDAC1_A0 0xCC
329 #define RTD2_IDAC1_A1 0xDC
330 #define RTD2_IDAC1_A2 0xEC
331 #define RTD2_IDAC1_A3 0xFC
338 #define RTD2_IDAC2_A0 0xCC
339 #define RTD2_IDAC2_A1 0xCD
340 #define RTD2_IDAC2_A2 0xCE
341 #define RTD2_IDAC2_A3 0xCF
354 #define RTD2_GPIO_0 0x01
355 #define RTD2_GPIO_1 0x02
356 #define RTD2_GPIO_2 0x04
357 #define RTD2_GPIO_3 0x08
370 #define RTD2_IO_0 0x01
371 #define RTD2_IO_1 0x02
372 #define RTD2_IO_2 0x04
373 #define RTD2_IO_3 0x08
381 #define RTD2_OUT_0 0x01
382 #define RTD2_OUT_1 0x02
383 #define RTD2_OUT_2 0x04
384 #define RTD2_OUT_3 0x08
391 #define RTD2_PIN_LOW 0x00
392 #define RTD2_PIN_HIGH 0x01
399 #define RTD2_ERROR 0x00
400 #define RTD2_SUCCESS 0x01
407 #define RTD2_START_CONVERSION_DISABLE 0x00
408 #define RTD2_START_CONVERSION_ENABLE 0x01
415 #define RTD2_NEW_DATA_IS_NOT_READY 0x00
416 #define RTD2_NEW_DATA_IS_READY 0x01
423 #define COEFF_PT100_RESISTANCE_OHMS_0_C 100.00000000
424 #define COEFF_ALPHA 0.3920000000
425 #define COEFF_ADC_RES_RT_P 0.0000753846
426 #define COEFF_ADC_COR_FACT 50.980300000
void rtd2_set_system_control(rtd2_t *ctx, uint8_t gain, uint8_t output_rate)
Set system control function.
pin_name_t sck
Definition: rtd2.h:463
pin_name_t chip_select
Definition: rtd2.h:451
void rtd2_set_mux_sel(rtd2_t *ctx, uint8_t adc_pos, uint8_t adc_neg)
Set multiplexer selection function.
void rtd2_set_idac_current_out(rtd2_t *ctx, uint8_t c_out_1, uint8_t c_out_2)
Set IDAC current out function.
digital_out_t cs
Definition: rtd2.h:440
uint8_t rtd2_set_int_ref(rtd2_t *ctx, uint8_t s_ref)
Set int ref function.
uint8_t rtd2_set_bias(rtd2_t *ctx, uint8_t bias)
Set bias function.
spi_master_mode_t spi_mode
Definition: rtd2.h:473
float rtd2_get_temperature(rtd2_t *ctx)
Get temperature function.
float rtd2_calc_temperature(int32_t adc_val)
Calculate temperature function.
void rtd2_set_system_monitor(rtd2_t *ctx, uint8_t sys_mon)
Set system monitor function.
void rtd2_send_cmd(rtd2_t *ctx, uint8_t cmd)
Send command function.
void rtd2_toggle_cs(rtd2_t *ctx, uint8_t cs_state)
Toggle CS pin function.
void rtd2_set_sleep(rtd2_t *ctx)
Set to sleep function.
This file contains SPI specific macros, functions, etc.
digital_out_t rst
Definition: rtd2.h:444
pin_name_t rdy
Definition: rtd2.h:469
Click ctx object definition.
Definition: rtd2.h:439
void rtd2_enable_start(rtd2_t *ctx, uint8_t en_start)
Enable conversion start function.
uint32_t spi_speed
Definition: rtd2.h:472
void rtd2_set_read_data_once(rtd2_t *ctx)
Set read data once function.
pin_name_t rst
Definition: rtd2.h:468
Click configuration structure definition.
Definition: rtd2.h:459
void rtd2_set_idac_current_mag(rtd2_t *ctx, uint8_t c_idac)
Set IDAC current magnitude function.
pin_name_t miso
Definition: rtd2.h:461
pin_name_t mosi
Definition: rtd2.h:462
uint8_t rtd2_check_new_data_ready(rtd2_t *ctx)
Check new data ready function.
digital_out_t str
Definition: rtd2.h:443
void rtd2_cfg_setup(rtd2_cfg_t *cfg)
Config Object Initialization function.
void rtd2_set_sync(rtd2_t *ctx)
Set sync function.
void rtd2_set_read_data_continuous(rtd2_t *ctx)
Set read data continuous function.
spi_master_chip_select_polarity_t cs_polarity
Definition: rtd2.h:474
int32_t rtd2_read_output_data(rtd2_t *ctx)
Read output data function.
pin_name_t str
Definition: rtd2.h:467
void rtd2_default_cfg(rtd2_t *ctx)
Set default configuration function.
uint8_t rtd2_set_burn_out_source(rtd2_t *ctx, uint8_t burn_out)
Set burn out source function.
void rtd2_hw_reset(rtd2_t *ctx)
Hardware reset function.
digital_in_t rdy
Definition: rtd2.h:447
void rtd2_set_wakeup(rtd2_t *ctx)
Set wakeup function.
spi_master_t spi
Definition: rtd2.h:450
uint8_t rtd2_read_reg(rtd2_t *ctx, uint8_t reg)
Read the register function.
err_t rtd2_init(rtd2_t *ctx, rtd2_cfg_t *cfg)
Initialization function.
void rtd2_set_stop_data(rtd2_t *ctx)
Set stop data function.
void rtd2_set_reset(rtd2_t *ctx)
Set reset function.
void rtd2_read_continuous(rtd2_t *ctx, uint8_t reg, uint8_t *p_rx_data, uint8_t n_bytes)
Continuous read the data function.
void rtd2_write_continuous(rtd2_t *ctx, uint8_t reg, uint8_t *p_tx_data, uint8_t n_bytes)
Continuous write the data function.
void rtd2_write_reg(rtd2_t *ctx, uint8_t reg, uint8_t tx_data)
Write the register function.
pin_name_t cs
Definition: rtd2.h:464
uint8_t rtd2_check_interupt(rtd2_t *ctx)
Check interrupt status function.