锐单电子商城 , 一站式电子元器件采购平台!
  • 电话:400-990-0325

超声波传感器(CHx01) 学习笔记 Ⅲ-API介绍

时间:2022-10-30 16:00:00 传感器lsb

文章目录

    • 1.1 初始传感器的设备描述符合
    • 1.2 编程并启动一组传感器
    • 1.3 获取传感器的设备描述符合指针
    • 1.4 指示传感器是否连接
    • 1.5 定期计时器的初始化
    • 1.6 注册一组传感器中断回调
    • 1.7 传感器配置在指定的操作模式下
    • 1.8 最大范围设置传感器
    • 1.9 在自由运行模式下的传感器配置内部采样间隔
    • 2.0 将毫米数转换为传感器样本计数
    • 2.1 设置振幅平均的采样窗
    • 2.2 从传感器中获取原始 I/Q 测量数据

1.1 初始传感器的设备描述符合

uint8_t ch_init    (ch_dev_t *  dev_ptr,ch_group_t *  grp_ptr,uint8_t    dev_num,ch_fw_init_func_t  fw_init_func )     

该功能用于在使用传感器之前初始化各种传感器 Chirp SonicLib 结构。ch_dev_t管理传感器的主要数据结构是设备描述符,
随后,它的地址将被用作大部分的调用 API 在函数中识别传感器的句柄。

1.2 编程并启动一组传感器

uint8_t ch_group_start(ch_group_t * grp_ptr) 

此函数对传感器组中的所有传感器执行实际的发现、编程和初始化序列。每个传感器必须以前通过调用ch_init() 添加到组中。

1.3 获取传感器的设备描述符合指针

ch_dev_t* ch_get_dev_ptr    (ch_group_t *  grp_ptr,uint8_t dev_num ) 

该函数返回传感器组中的传感器ch_dev_t设备描述符的地址。传感器在组中dev_num设备编号标识。

1.4 指示传感器是否连接

uint8_t ch_sensor_is_connected(ch_dev_t * dev_ptr) 

1.5 定期计时器的初始化

uint8_t chbsp_periodic_timer_init    (uint16_t interval_ms,ch_timer_callback_t callback_func_ptr) 

本函数初始化电路板上的定期计时器。每个计时器都应编程interval_ms毫秒后产生中断。
callback_func_ptr指定计时器过期(并中断)时调用的回调程序。板级支持包中的定时器中断处理程序函数应调用此函数。
循环定时器通常用于调用应用程序的回调函数ch_trigger()或ch_group_trigger()触发传感器测量周期。

1.6 注册一组传感器中断回调

ch_io_int_callback_set    (ch_group_t *     grp_ptr,ch_io_int_callback_t     callback_func_ptr) 

由此函数注册 callback_func_ptr 指定的例程,以便在传感器中断时呼叫。通常,该中断表示测量周期已经完成,传感器已经准备好读取数据。传感器组中的所有传感器都使用相同的回调函数,接收中断设备的设备号(端口号)作为输入参数,以识别特定的中断设备。

1.7 传感器配置在指定的操作模式下

uint8_t ch_set_mode    (ch_dev_t * dev_ptr,ch_mode_t     mode) 

该函数将传感器设置为在指定模式下运行,
● CH_MODE_IDLE - 无需测量低功耗空闲模式
● CH_MODE_FREERUN - 自由运行模式,传感器使用内部时钟进行唤醒和测量
● CH_MODE_TRIGGERED_TX_RX - 硬件触发,传感器发送和接收
● CH_MODE_TRIGGERED_RX_ONLY - 硬件触发,传感器只接收

1.8 最大范围设置传感器

uint8_t ch_set_max_range    (ch_dev_t * dev_ptr,uint16_t max_range) 

该功能以毫米为单位,设置传感器的最大检测范围。
控制传感器在每个测量周期传感器的侦听时间(即它将捕获多少样本)

1.9 在自由运行模式下的传感器配置内部采样间隔

uint8_t ch_set_sample_interval    (ch_dev_t * dev_ptr,uint16_tinterval_ms) 

该功能设置在自由运行模式下工作的传感器采样间隔(CH_MODE_FREERUN)。
传感器用内部时钟唤醒并分隔interval_ms一次毫秒测量
注意 该功能不影响在触发模式下工作的传感器。
触发器件的采样间隔由外部触发时间决定。

2.0 将毫米数转换为传感器样本计数

uint16_t ch_mm_to_samples    (ch_dev_t * dev_ptr,uint16_t num_mm) 

此函数转换num_mm指定距离(以毫米为单位),并将其转换为相应的传感器样本数。在设备初始化和校准过程中使用的转换值描述了传感器的内部顺序和设备的最大范围。

2.1 设置振幅平均的采样窗

uint8_t ch_set_sample_window    (ch_dev_t * dev_ptr,uint16_t start_sample,uint16_t end_sample ) 

该函数设置为平均范围采样窗口的开始和结束样本。start_sample是平均窗口中包含的第一个样本的数量。end_sample最后一次解冻样品的数量将包括在内。

2.2 从传感器中获取原始 I/Q 测量数据

uint8_t ch_get_iq_data    (ch_dev_t * dev_ptr,ch_iq_sample_t * buf_ptr,uint16_t    start_sample,uint16_t num_samples,ch_io_mode_t mode) 

这个功能是从传感器读取的 I/Q 测量数据。I/Q数据集包括构成完整测量周期的每个样本的离散值对。每个单独的样本以正交格式报告为一对值I和Q。I/Q值可用于计算被测超声信号的相对范围。
I/Q每个测量周期都会更新痕迹线的内容,即使没有检测到目标

请注意,这与ch_get_amplitude()返回的常规振幅值不同,除非检测到目标,否则不会更新
每个样本 I/Q 对由有两个符号 16 由位整数组成,由 ch_iq_sample_t 结构描述。任何给定的 I/Q 请将值对转换为样本的范围值 I 和 Q 取和平方根:
传感器中的振幅值仅在内部ADC计数(最低有效位或LSB)并且不会校准为任何标准单位。

每个I/Q线路中使用的样本数量由设备的最大范围设置决定。如果设置在最小范围内,并非所有样本都包含有效数据。请确定线路中活动样本的数量 ch_get_num_samples()。
● 读取所有有效的 I/Q 数据,请将 start_sample 设置为零 (0),并将 num_samples 设置为 ch_get_num_samples() 返回的值。

对于CH对于101传感器,每个测量周期最多采集150个样品;CH201传感器最多可采集450个样品。所以,完整的CH101 I/Q有多达600字节的数据(150个样本x每个样本4个字节)CH201 I/Q可包含多达1800个字节。buf_ptr指定的缓冲区必须足够大才能容纳这个数量的数据。
读取传感器时I/Q在规划读取传感器频率(采样间隔)时,必须考虑通过数据I2C总线传输I/Q数据所需的额外时间。

锐单商城拥有海量元器件数据手册IC替代型号,打造电子元器件IC百科大全!

相关文章