TDC-GP22 是一款由 Acam Messelectronic(现已被 ams AG 收购)开发的高精度时间测量芯片。TDC-GP22 是 Time-to-Digital Converter(时间-数字转换器,简称 TDC)系列产品中的一款。TDC 芯片被广泛应用于测量信号之间的时间间隔,例如在测距、流量计、光学传感器等领域。
TDC-GP22 的主要特点如下:
-
高精度和高分辨率:TDC-GP22 能够以 90 ps(皮秒)的分辨率进行时间间隔测量,提供非常高的精度。
-
宽动态范围:TDC-GP22 支持的时间测量范围很广,从几个皮秒到数毫秒,适用于各种应用场景。
-
集成度高:TDC-GP22 集成了许多功能,如温度传感器、电池电压监测、可编程 PLL(锁相环),以及 SPI(串行外设接口)等,使得整个系统具有较高的集成度。
-
低功耗:TDC-GP22 设计用于低功耗应用。在空闲模式下,功耗可以降低到纳安级别。这使得 TDC-GP22 适用于电池供电的应用场景,如便携式仪器和物联网设备。
-
灵活性:TDC-GP22 提供了可编程的参数设置,可以根据不同应用场景进行优化。例如,可以调整测量分辨率、积分时间、滤波器设置等参数以满足特定的性能要求。
TDC-GP22 是一款功能强大、高精度的时间测量芯片,适用于各种需要精确测量时间间隔的应用,如超声波测距、光学传感器、流量计等。
TDC-GP22元件,如图1所示。

超声波换能器与计时芯片连接后,运行代码,可用示波器得到来个表格换能器的波形图,如图2所示。

通过串口XCOM,导出静水中顺逆流时间差。

已调通TDC-GP22的SPI通信,配合两个1MHz收发一体的超声波换能器可以输出顺逆流时间。
部分代码:
#include "stdio.h"
#include "sys.h"
#include "delay.h"
#include "usart.h"
#include "lcd.h"
#include "spi.h"
#include "tdc.h"
u16 byte;//变量类型声明
float bytes_Cal=0.00000f;//校准系数
float bytes_Up=0.00000f;
float time_one=0.00000f;
float time_two=0.00000f;
float time_three=0.00000f;
float time_four=0.00000f;
float temp=0.00000f;
float bytes_Up_Sum=0.00000f;
float bytes_Up_Ave=0.00000f;
float bytes_Down=0.00000f;
float bytes_Down_Sum=0.00000f;
float bytes_Down_Ave=0.00000f;
float t=0.00000f;
float t_abs=0.00000f;
float t_Ave=0.00000f;
float t2_Ave=0.00000f;
float t_Sum=0.00000f;
float Q = 0.00000000f;
float threshold=0.00000f;
extern u16 G_tdcStatusRegister;//状态寄存器
char bytes_Up_char[8];
char bytes_Up_Sum_char[8];
char bytes_Up_Ave_char[8];
char bytes_Down_char[8];
char bytes_Down_Sum_char[8];
char bytes_Down_Ave_char[8];
char t_char[8];
char t_Ave_char[8];
char t2_Ave_char[8];
char Q_char[8];
char i_char[16];
char bytes_V_char[8];
int main(void)
{
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168);
uart_init(115200); //串口初始化波特率为38400
SPI_TDC_Init(); //SPI通信初始化
TDC_GPIO_Init();
TDC_Init_Reg();
EXTIX_Init();
.
.
.
}