本方法适用于APT32F110X、APT32F173X。
概述
时钟源频率验证,参考源时钟计数到指定的计数值,然后获取时钟源的计数值,通过参考源时钟的计数值和时钟源时钟的计数值,可以验证时钟源频率是否正确,通过此种方式,可以对时钟源频率进行校正。
寄存器控制配置
在SYSCON系统配置CQCR寄存器中,BIT[5:4]选择参考源时钟,BIT[7:6]选择时钟源时钟,BIT[25:8]配置参考时钟计数器的目标计数值。配置完成之后,BIT[0]CQC启动控制位即可。
当参考计数器的计数值等于CQRVAL的设置值时,源时钟计数器的当前计数值将被载入到CQSR寄存器中。
实例说明
uint32_t wCqsrValue = 0;
// 参考时钟选择 EM(24M), 源时钟选择控 IM(5.556m),参考时钟目标计数值为0x3ff
csi_set_cqcr(CQCR_REFSEL_EM,CQCR_SRCSEL_IM,0x3ff);
csi_cqcr_enable(); //CQC启动控制位
wCqsrValue = csi_get_cqsr(); //读取源时钟计数值
启动后,等待CQC结束,可以读出源时钟计数值:wCqsrValue 为0x1149。
通过此种方式判断源时钟频率是否准确,判断依据如下:
参考时钟频率REFFREQ(24M),源时钟频率SRCFREQ(5.556M),参考时钟计数值REFValue(0x3ff),源时钟计数值SRCValue(0x1149)。
如果REFFREQ * REFValue > SRCFREQ*SRCValue,说明源时钟频率偏慢,
如果REFFREQ * REFValue < SRCFREQ*SRCValue,说明源时钟频率偏快。
校正HF、IM、IS时钟频率,在SYSCON中的CLCR寄存器中,修改对应频率的TRIM位,频率输出随着调整值递
增,值越大,频率越高。
注意事项
(1)、CQC参考时钟选择EM或ES,必须要外接晶振,同时确保频率输出必须正确;
(2)、如果源时钟的频率远大于参考时钟的频率,参考时钟配置的目标计数值不能太大,以防源时钟计数值溢出。