irgrid2  2.0.0.0
irgrid2.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 IRGRID2_H
29 #define IRGRID2_H
30 
31 #ifdef __cplusplus
32 extern "C"{
33 #endif
34 
35 #include "mikrosdk_version.h"
36 
37 #ifdef __GNUC__
38 #if mikroSDK_GET_VERSION < 20800ul
39 #include "rcu_delays.h"
40 #else
41 #include "delays.h"
42 #endif
43 #endif
44 
45 #include "drv_digital_out.h"
46 #include "drv_i2c_master.h"
47 
74 #define IRGRID2_SET_DEV_ADDR 0x33
75  // irgrid2_set
77 
92 #define IRGRID2_MAP_MIKROBUS( cfg, mikrobus ) \
93  cfg.scl = MIKROBUS( mikrobus, MIKROBUS_SCL ); \
94  cfg.sda = MIKROBUS( mikrobus, MIKROBUS_SDA )
95  // irgrid2_map // irgrid2
98 
103 typedef struct
104 {
105  int16_t k_vdd;
106  int16_t vdd_25;
107  float kv_ptat;
108  float kt_ptat;
109  uint16_t v_ptat_25;
110  float alpha_ptat;
111  int16_t gain_eeprom;
112  float tgc;
113  float cp_kv;
114  float cp_kta;
117  float ks_ta;
118  float ks_to[ 4 ];
119  int16_t ct[ 4 ];
120  float alpha[ 768 ];
121  int16_t offset[ 768 ];
122  float kta[ 768 ];
123  float kv[ 768 ];
124  float cp_alpha[ 2 ];
125  int16_t cp_offset[ 2 ];
126  float il_chess_c[ 3 ];
127  uint16_t broken_pixels[ 5 ];
128  uint16_t outlier_pixels[ 5 ];
130 
135 typedef struct
136 {
137  // Modules
138  i2c_master_t i2c;
140  // I2C slave address
141  uint8_t slave_address;
143 
144 } irgrid2_t;
145 
150 typedef struct
151 {
152  pin_name_t scl;
153  pin_name_t sda;
155  uint32_t i2c_speed;
156  uint8_t i2c_address;
158 } irgrid2_cfg_t;
159 
164 typedef enum
165 {
175  IRGRID2_2_PIX_ERROR = 0xF4
176 
178 
196 
212 err_t irgrid2_init ( irgrid2_t *ctx, irgrid2_cfg_t *cfg );
213 
228 
244 void irgrid2_generic_write ( irgrid2_t *ctx, uint16_t reg, uint8_t *data_buf, uint16_t len );
245 
262 void irgrid2_generic_read ( irgrid2_t *ctx, uint16_t reg, uint8_t *rx_buf, uint16_t rx_len );
263 
273 void irgrid2_read_eeprom ( irgrid2_t *ctx, uint16_t *eeprom_data );
274 
284 uint8_t irgrid2_extract_parameters ( irgrid2_t *ctx, uint16_t *eeprom_data );
285 
295 void irgrid2_set_refresh_rate ( irgrid2_t *ctx, uint8_t refresh_rate );
296 
306 uint16_t irgrid2_get_frame_data ( irgrid2_t *ctx, uint16_t *frame_data );
307 
317 void irgrid2_set_resolution ( irgrid2_t *ctx, uint8_t resolution );
318 
327 
336 
346 
356 
366 
377 void irgrid2_get_pixel_temperature ( irgrid2_t *ctx, float *temp_ambient, float *pixel_temp );
378 
388 float irgrid2_get_temp_ambient ( irgrid2_t *ctx, uint16_t *frame_data );
389 
399 uint16_t irgrid2_get_subpage_number ( uint16_t *frame_data );
400 
408 float irgrid2_get_vdd ( irgrid2_t *ctx, uint16_t *frame_data );
409 
421 void irgrid2_calculate_temp_obj ( irgrid2_t *ctx, uint16_t *frame_data, float tr_data, float *px_matrix );
422 
433 void irgrid2_get_image ( irgrid2_t *ctx, uint16_t *frame_data, float *px_matrix );
434 #ifdef __cplusplus
435 }
436 #endif
437 #endif // IRGRID2_H
438  // irgrid2
440 
441 // ------------------------------------------------------------------------ END
irgrid2_get_refresh_rate
uint16_t irgrid2_get_refresh_rate(irgrid2_t *ctx)
Function for getting current refresh Rate.
irgrid2_cfg_t::sda
pin_name_t sda
Definition: irgrid2.h:153
irgrid2_get_pixel_temperature
void irgrid2_get_pixel_temperature(irgrid2_t *ctx, float *temp_ambient, float *pixel_temp)
Function for getting pixels temperature.
irgrid2_params_t::kv_ptat
float kv_ptat
Definition: irgrid2.h:107
irgrid2_params_t::resolution_eeprom
uint8_t resolution_eeprom
Definition: irgrid2.h:115
irgrid2_generic_write
void irgrid2_generic_write(irgrid2_t *ctx, uint16_t reg, uint8_t *data_buf, uint16_t len)
IR Grid 2 I2C writing function.
irgrid2_calculate_temp_obj
void irgrid2_calculate_temp_obj(irgrid2_t *ctx, uint16_t *frame_data, float tr_data, float *px_matrix)
Function for calculating temperature objects.
irgrid2_t
IR Grid 2 Click context object.
Definition: irgrid2.h:136
irgrid2_params_t::k_vdd
int16_t k_vdd
Definition: irgrid2.h:105
irgrid2_generic_read
void irgrid2_generic_read(irgrid2_t *ctx, uint16_t reg, uint8_t *rx_buf, uint16_t rx_len)
IR Grid 2 I2C reading function.
irgrid2_params_t::gain_eeprom
int16_t gain_eeprom
Definition: irgrid2.h:111
irgrid2_params_t::cp_kv
float cp_kv
Definition: irgrid2.h:113
irgrid2_t::params
irgrid2_params_t params
Definition: irgrid2.h:142
irgrid2_cfg_t::i2c_address
uint8_t i2c_address
Definition: irgrid2.h:156
irgrid2_get_temp_ambient
float irgrid2_get_temp_ambient(irgrid2_t *ctx, uint16_t *frame_data)
Function for getting Ambient temperature.
irgrid2_t::i2c
i2c_master_t i2c
Definition: irgrid2.h:138
irgrid2_get_current_res
uint16_t irgrid2_get_current_res(irgrid2_t *ctx)
Function for getting current resolution.
irgrid2_get_vdd
float irgrid2_get_vdd(irgrid2_t *ctx, uint16_t *frame_data)
Function for getting Vdd.
irgrid2_params_t
IR Grid 2 Click params definition.
Definition: irgrid2.h:104
irgrid2_params_t::calibration_mode_eeprom
uint8_t calibration_mode_eeprom
Definition: irgrid2.h:116
IRGRID2_INIT_ERROR
@ IRGRID2_INIT_ERROR
Definition: irgrid2.h:168
IRGRID2_EEPROM_ERROR
@ IRGRID2_EEPROM_ERROR
Definition: irgrid2.h:170
IRGRID2_OUTLIER_PIX_ERROR
@ IRGRID2_OUTLIER_PIX_ERROR
Definition: irgrid2.h:174
irgrid2_cfg_t
IR Grid 2 Click configuration object.
Definition: irgrid2.h:151
irgrid2_return_value_t
irgrid2_return_value_t
IR Grid 2 Click return value data.
Definition: irgrid2.h:165
irgrid2_set_chess_mode
void irgrid2_set_chess_mode(irgrid2_t *ctx)
Function for setting chess mode.
irgrid2_t::slave_address
uint8_t slave_address
Definition: irgrid2.h:141
irgrid2_get_image
void irgrid2_get_image(irgrid2_t *ctx, uint16_t *frame_data, float *px_matrix)
Function for getting Image.
irgrid2_read_eeprom
void irgrid2_read_eeprom(irgrid2_t *ctx, uint16_t *eeprom_data)
Function for reading EEPROM.
IRGRID2_ERROR
@ IRGRID2_ERROR
Definition: irgrid2.h:167
IRGRID2_OK
@ IRGRID2_OK
Definition: irgrid2.h:166
irgrid2_cfg_t::i2c_speed
uint32_t i2c_speed
Definition: irgrid2.h:155
irgrid2_params_t::alpha_ptat
float alpha_ptat
Definition: irgrid2.h:110
IRGRID2_EEPROM_OK
@ IRGRID2_EEPROM_OK
Definition: irgrid2.h:169
irgrid2_set_interleaved_mode
void irgrid2_set_interleaved_mode(irgrid2_t *ctx)
Function for setting interleaved mode.
irgrid2_params_t::v_ptat_25
uint16_t v_ptat_25
Definition: irgrid2.h:109
irgrid2_cfg_setup
void irgrid2_cfg_setup(irgrid2_cfg_t *cfg)
IR Grid 2 configuration object setup function.
IRGRID2_BROKEN_PIX_ERROR
@ IRGRID2_BROKEN_PIX_ERROR
Definition: irgrid2.h:173
irgrid2_params_t::vdd_25
int16_t vdd_25
Definition: irgrid2.h:106
irgrid2_default_cfg
void irgrid2_default_cfg(irgrid2_t *ctx)
IR Grid 2 default configuration function.
irgrid2_params_t::cp_kta
float cp_kta
Definition: irgrid2.h:114
IRGRID2_2_PIX_ERROR
@ IRGRID2_2_PIX_ERROR
Definition: irgrid2.h:175
irgrid2_get_subpage_number
uint16_t irgrid2_get_subpage_number(uint16_t *frame_data)
Function for getting sub page number.
irgrid2_get_frame_data
uint16_t irgrid2_get_frame_data(irgrid2_t *ctx, uint16_t *frame_data)
Function for getting frame data.
irgrid2_params_t::tgc
float tgc
Definition: irgrid2.h:112
irgrid2_cfg_t::scl
pin_name_t scl
Definition: irgrid2.h:152
irgrid2_params_t::kt_ptat
float kt_ptat
Definition: irgrid2.h:108
irgrid2_params_t::ks_ta
float ks_ta
Definition: irgrid2.h:117
IRGRID2_ADJ_PIXELS_ERROR
@ IRGRID2_ADJ_PIXELS_ERROR
Definition: irgrid2.h:171
irgrid2_extract_parameters
uint8_t irgrid2_extract_parameters(irgrid2_t *ctx, uint16_t *eeprom_data)
Parameters storage function.
irgrid2_get_current_mode
uint16_t irgrid2_get_current_mode(irgrid2_t *ctx)
Function for getting current mode.
irgrid2_set_refresh_rate
void irgrid2_set_refresh_rate(irgrid2_t *ctx, uint8_t refresh_rate)
Function for setting refresh rate.
IRGRID2_ADJ_PIXELS_OK
@ IRGRID2_ADJ_PIXELS_OK
Definition: irgrid2.h:172
irgrid2_init
err_t irgrid2_init(irgrid2_t *ctx, irgrid2_cfg_t *cfg)
IR Grid 2 initialization function.
irgrid2_set_resolution
void irgrid2_set_resolution(irgrid2_t *ctx, uint8_t resolution)
Function for setting resolution.