Basic set of APIs for interacting with the XENSIV(TM) BGT60TRxx 60GHz FMCW radar sensors.
The library allows:
More information about the XENSIV(TM) BGT60TRxx 60GHz FMCW radar sensors is available at: https://www.infineon.com/cms/de/product/sensor/radar-sensors/radar-sensors-for-iot/60ghz-radar/
Data Structures | |
struct | xensiv_bgt60trxx_t |
XENSIV(TM) BGT60TRxx sensor device object. More... | |
Enumerations | |
enum | xensiv_bgt60trxx_reset_t { XENSIV_BGT60TRXX_RESET_SW = 0x1 << XENSIV_BGT60TRXX_REG_MAIN_RESET_POS, XENSIV_BGT60TRXX_RESET_FSM = 0x2 << XENSIV_BGT60TRXX_REG_MAIN_RESET_POS, XENSIV_BGT60TRXX_RESET_FIFO = 0x4 << XENSIV_BGT60TRXX_REG_MAIN_RESET_POS } |
enum defining the different reset commands passed to xensiv_bgt60trxx_soft_reset() More... | |
enum | xensiv_bgt60trxx_device_t { XENSIV_DEVICE_BGT60TR13C = 0, XENSIV_DEVICE_BGT60UTR13D = 1, XENSIV_DEVICE_BGT60UTR11 = 2, XENSIV_DEVICE_UNKNOWN = -1 } |
enum with supported devices More... | |
Functions | |
int32_t | xensiv_bgt60trxx_init (xensiv_bgt60trxx_t *dev, void *iface, bool high_speed) |
Initializes the XENSIV(TM) BGT60TRxx radar sensor device. More... | |
xensiv_bgt60trxx_device_t | xensiv_bgt60trxx_get_device (const xensiv_bgt60trxx_t *dev) |
Obtains the detected sensor device name. More... | |
int32_t | xensiv_bgt60trxx_config (xensiv_bgt60trxx_t *dev, const uint32_t *regs, uint32_t len) |
Configures the XENSIV(TM) BGT60TRxx radar sensor device. More... | |
int32_t | xensiv_bgt60trxx_set_reg (const xensiv_bgt60trxx_t *dev, uint32_t reg_addr, uint32_t data) |
Writes the given data buffer into the sensor device. More... | |
int32_t | xensiv_bgt60trxx_get_reg (const xensiv_bgt60trxx_t *dev, uint32_t reg_addr, uint32_t *data) |
Reads from the sensor device into the given data buffer. More... | |
uint16_t | xensiv_bgt60trxx_get_fifo_size (const xensiv_bgt60trxx_t *dev) |
Obtains the sensor device FIFO size. More... | |
int32_t | xensiv_bgt60trxx_get_fifo_status (const xensiv_bgt60trxx_t *dev, uint32_t *status) |
Obtains the sensor device FIFO status. More... | |
int32_t | xensiv_bgt60trxx_set_fifo_limit (const xensiv_bgt60trxx_t *dev, uint32_t num_samples) |
Sets the FIFO compare reference value. More... | |
int32_t | xensiv_bgt60trxx_get_fifo_data (const xensiv_bgt60trxx_t *dev, uint16_t *data, uint32_t num_samples) |
Reads from the sensor device FIFO into the given data buffer. More... | |
int32_t | xensiv_bgt60trxx_start_frame (const xensiv_bgt60trxx_t *dev, bool start) |
Starts/stops radar frame generation. More... | |
int32_t | xensiv_bgt60trxx_soft_reset (const xensiv_bgt60trxx_t *dev, xensiv_bgt60trxx_reset_t reset_type) |
Triggers a soft reset of the sensor device. More... | |
int32_t | xensiv_bgt60trxx_enable_data_test_mode (const xensiv_bgt60trxx_t *dev, bool enable) |
Enables/disables generation of a test sequence out of FIFO. More... | |
void | xensiv_bgt60trxx_hard_reset (const xensiv_bgt60trxx_t *dev) |
Performs a hard reset of the sensor device. More... | |
uint16_t | xensiv_bgt60trxx_get_next_test_word (uint16_t cur_test_word) |
Utility function that generates test sequence data that can be used to compare against the FIFO data obtained from device sensor when data test mode is enabled. More... | |
struct xensiv_bgt60trxx_t |
#define XENSIV_BGT60TRXX_STATUS_OK (0) |
Result code indicating successful operation.
#define XENSIV_BGT60TRXX_STATUS_COM_ERROR (1) |
Result code indicating a communication error.
#define XENSIV_BGT60TRXX_STATUS_DEV_ERROR (2) |
Result code indicating an unsupported device error.
#define XENSIV_BGT60TRXX_STATUS_TIMEOUT_ERROR (3) |
Result code indicating an operation timeout error.
#define XENSIV_BGT60TRXX_STATUS_GSR0_ERROR (4) |
Result code indicating that an error occurred while reading from FIFO.
#define XENSIV_BGT60TRXX_INITIAL_TEST_WORD (0x0001U) |
Initial value of the LFSR test sequence generator.
#define XENSIV_BGT60TRXX_NUM_SAMPLES_FIFO_WORD (2U) |
Number of samples stored in a FIFO word (24 bits).
#define XENSIV_BGT60TRXX_FIFO_WORD_SIZE_BYTES (3U) /* two ADC samples of 12bits */ |
Size of the radar device FIFO word in bytes.
#define XENSIV_BGT60TRXX_SPI_BURST_HEADER_SIZE_BYTES (4U) |
Size of the header in the SPI burst transfer.
#define XENSIV_BGT60TRXX_RESET_WAIT_TIMEOUT (0xFFFFFFFFU) |
Timeout for wait on software reset done.
#define XENSIV_BGT60TRXX_REG_MAIN (0x00U) |
MAIN: addr
#define XENSIV_BGT60TRXX_REG_ADC0 (0x01U) |
ADC0: addr
#define XENSIV_BGT60TRXX_REG_CHIP_ID (0x02U) |
CHIP_ID: addr
#define XENSIV_BGT60TRXX_REG_STAT1 (0x03U) |
STAT1: addr
#define XENSIV_BGT60TRXX_REG_PACR1 (0x04U) |
PACR1: addr
#define XENSIV_BGT60TRXX_REG_PACR2 (0x05U) |
PACR2: addr
#define XENSIV_BGT60TRXX_REG_SFCTL (0x06U) |
SFCTL: addr
#define XENSIV_BGT60TRXX_REG_SADC_CTRL (0x07U) |
SADC_CTRL: addr
#define XENSIV_BGT60TRXX_REG_CSI_0 (0x08U) |
CSI_0: addr
#define XENSIV_BGT60TRXX_REG_CSI_1 (0x09U) |
CSI_1: addr
#define XENSIV_BGT60TRXX_REG_CSI_2 (0x0aU) |
CSI_2: addr
#define XENSIV_BGT60TRXX_REG_CSCI (0x0bU) |
CSCI: addr
#define XENSIV_BGT60TRXX_REG_CSDS_0 (0x0cU) |
CSDS_0: addr
#define XENSIV_BGT60TRXX_REG_CSDS_1 (0x0dU) |
CSDS_1: addr
#define XENSIV_BGT60TRXX_REG_CSDS_2 (0x0eU) |
REG_CSDS_2: addr
#define XENSIV_BGT60TRXX_REG_CSCDS (0x0fU) |
REG_CSCDS: addr
#define XENSIV_BGT60TRXX_REG_CSU1_0 (0x10U) |
REG_CS1_U_0: addr
#define XENSIV_BGT60TRXX_REG_CSU1_1 (0x11U) |
REG_CS1_U_1: addr
#define XENSIV_BGT60TRXX_REG_CSU1_2 (0x12U) |
REG_CS1_U_2: addr
#define XENSIV_BGT60TRXX_REG_CSD1_0 (0x13U) |
REG_CS1_D_0: addr
#define XENSIV_BGT60TRXX_REG_CSD1_1 (0x14U) |
REG_CS1_D_1: addr
#define XENSIV_BGT60TRXX_REG_CSD1_2 (0x15U) |
REG_CS1_D_2: addr
#define XENSIV_BGT60TRXX_REG_CSC1 (0x16U) |
REG_CSC1: addr
#define XENSIV_BGT60TRXX_REG_CSU2_0 (0x17U) |
REG_CS2_U_0: addr
#define XENSIV_BGT60TRXX_REG_CSU2_1 (0x18U) |
REG_CS2_U_1: addr
#define XENSIV_BGT60TRXX_REG_CSU2_2 (0x19U) |
REG_CS2_U_2: addr
#define XENSIV_BGT60TRXX_REG_CSD2_0 (0x1aU) |
REG_CS2_D_0: addr
#define XENSIV_BGT60TRXX_REG_CSD2_1 (0x1bU) |
REG_CS2_D_1: addr
#define XENSIV_BGT60TRXX_REG_CSD2_2 (0x1cU) |
REG_CS2_D_2: addr
#define XENSIV_BGT60TRXX_REG_CSC2 (0x1dU) |
REG_CSC2: addr
#define XENSIV_BGT60TRXX_REG_CSU3_0 (0x1eU) |
REG_CS3_U_0: addr
#define XENSIV_BGT60TRXX_REG_CSU3_1 (0x1fU) |
REG_CS3_U_1: addr
#define XENSIV_BGT60TRXX_REG_CSU3_2 (0x20U) |
REG_CS3_U_2: addr
#define XENSIV_BGT60TRXX_REG_CSD3_0 (0x21U) |
REG_CS3_D_0: addr
#define XENSIV_BGT60TRXX_REG_CSD3_1 (0x22U) |
REG_CS3_D_1: addr
#define XENSIV_BGT60TRXX_REG_CSD3_2 (0x23U) |
REG_CS3_D_2: addr
#define XENSIV_BGT60TRXX_REG_CSC3 (0x24U) |
REG_CSC3: addr
#define XENSIV_BGT60TRXX_REG_CSU4_0 (0x25U) |
REG_CS4_U_0: addr
#define XENSIV_BGT60TRXX_REG_CSU4_1 (0x26U) |
REG_CS4_U_1: addr
#define XENSIV_BGT60TRXX_REG_CSU4_2 (0x27U) |
REG_CS4_U_2: addr
#define XENSIV_BGT60TRXX_REG_CSD4_0 (0x28U) |
REG_CS4_D_0: addr
#define XENSIV_BGT60TRXX_REG_CSD4_1 (0x29U) |
REG_CS4_D_1: addr
#define XENSIV_BGT60TRXX_REG_CSD4_2 (0x2aU) |
REG_CS4_D_2: addr
#define XENSIV_BGT60TRXX_REG_CSC4 (0x2bU) |
REG_CSC4: addr
#define XENSIV_BGT60TRXX_REG_CCR0 (0x2cU) |
REG_CCR0: addr
#define XENSIV_BGT60TRXX_REG_CCR1 (0x2dU) |
REG_CCR1: addr
#define XENSIV_BGT60TRXX_REG_CCR2 (0x2eU) |
REG_CCR2: addr
#define XENSIV_BGT60TRXX_REG_CCR3 (0x2fU) |
REG_CCR3: addr
#define XENSIV_BGT60TRXX_REG_PLL1_0 (0x30U) |
REG_PLL1_0: addr
#define XENSIV_BGT60TRXX_REG_PLL1_1 (0x31U) |
REG_PLL1_1: addr
#define XENSIV_BGT60TRXX_REG_PLL1_2 (0x32U) |
REG_PLL1_2: addr
#define XENSIV_BGT60TRXX_REG_PLL1_3 (0x33U) |
REG_PLL1_3: addr
#define XENSIV_BGT60TRXX_REG_PLL1_4 (0x34U) |
REG_PLL1_4: addr
#define XENSIV_BGT60TRXX_REG_PLL1_5 (0x35U) |
REG_PLL1_5: addr
#define XENSIV_BGT60TRXX_REG_PLL1_6 (0x36U) |
REG_PLL1_6: addr
#define XENSIV_BGT60TRXX_REG_PLL1_7 (0x37U) |
REG_PLL1_7: addr
#define XENSIV_BGT60TRXX_REG_PLL2_0 (0x38U) |
REG_PLL2_0: addr
#define XENSIV_BGT60TRXX_REG_PLL2_1 (0x39U) |
REG_PLL2_1: addr
#define XENSIV_BGT60TRXX_REG_PLL2_2 (0x3aU) |
REG_PLL2_2: addr
#define XENSIV_BGT60TRXX_REG_PLL2_3 (0x3bU) |
REG_PLL2_3: addr
#define XENSIV_BGT60TRXX_REG_PLL2_4 (0x3cU) |
REG_PLL2_4: addr
#define XENSIV_BGT60TRXX_REG_PLL2_5 (0x3dU) |
REG_PLL2_5: addr
#define XENSIV_BGT60TRXX_REG_PLL2_6 (0x3eU) |
REG_PLL2_6: addr
#define XENSIV_BGT60TRXX_REG_PLL2_7 (0x3fU) |
REG_PLL2_7: addr
#define XENSIV_BGT60TRXX_REG_PLL3_0 (0x40U) |
REG_PLL3_0: addr
#define XENSIV_BGT60TRXX_REG_PLL3_1 (0x41U) |
REG_PLL3_1: addr
#define XENSIV_BGT60TRXX_REG_PLL3_2 (0x42U) |
REG_PLL3_2: addr
#define XENSIV_BGT60TRXX_REG_PLL3_3 (0x43U) |
REG_PLL3_3: addr
#define XENSIV_BGT60TRXX_REG_PLL3_4 (0x44U) |
REG_PLL3_4: addr
#define XENSIV_BGT60TRXX_REG_PLL3_5 (0x45U) |
REG_PLL3_5: addr
#define XENSIV_BGT60TRXX_REG_PLL3_6 (0x46U) |
REG_PLL3_6: addr
#define XENSIV_BGT60TRXX_REG_PLL3_7 (0x47U) |
REG_PLL3_7: addr
#define XENSIV_BGT60TRXX_REG_PLL4_0 (0x48U) |
REG_PLL4_0: addr
#define XENSIV_BGT60TRXX_REG_PLL4_1 (0x49U) |
REG_PLL4_1: addr
#define XENSIV_BGT60TRXX_REG_PLL4_2 (0x4aU) |
REG_PLL4_2: addr
#define XENSIV_BGT60TRXX_REG_PLL4_3 (0x4bU) |
REG_PLL4_3: addr
#define XENSIV_BGT60TRXX_REG_PLL4_4 (0x4cU) |
REG_PLL4_4: addr
#define XENSIV_BGT60TRXX_REG_PLL4_5 (0x4dU) |
REG_PLL4_5: addr
#define XENSIV_BGT60TRXX_REG_PLL4_6 (0x4eU) |
REG_PLL4_6: addr
#define XENSIV_BGT60TRXX_REG_PLL4_7 (0x4fU) |
REG_PLL4_7: addr
#define XENSIV_BGT60TRXX_REG_RFT0 (0x55U) |
REG_RFT0: addr
#define XENSIV_BGT60TRXX_REG_RFT1 (0x56U) |
REG_RFT1: addr
#define XENSIV_BGT60TRXX_REG_PLL_DFT0 (0x59U) |
REG_PDFT0: addr
#define XENSIV_BGT60TRXX_REG_STAT0 (0x5dU) |
REG_STAT0: addr
#define XENSIV_BGT60TRXX_REG_SDAC_RESULT (0x5eU) |
REG_SADC_RESULT: addr
#define XENSIV_BGT60TRXX_REG_FSTAT_TR13C (0x5fU) |
TR13C REG_FSTAT: addr
#define XENSIV_BGT60TRXX_REG_FIFO_TR13C (0x60U) |
TR13C REG_FIFO: addr
#define XENSIV_BGT60TRXX_REG_FSTAT_UTR13D (0x5fU) |
UTR13D REG_FSTAT: addr
#define XENSIV_BGT60TRXX_REG_FIFO_UTR13D (0x63U) |
UTR13D REG_FIFO: addr
#define XENSIV_BGT60TRXX_REG_FSTAT_UTR11 (0x63U) |
UTR11 REG_FSTAT: addr
#define XENSIV_BGT60TRXX_REG_FIFO_UTR11 (0x64U) |
UTR11: REG_FIFO: addr
#define XENSIV_BGT60TRXX_REG_MAIN_FRAME_START_POS (0) |
FRAME_START: pos
#define XENSIV_BGT60TRXX_REG_MAIN_FRAME_START_MSK (0x000001UL) |
FRAME_START: msk
#define XENSIV_BGT60TRXX_REG_MAIN_RESET_POS (1) |
RESET: pos
#define XENSIV_BGT60TRXX_REG_MAIN_RESET_MSK (0x00000eUL) |
RESET: msk
#define XENSIV_BGT60TRXX_REG_CHIP_ID_RF_ID_POS (0) |
RF_ID: pos
#define XENSIV_BGT60TRXX_REG_CHIP_ID_RF_ID_MSK (0x0000ffUL) |
RF_ID: msk
#define XENSIV_BGT60TRXX_REG_CHIP_ID_DIGITAL_ID_POS (8) |
DIGITAL_ID: pos
#define XENSIV_BGT60TRXX_REG_CHIP_ID_DIGITAL_ID_MSK (0xffff00UL) |
DIGITAL_ID: msk
#define XENSIV_BGT60TRXX_REG_STAT1_SHAPE_GRP_CNT_POS (0) |
SHAPE_GRP_CNT: pos
#define XENSIV_BGT60TRXX_REG_STAT1_SHAPE_GRP_CNT_MSK (0x000fffUL) |
SHAPE_GRP_CNT: msk
#define XENSIV_BGT60TRXX_REG_STAT1_FRAME_CNT_POS (12) |
FRAME_CNT: pos
#define XENSIV_BGT60TRXX_REG_STAT1_FRAME_CNT_MSK (0xfff000UL) |
FRAME_CNT: msk
#define XENSIV_BGT60TRXX_REG_SFCTL_FIFO_CREF_POS (0) |
FIFO_CREF: pos
#define XENSIV_BGT60TRXX_REG_SFCTL_FIFO_CREF_MSK (0x001fffUL) |
FIFO_CREF: msk
#define XENSIV_BGT60TRXX_REG_SFCTL_FIFO_LP_MODE_POS (13) |
FIFO_LP_MODE: pos
#define XENSIV_BGT60TRXX_REG_SFCTL_FIFO_LP_MODE_MSK (0x002000UL) |
FIFO_LP_MODE: msk
#define XENSIV_BGT60TRXX_REG_SFCTL_MISO_HS_READ_POS (16) |
MISO_HF_READ: pos
#define XENSIV_BGT60TRXX_REG_SFCTL_MISO_HS_READ_MSK (0x010000UL) |
MISO_HF_READ: msk
#define XENSIV_BGT60TRXX_REG_SFCTL_LFSR_EN_POS (17) |
LFSR_EN: pos
#define XENSIV_BGT60TRXX_REG_SFCTL_LFSR_EN_MSK (0x020000UL) |
LFSR_EN: msk
#define XENSIV_BGT60TRXX_REG_SFCTL_PREFIX_EN_POS (18) |
PREFIX_EN: pos
#define XENSIV_BGT60TRXX_REG_SFCTL_PREFIX_EN_MSK (0x040000UL) |
PREFIX_EN: msk
#define XENSIV_BGT60TRXX_REG_STAT0_SADC_RDY_POS (0) |
SADC_RDY: pos
#define XENSIV_BGT60TRXX_REG_STAT0_SADC_RDY_MSK (0x000001UL) |
SADC_RDY: msk
#define XENSIV_BGT60TRXX_REG_STAT0_MADC_RDY_POS (1) |
MADC_RDY: pos
#define XENSIV_BGT60TRXX_REG_STAT0_MADC_RDY_MSK (0x000002UL) |
MADC_RDY: msk
#define XENSIV_BGT60TRXX_REG_STAT0_MADC_BGUP_POS (2) |
MADC_BGUP: pos
#define XENSIV_BGT60TRXX_REG_STAT0_MADC_BGUP_MSK (0x000004UL) |
MADC_BGUP: msk
#define XENSIV_BGT60TRXX_REG_STAT0_LDO_RDY_POS (3) |
LDO_RDY: pos
#define XENSIV_BGT60TRXX_REG_STAT0_LDO_RDY_MSK (0x000008UL) |
LDO_RDY: msk
#define XENSIV_BGT60TRXX_REG_STAT0_PM_POS (5) |
PM: pos
#define XENSIV_BGT60TRXX_REG_STAT0_PM_MSK (0x0000e0UL) |
PM: msk
#define XENSIV_BGT60TRXX_REG_STAT0_CH_IDX_POS (8) |
CH_IDX: pos
#define XENSIV_BGT60TRXX_REG_STAT0_CH_IDX_MSK (0x000700UL) |
CH_IDX: msk
#define XENSIV_BGT60TRXX_REG_STAT0_SH_IDX_POS (11) |
SH_IDX: pos
#define XENSIV_BGT60TRXX_REG_STAT0_SH_IDX_MSK (0x003800UL) |
SH_IDX: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_FILL_STATUS_POS (0) |
FILL_STATUS: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_FILL_STATUS_MSK (0x003fffUL) |
FILL_STATUS: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_CLK_NUM_ERR_POS (17) |
CLK_NUM_ERR: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_CLK_NUM_ERR_MSK (0x020000UL) |
CLK_NUM_ERR: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_SPI_BURST_ERR_POS (18) |
SPI_BURST_ERR: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_SPI_BURST_ERR_MSK (0x040000UL) |
SPI_BURST_ERR: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_FUF_ERR_POS (19) |
FUF_ERR: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_FUF_ERR_MSK (0x080000UL) |
FUF_ERR: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_EMPTY_POS (20) |
EMPTY: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_EMPTY_MSK (0x100000UL) |
EMPTY: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_CREF_POS (21) |
CREF: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_CREF_MSK (0x200000UL) |
CREF: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_FULL_POS (22) |
FULL: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_FULL_MSK (0x400000UL) |
FULL: msk
#define XENSIV_BGT60TRXX_REG_FSTAT_FOF_ERR_POS (23) |
FOF_ERR: pos
#define XENSIV_BGT60TRXX_REG_FSTAT_FOF_ERR_MSK (0x800000UL) |
FOF_ERR: msk
#define XENSIV_BGT60TRXX_REG_GSR0_FOU_ERR_MSK (0x01UL) |
FOU_ERR: msk
#define XENSIV_BGT60TRXX_REG_GSR0_MISO_HS_READ_MSK (0x02UL) |
MISO_HS_READ: msk
#define XENSIV_BGT60TRXX_REG_GSR0_SPI_BURST_ERR_MSK (0x04UL) |
SPI_BURST_ERR: msk
#define XENSIV_BGT60TRXX_REG_GSR0_CLK_NUM_ERR_MSK (0x08UL) |
CLK_NUM_ERR: msk
enum defining the different reset commands passed to xensiv_bgt60trxx_soft_reset()
int32_t xensiv_bgt60trxx_init | ( | xensiv_bgt60trxx_t * | dev, |
void * | iface, | ||
bool | high_speed | ||
) |
Initializes the XENSIV(TM) BGT60TRxx radar sensor device.
It checks the integrity of the serial communication interface. Detects and identify the connected radar sensor.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. The caller must allocate the memory for this object but the init function will initialize its contents. |
[in] | iface | Pointer to the interface object used to communicate with the sensor over SPI. Typically, a pointer to the platform-specific SPI interface object. |
[in] | high_speed | The XENSIV(TM) BGT60TRxx sensor offers an additional high speed mode which increase the timing budget on SPI master side by sending out data via DO with the rising edge instead of the falling edge of the CLK. |
xensiv_bgt60trxx_device_t xensiv_bgt60trxx_get_device | ( | const xensiv_bgt60trxx_t * | dev | ) |
Obtains the detected sensor device name.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
int32_t xensiv_bgt60trxx_config | ( | xensiv_bgt60trxx_t * | dev, |
const uint32_t * | regs, | ||
uint32_t | len | ||
) |
Configures the XENSIV(TM) BGT60TRxx radar sensor device.
It performs a SW reset and applies the sensor configurator given in the regs array The register configuration can be generated using the BGT60TRxx configurator tool.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | regs | Pointer to the configuration registers list. |
[in] | len | Length of the configuration registers list. |
int32_t xensiv_bgt60trxx_set_reg | ( | const xensiv_bgt60trxx_t * | dev, |
uint32_t | reg_addr, | ||
uint32_t | data | ||
) |
Writes the given data buffer into the sensor device.
Writes the given data buffer to the sensor register map starting at the register address.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | reg_addr | Register address. |
[in] | data | Data to be written in the sensor register. |
int32_t xensiv_bgt60trxx_get_reg | ( | const xensiv_bgt60trxx_t * | dev, |
uint32_t | reg_addr, | ||
uint32_t * | data | ||
) |
Reads from the sensor device into the given data buffer.
Reads from the sensor register map sensor starting at register address into the given data buffer.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | reg_addr | Register address. |
[out] | data | Data to be written in the sensor register. |
uint16_t xensiv_bgt60trxx_get_fifo_size | ( | const xensiv_bgt60trxx_t * | dev | ) |
Obtains the sensor device FIFO size.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
int32_t xensiv_bgt60trxx_get_fifo_status | ( | const xensiv_bgt60trxx_t * | dev, |
uint32_t * | status | ||
) |
Obtains the sensor device FIFO status.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[out] | status | Pointer to populate with FIFO status. The status value is used to get fifo error information when compared with bit masks from xensiv_bgt60trxx_regs.h i.e. to check for fifo overflow error use XENSIV_BGT60TRXX_REG_FSTAT_FOF_ERR_MSK & status |
int32_t xensiv_bgt60trxx_set_fifo_limit | ( | const xensiv_bgt60trxx_t * | dev, |
uint32_t | num_samples | ||
) |
Sets the FIFO compare reference value.
The beat signal signal is sampled, digitized, and stored into the sensor FIFO. When the filling level is greater than the FIFO compare reference (CREF), an interrupt is issued, indicating to the controlling processor the availability of at least CREF samples in the FIFO.
[in,out] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | num_samples | Number of samples stored in FIFO to trigger interrupt. |
int32_t xensiv_bgt60trxx_get_fifo_data | ( | const xensiv_bgt60trxx_t * | dev, |
uint16_t * | data, | ||
uint32_t | num_samples | ||
) |
Reads from the sensor device FIFO into the given data buffer.
The beat signal is sampled, digitized, and stored into the sensor FIFO. This function reads out the sensor FIFO contents and places it in the given buffer.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[out] | data | Pointer to a data buffer. |
[in] | num_samples | Number of samples to read from the sensor. |
int32_t xensiv_bgt60trxx_start_frame | ( | const xensiv_bgt60trxx_t * | dev, |
bool | start | ||
) |
Starts/stops radar frame generation.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | start | Starts/stops control of frames. |
int32_t xensiv_bgt60trxx_soft_reset | ( | const xensiv_bgt60trxx_t * | dev, |
xensiv_bgt60trxx_reset_t | reset_type | ||
) |
Triggers a soft reset of the sensor device.
Triggers reset and waits for reset done.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | reset_type | Reset type, combination of . |
int32_t xensiv_bgt60trxx_enable_data_test_mode | ( | const xensiv_bgt60trxx_t * | dev, |
bool | enable | ||
) |
Enables/disables generation of a test sequence out of FIFO.
Enables/disables the output of test sequence data instead of the ADC data for the first ADC channel. This can be used to check data from the radar sensor FIFO against a defined bit sequence.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
[in] | enable | Enable/disable the output of the test sequence data. |
void xensiv_bgt60trxx_hard_reset | ( | const xensiv_bgt60trxx_t * | dev | ) |
Performs a hard reset of the sensor device.
[in] | dev | Pointer to the XENSIV(TM) BGT60TRxx sensor device object. |
uint16_t xensiv_bgt60trxx_get_next_test_word | ( | uint16_t | cur_test_word | ) |
Utility function that generates test sequence data that can be used to compare against the FIFO data obtained from device sensor when data test mode is enabled.
Implements the LFSR sequence generator based on the polynomial x^12+x^11+x^10+x^4+1. Argument variable cur_test_word keeps the current state of the LFSR generator and should be initialized using XENSIV_BGT60TRXX_INITIAL_TEST_WORD.
[in] | cur_test_word | Keeps the current state of the LFSR generator. |