几年前,我正致力于扩展Steve Gibson的想法,以便在不使用晶体的情况下填充G2231缺少的8 MHz校准值。 基本上,VLO用作标准振荡器。 当然,VLO未校准,仅知道其近似值。 但所有重要的是,其频率 ,无论它是什么,都是稳定的,至少在短期内是如此。 当时钟设置为出厂校准的1 MHz设置时,您可以使用TimerA来计算它接管的时钟数,例如64 ACLK周期,ACLK来自VLO,然后除以8。 然后将时钟设置为8 MHz的最佳估计值,将TimerA的SMCLK除法器从1更改为8,然后查看是否在其他64个周期中获得相同的计数。 如果不这样做,您可以调整猜测,直至您这样做。
这很好。 较高的校准值不会比1 MHz值的精度好,我认为它的额定值为+/- 2 % ,但它是在特定的温度和电压下。 但对于大多数 政府工作来说,这已经足够近了。 事实证明VLO确实很稳定。 当您在同一芯片上重复执行此操作时,您将获得基本相同的结果。
我想将其扩展到12和16 MHz,并采用连续的近似算法来得出下一个猜测。 我已经在不到一秒的时间内完成了所有三个校准,并且似乎在G2231和G2452上都能正常工作。 在G2452上,我获得的值非常接近工厂值。
但是在阅读了勘误表pdf BCL12之后,我认为我的程序不应该起作用。 当我将DCOCTL设置为零,然后将RSEL步进至15 (从14),之后我反复更改DCOCTL,直到得到最好的猜测,并且我不对 更改DCOCTL执行任何其他BCL12“变通办法”。 对于G2452,下面是初始零后DCOCTL猜测的典型序列,RSEL位于15,全部为十六进制:
20,60, 80, 90, A0, A8, AC, AE, AF, B0, B1 (出厂值= AE)
因为我的程序可能会被其他人使用,所以我想确保这不会对我的芯片起作用,仅仅是因为我的运气太差,而且不会撞死大量的其它芯片。 但我放弃了尝试理解BCL12文章,希望真正理解它 的人能告诉我需要做些什么,以使这篇BCL12证明。
从上面的顺序来看,我显然 需要提高差分放大器的增益。 我认为理论上应该可以用四种猜测来得出答案,也许是五种猜测。 连续近似值相当简洁。