Edit online

误差消除功能

QOUT模块为了实现均匀输出脉冲信号,需要使能误差消除功能。具体的误差消除功能的说明如下:

假设当前N/M = 3/11,那么N/M的定点化(20bit无符号小数)转化为:1048576 * 3/11 = 285975.272727 ≈ 285976 (N/M的取值需要往大取整,向上舍入)

以上的计算的约数,带来了+0.727273的误差。

由于N/M的定点数用于计算输出脉冲数,PG = Pin * N/M,所以每输入一个脉冲,则产生+0.7272723的误差。

为了对此误差的消除,初始化可进行以下的配置:

  • 通过寄存器使能误差消除功能,QOUT_ERR_CANCL_EN =0x1;

  • 设置误差消除的阈值寄存器QOUT_ERR_CANCL_TH = 1100,这里的取值方法,需取N/M的分母数的整数倍,由于M=11,所以这里选取为误差消除阈值为1100;

  • 设置误差消除值寄存器QOUT_ERR_CANCL_V = 800 ,这里的选值根据误差消除阈值进行设定,由于误差消除阈值为1100,而误差为+0.727273,所以QOUT_ERR_CANCL_V = 1100 * (+0.727273) = 800。

通过以上的配置,在QOUT使能后,每当检测到输入达到1100个脉冲,则自动对下一次的小数脉冲的累加和进行减800的操作,达到消除累计误差的效果,具体效果如下图所示。