26 #ifndef CHX01_FREQSWEEP_H_
27 #define CHX01_FREQSWEEP_H_
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
63 #define CHX01_FREQSWEEP_MAX_SAMPLES 150
66 #define CHX01_FREQSWEEP_RXQUEUE_ITEMS 7
69 #define CHX01_FREQSWEEP_RXQUEUE_BITS_SAMPLES 7
70 #define CHX01_FREQSWEEP_RXQUEUE_BITS_ATTEN 2
71 #define CHX01_FREQSWEEP_RXQUEUE_BITS_GAIN 3
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)
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
85 #define CHX01_FREQSWEEP_PERIOD_IDLE 0
86 #define CHX01_FREQSWEEP_TICK_INTERVAL_IDLE 2048
88 #define CHX01_FREQSWEEP_READY_NOTLOCKED 0x00
89 #define CHX01_FREQSWEEP_READY_NOTREADY 0x01
92 extern const char *chx01_freqsweep_version;
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;
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);
114 uint8_t chx01_freqsweep_set_max_range(
ch_dev_t *dev_ptr, uint16_t max_range_mm);
158 uint16_t num_samples, uint8_t mode);
181 void chx01_freqsweep_prepare_pulse_timer(
ch_dev_t *dev_ptr);
183 void chx01_freqsweep_store_pt_result(
ch_dev_t *dev_ptr);
185 void chx01_freqsweep_store_op_freq(
ch_dev_t *dev_ptr);
187 void chx01_freqsweep_store_bandwidth(
ch_dev_t *dev_ptr);
189 void chx01_freqsweep_store_scale_factor(
ch_dev_t *dev_ptr);
191 int chx01_freqsweep_set_pulse_width(
ch_dev_t *dev_ptr, uint8_t pulse_width);
193 int chx01_freqsweep_set_tx_length(
ch_dev_t *dev_ptr, uint8_t tx_length);
195 uint32_t chx01_freqsweep_get_op_freq(
ch_dev_t *dev_ptr);
197 int chx01_freqsweep_set_dco_divider(
ch_dev_t *dev_ptr, uint8_t dco_divider);
199 uint16_t chx01_freqsweep_get_dco_code(
ch_dev_t *dev_ptr);
201 int chx01_freqsweep_set_dco_start(
ch_dev_t *dev_ptr, uint16_t dco_start);
203 int chx01_freqsweep_set_dco_stop(
ch_dev_t *dev_ptr, uint16_t dco_stop);
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