Восстановить калибровочные константы не составляет труда. Вам уже дали направление поиска. В серии MSP430x1xx где нет заводских калибровочных констант, я применял калибровку DCO по часовому кварцу при старте системы. Принцип там весьма простой. Увеличивая или уменьшая значения DCOx, MODx и RSELx добиваются заданного отношения между DCO и опорной частотой (у меня ей была частота часового кварца). Измеряется это отношение с помощью таймера TimerA, работающего в режиме "захвата". TimerA должен тактироваться от SMCLK, который в свою очередь от DCO. Опорная частота должны являться источником тактирования ACLK. Во всех кристаллах MSP430 ACLK можно внутренне скоммутировать так, чтобы он был входным сигналом CCI2B для 3-его канала TimerA (CCR2). Так что, если TimerA настроен в режим захвата от CCI2B, то разница между двумя последовательно полученными (захваченными) значениями CCR2 даст искомое отношение SMCLK и ACLK (с учетом всех предделителей конечно). Получается DCO=SMCLK=(CCR2(n)-CCR2(n-1))*ACLK таким образом можно подстроить DCO, являющийся источником SMCLK. Только если вы хотите полностью восстановить калибровочные константы, то посмотрите описание TLV-структуры в datasheet конкретного кристалла. Там кроме значений CAL_DCO и CAL_ВС1 еще и TAG-и должны быть прописаны.
|