TDC7200的START,STOP信号,用示波器监测时,波动不超过20ns,但是TDC7200计时漂移超过120ns,时间越长漂移越大。周围没有电磁干扰,温度基本没变化。这是为什么呢?
初始化程序如下:
void SetConfig1(void)
{
TDC_CS_L;
TDC_CS_L;
WriteTDC7200(0x00+0x40); //addr
WriteTDC7200(0x83); //callibration, no parity, trig、stop、start rising edge, mode 2, start measure
TDC_CS_H;
TDC_CS_H;
}
void SetConfig2(void)
{
TDC_CS_L;
TDC_CS_L;
WriteTDC7200(0x01+0x40); //addr
WriteTDC7200(0x40); //single stop, 1 measurement cycle only, calibration2 measure 10 clock period
TDC_CS_H;
TDC_CS_H;
}
void SetClockCntrStopMask(uint16_t num) //10MHz
{
TDC_CS_L;
TDC_CS_L;
WriteTDC7200(0x08+0x40); //addr
WriteTDC7200(num/256); //H
WriteTDC7200(num%256); //L
TDC_CS_H;
TDC_CS_H;
}
void InitTDC7200(void)
{
//ENTDC; //调用该函数前已经使能芯片
SetClockCntrStopMask(400); //40us以后才开始采集停止信号
SetConfig2();
SetConfig1(); //开始测量
}