Chirp SonicLib  4.9.0
chx01_freqsweep.h
Go to the documentation of this file.
1 
16 /*
17  Copyright 2016-2023, InvenSense, Inc. All rights reserved.
18 
19  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
20  ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
21  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
22  DISCLAIMED.
23 
24  */
25 
26 #ifndef CHX01_FREQSWEEP_H_
27 #define CHX01_FREQSWEEP_H_
28 
29 #ifdef __cplusplus
30 extern "C" {
31 #endif
32 
33 #include <stddef.h>
34 #include <stdint.h>
35 #include <invn/soniclib/soniclib.h>
37 
38 #define CHX01_FREQSWEEP_REG_REGMAPFMT 0x00
39 #define CHX01_FREQSWEEP_REG_OPMODE 0x01
40 #define CHX01_FREQSWEEP_REG_TICK_INTERVAL 0x02
41 #define CHX01_FREQSWEEP_REG_WBCFG 0x04
42 #define CHX01_FREQSWEEP_REG_PERIOD 0x05
43 #define CHX01_FREQSWEEP_REG_CAL_TRIG 0x06
44 #define CHX01_FREQSWEEP_REG_MAX_RANGE 0x07
45 #define CHX01_FREQSWEEP_REG_DCOSTART 0x08
46 #define CHX01_FREQSWEEP_REG_CAL_RESULT 0x0A
47 #define CHX01_FREQSWEEP_REG_DCOSTOP 0x0C
48 #define CHX01_FREQSWEEP_REG_TXLENGTH 0x0E
49 #define CHX01_FREQSWEEP_REG_READY 0x0F
50 #define CHX01_FREQSWEEP_REG_DCOSTEP 0x10
51 #define CHX01_FREQSWEEP_REG_HOLDOFF 0x11
52 #define CHX01_FREQSWEEP_REG_THRESHOLD 0x12
53 #define CHX01_FREQSWEEP_REG_PULSE_WIDTH 0x14
54 #define CHX01_FREQSWEEP_REG_DCODIVIDER 0x15
55 #define CHX01_FREQSWEEP_REG_RXQUEUE 0x16
56 #define CHX01_FREQSWEEP_REG_TOF_SF 0x24
57 #define CHX01_FREQSWEEP_REG_TOF 0x26
58 #define CHX01_FREQSWEEP_REG_AMPLITUDE 0x28
59 #define CHX01_FREQSWEEP_REG_DCOCODE 0x2A
60 #define CHX01_FREQSWEEP_REG_DATA 0x2C
61 
62 // Maximum number of samples that can be stored; max value of MAX_RANGE
63 #define CHX01_FREQSWEEP_MAX_SAMPLES 150
64 
65 // Number of RXQUEUE 16-bit entries
66 #define CHX01_FREQSWEEP_RXQUEUE_ITEMS 7
67 
68 // Bit width of each field in RXQUEUE items
69 #define CHX01_FREQSWEEP_RXQUEUE_BITS_SAMPLES 7
70 #define CHX01_FREQSWEEP_RXQUEUE_BITS_ATTEN 2
71 #define CHX01_FREQSWEEP_RXQUEUE_BITS_GAIN 3
72 
73 // Position of lowest bit in each field of RXQUEUE items
74 #define CHX01_FREQSWEEP_RXQUEUE_BITPOS_SAMPLES 3
75 #define CHX01_FREQSWEEP_RXQUEUE_BITPOS_ATTEN \
76  (CHX01_FREQSWEEP_RXQUEUE_BITPOS_SAMPLES + CHX01_FREQSWEEP_RXQUEUE_BITS_SAMPLES)
77 #define CHX01_FREQSWEEP_RXQUEUE_BITPOS_GAIN (CHX01_FREQSWEEP_RXQUEUE_BITPOS_ATTEN + CHX01_FREQSWEEP_RXQUEUE_BITS_ATTEN)
78 
79 // Enumerated values for various registers
80 #define CHX01_FREQSWEEP_OPMODE_IDLE 0x00
81 #define CHX01_FREQSWEEP_OPMODE_FREERUN 0x02
82 #define CHX01_FREQSWEEP_OPMODE_TRIGGERED 0x10
83 #define CHX01_FREQSWEEP_OPMODE_RX_ONLY 0x20
84 
85 #define CHX01_FREQSWEEP_PERIOD_IDLE 0
86 #define CHX01_FREQSWEEP_TICK_INTERVAL_IDLE 2048
87 
88 #define CHX01_FREQSWEEP_READY_NOTLOCKED 0x00
89 #define CHX01_FREQSWEEP_READY_NOTREADY 0x01
90 
91 // ASIC firmware linkage
92 extern const char *chx01_freqsweep_version; // version string in fw .c file
93 extern const uint8_t chx01_freqsweep_fw_text[];
94 extern const uint8_t chx01_freqsweep_fw_vec[];
95 extern const uint16_t chx01_freqsweep_text_size;
96 extern const uint16_t chx01_freqsweep_vec_size;
97 
98 const unsigned char *get_ram_chx01_freqsweep_init_ptr(void);
99 uint16_t get_chx01_freqsweep_fw_ram_init_addr(void);
100 uint16_t get_chx01_freqsweep_fw_ram_init_size(void);
101 
102 uint8_t chx01_freqsweep_init(ch_dev_t *dev_ptr, fw_info_t **fw_info);
103 
112 uint8_t chx01_freqsweep_set_samples(ch_dev_t *dev_ptr, uint8_t samples);
113 
114 uint8_t chx01_freqsweep_set_max_range(ch_dev_t *dev_ptr, uint16_t max_range_mm);
115 
124 uint8_t chx01_freqsweep_set_threshold(ch_dev_t *dev_ptr, uint16_t threshold);
125 
134 uint8_t chx01_freqsweep_set_holdoff(ch_dev_t *dev_ptr, uint8_t holdoff);
135 
146 uint16_t chx01_freqsweep_get_amplitude(ch_dev_t *dev_ptr);
147 
157 uint8_t chx01_freqsweep_get_iq_data(ch_dev_t *dev_ptr, uint8_t /*ch_iq_sample_t*/ *buf_ptr, uint16_t start_sample,
158  uint16_t num_samples, uint8_t /*ch_io_mode_t*/ mode);
159 
169 uint8_t chx01_freqsweep_set_rxqueue_item(ch_dev_t *dev_ptr, uint8_t queue_index, uint8_t samples, uint8_t attenuation,
170  uint8_t gain);
171 
180 
181 void chx01_freqsweep_prepare_pulse_timer(ch_dev_t *dev_ptr);
182 
183 void chx01_freqsweep_store_pt_result(ch_dev_t *dev_ptr);
184 
185 void chx01_freqsweep_store_op_freq(ch_dev_t *dev_ptr);
186 
187 void chx01_freqsweep_store_bandwidth(ch_dev_t *dev_ptr);
188 
189 void chx01_freqsweep_store_scale_factor(ch_dev_t *dev_ptr);
190 
191 int chx01_freqsweep_set_pulse_width(ch_dev_t *dev_ptr, uint8_t pulse_width);
192 
193 int chx01_freqsweep_set_tx_length(ch_dev_t *dev_ptr, uint8_t tx_length);
194 
195 uint32_t chx01_freqsweep_get_op_freq(ch_dev_t *dev_ptr);
196 
197 int chx01_freqsweep_set_dco_divider(ch_dev_t *dev_ptr, uint8_t dco_divider);
198 
199 uint16_t chx01_freqsweep_get_dco_code(ch_dev_t *dev_ptr);
200 
201 int chx01_freqsweep_set_dco_start(ch_dev_t *dev_ptr, uint16_t dco_start);
202 
203 int chx01_freqsweep_set_dco_stop(ch_dev_t *dev_ptr, uint16_t dco_stop);
204 
205 #ifdef __cplusplus
206 }
207 #endif
208 
209 #endif /* CHX01_FREQSWEEP_H_ */
Internal driver functions for operation with the Chirp ultrasonic sensor.
uint8_t chx01_freqsweep_set_samples(ch_dev_t *dev_ptr, uint8_t samples)
Set the MAX_RANGE register directly.
uint8_t chx01_freqsweep_get_iq_data(ch_dev_t *dev_ptr, uint8_t *buf_ptr, uint16_t start_sample, uint16_t num_samples, uint8_t mode)
Reads IQ data from sensor and places it into specified buffer.
Definition: chx01_freqsweep.c:164
uint8_t chx01_freqsweep_set_rxqueue_item(ch_dev_t *dev_ptr, uint8_t queue_index, uint8_t samples, uint8_t attenuation, uint8_t gain)
Write an entry into the receive settings queue.
Definition: chx01_freqsweep.c:87
uint16_t chx01_freqsweep_get_amplitude(ch_dev_t *dev_ptr)
Gets measured intensity from the sensor.
Definition: chx01_freqsweep.c:158
uint8_t chx01_freqsweep_get_locked_state(ch_dev_t *dev_ptr)
Check if the sensor has completed its start-up calibration (locking) procedure.
Definition: chx01_freqsweep.c:188
uint8_t chx01_freqsweep_set_threshold(ch_dev_t *dev_ptr, uint16_t threshold)
Configure threshold of detection.
Definition: chx01_freqsweep.c:105
uint8_t chx01_freqsweep_set_holdoff(ch_dev_t *dev_ptr, uint8_t holdoff)
Configure target detection holdoff.
Definition: chx01_freqsweep.c:113
SonicLib public API and support functions for TDK/InvenSense ultrasonic sensors (originally developed...
Chirp sensor device descriptor structure.
Definition: soniclib.h:739
Definition: soniclib.h:665