Part Number: CC1352P
使用PowerCC26XX_injectCalibration校准rtc,校准前后AONRTCSubSecIncrGet()获取到的值没有变化,怎么才能在应用中校准RTC
static void measureRtcAccuracy(const char *tag)
{
uint32_t start, stop, delta_actual;
uint32_t subsec_incr;
float freq, ppm;
char msgBuf[160];
subsec_incr = AONRTCSubSecIncrGet();
sprintf(msgBuf, "[%s] subsec_incr=%lu, \r\n",
tag, (unsigned long)subsec_incr);
uartPrint(msgBuf);
}
void *mainThread(void *arg0)
{
UART2_Params uartParams;
GPIO_init();
AONRTCEnable();
UART2_Params_init(&uartParams);
uartParams.baudRate = 115200;
uartParams.writeMode = UART2_Mode_BLOCKING;
uartHandle = UART2_open(CONFIG_UART2_0, &uartParams);
if (uartHandle == NULL) {
while (1);
}
Power_setDependency(PowerCC26XX_XOSC_HF);
uint32_t timeout = 5000;
while (!PowerCC26XX_isStableXOSC_HF() && timeout--) {
ClockP_usleep(1000);
}
if (timeout == 0) {
uartPrint("XOSC_HF not stable!\r\n");
} else {
uartPrint("XOSC_HF stable.\r\n");
}
while (1) {
measureRtcAccuracy("before");
bool calStarted = PowerCC26XX_injectCalibration();
char infoBuf[64];
sprintf(infoBuf, "injectCalibration: %s\r\n", calStarted ? "started" : "failed");
uartPrint(infoBuf);
ClockP_usleep(CALIBRATION_WAIT_US);
measureRtcAccuracy("after");
uartPrint("-------------------\r\n");
ClockP_usleep(500000);
}
return NULL;
}