35 #ifdef INCLUDE_WHITNEY_SUPPORT
41 #define CH_COMMON_RTC_CAL_PULSE_MS 100
43 #ifdef INCLUDE_WHITNEY_SUPPORT
46 #define CHX01_SCALEFACTOR_INDEX 4
47 #define CHX01_BANDWIDTH_INDEX_1 6
48 #define CHX01_BANDWIDTH_INDEX_2 7
50 #if (CH101_DATA_MEM_SIZE == CH201_DATA_MEM_SIZE)
51 #define CHX01_DATA_MEM_SIZE CH101_DATA_MEM_SIZE
53 #if (CH101_DATA_MEM_ADDR == CH201_DATA_MEM_ADDR)
54 #define CHX01_DATA_MEM_ADDR CH101_DATA_MEM_ADDR
56 #if (CH101_PROG_MEM_SIZE == CH201_PROG_MEM_SIZE)
57 #define CHX01_PROG_MEM_SIZE CH101_PROG_MEM_SIZE
59 #if (CH101_PROG_MEM_ADDR == CH201_PROG_MEM_ADDR)
60 #define CHX01_PROG_MEM_ADDR CH101_PROG_MEM_ADDR
62 #if (CH101_FW_SIZE == CH201_FW_SIZE)
63 #define CHX01_FW_SIZE CH101_FW_SIZE
66 #define CHX01_COMMON_CAL_TRIG_USE_BUS (0x80)
67 #define CHX01_I2C_RTC_CYCLES (128)
71 #define CH101_COMMON_REG_OPMODE 0x01
72 #define CH101_COMMON_REG_TICK_INTERVAL 0x02
73 #define CH101_COMMON_REG_PERIOD 0x05
74 #define CH101_COMMON_REG_CAL_TRIG 0x06
75 #define CH101_COMMON_REG_MAX_RANGE 0x07
76 #define CH101_COMMON_REG_TIME_PLAN 0x09
77 #define CH101_COMMON_REG_TX_LENGTH 0x10
78 #define CH101_COMMON_REG_CAL_RESULT 0x0A
79 #define CH101_COMMON_REG_REV_CYCLES 0x0C
80 #define CH101_COMMON_REG_DCO_PERIOD 0x0E
81 #define CH101_COMMON_REG_RX_HOLDOFF 0x11
82 #define CH101_COMMON_REG_STAT_RANGE 0x12
83 #define CH101_COMMON_REG_STAT_COEFF 0x13
84 #define CH101_COMMON_REG_READY 0x14
85 #define CH101_COMMON_REG_TOF_SF 0x16
86 #define CH101_COMMON_REG_TOF 0x18
87 #define CH101_COMMON_REG_AMPLITUDE 0x1A
88 #define CH101_COMMON_REG_DATA 0x1C
90 #define CH101_COMMON_I2CREGS_OFFSET 0
92 #define CH101_COMMON_READY_FREQ_LOCKED (0x02)
94 #define CH101_COMMON_FREQCOUNTERCYCLES (128)
96 #define CH101_COMMON_STAT_COEFF_DEFAULT (6)
100 #define CH201_COMMON_REG_OPMODE 0x01
101 #define CH201_COMMON_REG_TICK_INTERVAL 0x02
102 #define CH201_COMMON_REG_LOW_GAIN_RXLEN 0x04
103 #define CH201_COMMON_REG_PERIOD 0x05
104 #define CH201_COMMON_REG_CAL_TRIG 0x06
105 #define CH201_COMMON_REG_MAX_RANGE 0x07
106 #define CH201_COMMON_REG_THRESH_LEN_0 0x08
107 #define CH201_COMMON_REG_THRESH_LEN_1 0x09
108 #define CH201_COMMON_REG_CAL_RESULT 0x0A
109 #define CH201_COMMON_REG_THRESH_LEN_2 0x0C
110 #define CH201_COMMON_REG_THRESH_LEN_3 0x0D
111 #define CH201_COMMON_REG_TX_LENGTH 0x10
112 #define CH201_COMMON_REG_RX_HOLDOFF 0x11
113 #define CH201_COMMON_REG_ST_RANGE 0x12
114 #define CH201_COMMON_REG_READY 0x14
115 #define CH201_COMMON_REG_THRESH_LEN_4 0x15
116 #define CH201_COMMON_REG_THRESHOLDS 0x16
117 #define CH201_COMMON_REG_TOF_SF 0x22
118 #define CH201_COMMON_REG_TOF 0x24
119 #define CH201_COMMON_REG_AMPLITUDE 0x26
120 #define CH201_COMMON_REG_DATA 0x28
122 #define CH201_COMMON_I2CREGS_OFFSET 0
124 #define CH201_COMMON_READY_FREQ_LOCKED (0x02)
126 #define CH201_COMMON_FREQCOUNTERCYCLES (128)
127 #define CH201_COMMON_RX_LOW_GAIN_MIN (8)
129 #define CHX01_GPRMT_REG_OPMODE 0x01
130 #define CHX01_GPRMT_REG_TICK_INTERVAL 0x02
131 #define CHX01_GPRMT_REG_LOW_GAIN_RXLEN 0x04
132 #define CHX01_GPRMT_REG_PERIOD 0x05
133 #define CHX01_GPRMT_REG_CAL_TRIG 0x06
134 #define CHX01_GPRMT_REG_MAX_RANGE 0x07
135 #define CHX01_GPRMT_REG_THRESH_LEN_0 0x08
136 #define CHX01_GPRMT_REG_THRESH_LEN_1 0x09
137 #define CHX01_GPRMT_REG_CAL_RESULT 0x0A
138 #define CHX01_GPRMT_REG_THRESH_LEN_2 0x0C
139 #define CHX01_GPRMT_REG_THRESH_LEN_3 0x0D
140 #define CHX01_GPRMT_REG_TX_LENGTH 0x10
141 #define CHX01_GPRMT_REG_RX_HOLDOFF 0x11
142 #define CHX01_GPRMT_REG_ST_RANGE 0x12
143 #define CHX01_GPRMT_REG_READY 0x14
144 #define CHX01_GPRMT_REG_THRESH_LEN_4 0x15
145 #define CHX01_GPRMT_REG_THRESHOLDS 0x16
146 #define CHX01_GPRMT_REG_TOF_SF 0x22
147 #define CHX01_GPRMT_REG_TOF 0x24
148 #define CHX01_GPRMT_REG_AMPLITUDE 0x26
149 #define CHX01_GPRMT_REG_DATA 0x28
154 #define NSEC_PER_SEC (1000000000U)
156 #define PMUT_FREQUENCY_ERROR_CODE (1)
163 uint8_t ch_common_group_start(
ch_group_t *grp_ptr);
167 uint8_t ch_common_fw_load(
ch_dev_t *dev_ptr);
171 uint8_t ch_common_set_sample_interval(
ch_dev_t *dev_ptr, uint16_t interval_ms);
172 uint8_t ch_common_set_freerun_interval(
ch_dev_t *dev_ptr, uint16_t interval_ms);
174 uint8_t ch_common_set_freerun_interval_us(
ch_dev_t *dev_ptr, uint32_t interval_us);
176 uint8_t ch_common_set_freerun_interval_ticks(
ch_dev_t *dev_ptr, uint32_t interval_periods);
178 uint8_t ch_common_set_freerun_time_hop(
ch_dev_t *dev_ptr, uint8_t meas_num,
bool enable);
180 uint8_t ch_common_set_num_samples(
ch_dev_t *dev_ptr, uint16_t num_samples);
182 uint16_t ch_common_get_num_samples(
ch_dev_t *dev_ptr);
184 uint8_t ch_common_set_max_range(
ch_dev_t *dev_ptr, uint16_t max_range_mm);
186 uint8_t ch_common_get_locked_state(
ch_dev_t *dev_ptr);
188 uint32_t ch_common_get_op_freq(
ch_dev_t *dev_ptr);
190 void ch_common_prepare_pulse_timer(
ch_dev_t *dev_ptr);
192 void ch_common_store_pt_result(
ch_dev_t *dev_ptr);
194 void ch_common_store_op_freq(
ch_dev_t *dev_ptr);
196 void ch_common_store_bandwidth(
ch_dev_t *dev_ptr);
198 void ch_common_store_scale_factor(
ch_dev_t *dev_ptr);
200 uint16_t ch_common_mm_to_samples(
ch_dev_t *dev_ptr, uint16_t num_mm);
202 uint16_t ch_common_samples_to_mm(
ch_dev_t *dev_ptr, uint16_t num_samples);
204 uint8_t ch_common_get_iq_data(
ch_dev_t *dev_ptr,
ch_iq_sample_t *buf_ptr, uint16_t start_sample, uint16_t num_samples,
207 uint8_t ch_common_set_sample_window(
ch_dev_t *dev_ptr, uint16_t start_sample, uint16_t end_sample);
209 uint16_t ch_common_get_amplitude_avg(
ch_dev_t *dev_ptr);
211 uint8_t ch_common_get_amplitude_data(
ch_dev_t *dev_ptr, uint16_t *buf_ptr, uint16_t start_sample, uint16_t num_samples,
216 uint8_t ch_common_set_rx_low_gain(
ch_dev_t *dev_ptr, uint16_t num_samples);
217 uint16_t ch_common_get_rx_low_gain(
ch_dev_t *dev_ptr);
219 uint8_t ch_common_set_tx_length(
ch_dev_t *dev_ptr, uint16_t num_cycles);
220 uint16_t ch_common_get_tx_length(
ch_dev_t *dev_ptr);
225 uint8_t ch_common_check_program(
ch_dev_t *dev_ptr);
227 uint8_t ch_common_group_set_frequency(
ch_group_t *grp_ptr, uint32_t frequency);
229 uint8_t ch_common_watchdog_enable(
ch_dev_t *dev_ptr);
230 uint8_t ch_common_watchdog_disable(
ch_dev_t *dev_ptr);
232 #ifdef INCLUDE_SHASTA_SUPPORT
233 uint8_t ch_common_meas_init_queue(
ch_dev_t *dev_ptr);
234 uint8_t ch_common_meas_reset(
ch_dev_t *dev_ptr, uint8_t meas_num);
237 uint8_t ch_common_write_data_validation_cfg(
ch_dev_t *dev_ptr, uint8_t en, int16_t seed);
241 uint8_t ch_common_meas_import(
ch_dev_t *dev_ptr, measurement_queue_t *meas_queue_ptr,
void *algo_cfg_ptr);
244 uint8_t inst_num_to_insert);
245 uint8_t ch_common_meas_remove_instruction(
ch_dev_t *dev_ptr, uint8_t meas_num, uint8_t inst_num_to_remove);
246 uint8_t ch_common_meas_add_segment_count(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_cycles, uint8_t int_enable);
247 uint8_t ch_common_meas_add_segment_rx(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples, uint8_t gain,
248 uint8_t atten, uint8_t int_enable);
249 uint8_t ch_common_meas_add_segment_tx(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_cycles, uint8_t pulse_width,
250 uint8_t phase, uint8_t int_enable);
251 void ch_common_meas_init_segment_count(
ch_meas_segment_t *seg_ptr, uint16_t num_cycles, uint8_t int_enable);
253 uint8_t atten, uint8_t int_enable);
254 void ch_common_meas_init_segment_tx(
ch_meas_segment_t *seg_ptr, uint16_t num_cycles, uint8_t pulse_width, uint8_t phase,
256 uint8_t ch_common_meas_optimize(
ch_dev_t *dev_ptr, measurement_queue_t *meas_queue_ptr,
void *algo_cfg_ptr);
257 uint8_t ch_common_meas_write_config(
ch_dev_t *dev_ptr);
258 uint8_t ch_common_meas_update_counts(
ch_dev_t *dev_ptr, uint8_t meas_num, measurement_t *meas_ptr);
259 void ch_common_meas_activate(
ch_dev_t *dev_ptr, uint8_t meas_num);
260 void ch_common_meas_standby(
ch_dev_t *dev_ptr, uint8_t meas_num);
261 uint8_t ch_common_meas_switch(
ch_dev_t *dev_ptr);
262 uint8_t ch_common_meas_get_last_num(
ch_dev_t *dev_ptr);
266 uint8_t ch_common_meas_set_interval(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t interval_ms);
267 uint8_t ch_common_meas_set_interval_us(
ch_dev_t *dev_ptr, uint8_t meas_num, uint32_t interval_us);
268 uint8_t ch_common_meas_set_interval_ticks(
ch_dev_t *dev_ptr, uint8_t meas_num, uint32_t rtc_periods);
269 uint16_t ch_common_meas_get_interval(
ch_dev_t *dev_ptr, uint8_t meas_num);
270 uint32_t ch_common_meas_get_interval_us(
ch_dev_t *dev_ptr, uint8_t meas_num);
271 uint32_t ch_common_meas_get_interval_ticks(
ch_dev_t *dev_ptr, uint8_t meas_num);
272 uint8_t ch_common_meas_set_num_samples(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples);
273 uint16_t ch_common_meas_get_num_samples(
ch_dev_t *dev_ptr, uint8_t meas_num);
274 uint8_t ch_common_meas_set_max_range(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t max_range_mm);
275 uint8_t ch_common_meas_set_odr(
ch_dev_t *dev_ptr, uint8_t meas_num,
ch_odr_t odr);
277 uint16_t ch_common_meas_mm_to_samples(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_mm);
278 uint16_t ch_common_meas_samples_to_mm(
ch_dev_t *dev_ptr, uint8_t meas_num, uint16_t num_samples);
300 uint8_t ch_common_init_algo(
ch_dev_t *dev_ptr);
302 uint8_t ch_common_get_algo_config(
ch_dev_t *dev_ptr,
void *algo_cfg_ptr);
303 uint8_t ch_common_set_algo_config(
ch_dev_t *dev_ptr,
const void *algo_cfg_ptr);
304 uint8_t ch_common_get_algo_output(
ch_dev_t *dev_ptr,
void *algo_out_ptr);
305 uint8_t ch_common_get_algo_state(
ch_dev_t *dev_ptr,
void *algo_state_ptr);
337 uint32_t ch_common_samples_to_cycles(uint16_t num_samples,
ch_odr_t odr);
338 uint16_t ch_common_cycles_to_samples(uint32_t num_cycles,
ch_odr_t odr,
bool include_s0);
339 uint32_t ch_common_usec_to_cycles(
ch_dev_t *dev_ptr, uint32_t num_usec);
340 uint32_t ch_common_cycles_to_usec(
ch_dev_t *dev_ptr, uint32_t num_cycles);
341 uint16_t ch_common_usec_to_ticks(
const ch_dev_t *dev_ptr, uint32_t num_usec);
342 uint32_t ch_common_ticks_to_usec(
const ch_dev_t *dev_ptr, uint16_t num_rtc_periods);
344 uint16_t ch_common_get_num_output_samples(
ch_dev_t *dev_ptr);
Internal definitions for the Chirp CH101 ultrasonic sensor.
Internal definitions for the Chirp CH201 ultrasonic sensor.
uint8_t ch_common_read_meas_config(ch_dev_t *dev_ptr)
Read configuration settings associated with the last measurement.
Definition: ch_common.c:2978
uint32_t ch_common_range_lsb_to_mm(const ch_dev_t *dev_ptr, uint32_t time_of_flight, ch_range_t range_type)
Convert the raw range from the sensor to millimeters.
Definition: ch_common.c:686
uint8_t ch_common_set_frequency(ch_dev_t *dev_ptr, uint32_t target_freq_hz)
Set the closest available operating frequency to a desired operating frequency.
Definition: ch_common.c:1703
uint32_t ch_common_measure_pmut_frequency(ch_dev_t *dev_ptr)
Measure PMUT frequency on an ICU device.
Definition: ch_common.c:874
SonicLib public API and support functions for TDK/InvenSense ultrasonic sensors (originally developed...
ch_mode_t
Sensor operating modes.
Definition: soniclib.h:225
ch_range_t
Range data types.
Definition: soniclib.h:218
ch_interrupt_drive_t
Sensor interrupt drive type.
Definition: soniclib.h:283
ch_interrupt_mode_t
Sensor interrupt modes.
Definition: soniclib.h:277
ch_io_mode_t
I/O blocking mode flags.
Definition: soniclib.h:384
uint8_t(* ch_fw_init_func_t)(ch_dev_t *dev_ptr, fw_info_t **fw_info)
ASIC firmware init function pointer typedef.
Definition: soniclib.h:687
ch_odr_t
Sensor output data rate (ODR).
Definition: soniclib.h:339
ch_rtc_src_t
Sensor real-time clock sources.
Definition: soniclib.h:349
ch_tgt_int_filter_t
Target interrupt filter modes.
Definition: soniclib.h:328
ch_pmut_clk_cfg_t
PMUT clock configuration (ICU sensors)
Definition: soniclib.h:374
Sensor combined amplitude + detection threshold sample value.
Definition: soniclib.h:430
Calibration result structure.
Definition: soniclib.h:442
Chirp sensor device descriptor structure.
Definition: soniclib.h:732
Chirp sensor group descriptor structure.
Definition: soniclib.h:704
Sensor I/Q data value.
Definition: soniclib.h:424
Measurement configuration - used during ch_meas_init()
Definition: soniclib.h:494
Measurement info.
Definition: soniclib.h:523
Measurement queue info.
Definition: soniclib.h:547
Measurement segment info.
Definition: soniclib.h:534
Measurement segment.
Definition: soniclib.h:517
Sensor manufacturing info.
Definition: soniclib.h:557
Definition: icu_algo_info.h:10