netlhx 发表于 2015-5-29 10:33:05

RTC精度

本帖最后由 netlhx 于 2015-5-29 10:36 编辑

RTC跑12小时,就快了大约4-5秒的样子,有什么好办法处理么?

听说可以校正,还没找到方法


发表于 2015-5-29 10:50:39

楼主用的是RTC晶振还是主晶振、RC?

netlhx 发表于 2015-5-29 11:16:46

安 发表于 2015-5-29 10:50
楼主用的是RTC晶振还是主晶振、RC?

外部32.768K的

发表于 2015-5-29 11:29:04

楼主发一下RTC的配置函数吧

netlhx 发表于 2015-5-29 11:39:13

安 发表于 2015-5-29 11:29
楼主发一下RTC的配置函数吧用的是HAL库,F407外接32.768K
      RCC_OscInitTypeDef RCC_OscInitStruct;
      RCC_PeriphCLKInitTypeDef RCC_PeriphCLKInitStruct;
               
      RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
      RCC_OscInitStruct.PLL.PLLState = RCC_PLL_NONE;
      RCC_OscInitStruct.LSEState = RCC_LSE_ON;
      RCC_OscInitStruct.LSIState = RCC_LSI_OFF;
      
      HAL_RCC_OscConfig(&RCC_OscInitStruct);
      
      RCC_PeriphCLKInitStruct.PeriphClockSelection = RCC_PERIPHCLK_RTC;
      RCC_PeriphCLKInitStruct.RTCClockSelection = RCC_RTCCLKSOURCE_LSE;
      
      HAL_RCCEx_PeriphCLKConfig(&RCC_PeriphCLKInitStruct);
      
      __HAL_RCC_RTC_ENABLE();
      
      RtcHandle.Instance = RTC;
      RtcHandle.Init.HourFormat = RTC_HOURFORMAT_24;
RtcHandle.Init.AsynchPrediv = 127;
RtcHandle.Init.SynchPrediv = 255;
RtcHandle.Init.OutPut = RTC_OUTPUT_DISABLE;
RtcHandle.Init.OutPutPolarity = RTC_OUTPUT_POLARITY_HIGH;
RtcHandle.Init.OutPutType = RTC_OUTPUT_TYPE_OPENDRAIN;
      
      HAL_RTC_Init(&RtcHandle);

lkl0305 发表于 2015-5-29 12:18:54

感觉第一,要精振好,第二,要有校准

lkl0305 发表于 2015-5-29 12:19:15

感觉第一,要晶振好,第二,要有校准

linshifaa 发表于 2015-5-29 13:17:07

:lol:lol:lol要精准直接用专用芯片

发表于 2015-5-29 14:25:10

我这里没有板子帮你测试,只能理论分析。
RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE | RCC_OSCILLATORTYPE_LSI;
改成RCC_OscInitStruct.OscillatorType = RCC_OSCILLATORTYPE_LSE;试一下。
页: [1]
查看完整版本: RTC精度