Subversion Repositories FuelGauge

Rev

Rev 2 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 2 Rev 6
Line 593... Line 593...
593
@verbatim
593
@verbatim
594
 ===============================================================================
594
 ===============================================================================
595
                ##### Extended Clock Recovery System Control functions  #####
595
                ##### Extended Clock Recovery System Control functions  #####
596
 ===============================================================================
596
 ===============================================================================
597
    [..]
597
    [..]
598
      For devices with Clock Recovery System feature (CRS), RCC Extention HAL driver can be used as follows:
598
      For devices with Clock Recovery System feature (CRS), RCC Extension HAL driver can be used as follows:
599
 
599
 
600
      (#) In System clock config, HSI48 needs to be enabled
600
      (#) In System clock config, HSI48 needs to be enabled
601
 
601
 
602
      (#) Enable CRS clock in IP MSP init which will use CRS functions
602
      (#) Enable CRS clock in IP MSP init which will use CRS functions
603
 
603
 
604
      (#) Call CRS functions as follows:
604
      (#) Call CRS functions as follows:
605
          (##) Prepare synchronization configuration necessary for HSI48 calibration
605
          (##) Prepare synchronization configuration necessary for HSI48 calibration
606
              (+++) Default values can be set for frequency Error Measurement (reload and error limit)
606
              (+++) Default values can be set for frequency Error Measurement (reload and error limit)
607
                        and also HSI48 oscillator smooth trimming.
607
                        and also HSI48 oscillator smooth trimming.
608
              (+++) Macro @ref __HAL_RCC_CRS_RELOADVALUE_CALCULATE can be also used to calculate
608
              (+++) Macro __HAL_RCC_CRS_RELOADVALUE_CALCULATE can be also used to calculate
609
                        directly reload value with target and synchronization frequencies values
609
                        directly reload value with target and synchronization frequencies values
610
          (##) Call function @ref HAL_RCCEx_CRSConfig which
610
          (##) Call function HAL_RCCEx_CRSConfig which
611
              (+++) Reset CRS registers to their default values.
611
              (+++) Reset CRS registers to their default values.
612
              (+++) Configure CRS registers with synchronization configuration
612
              (+++) Configure CRS registers with synchronization configuration
613
              (+++) Enable automatic calibration and frequency error counter feature
613
              (+++) Enable automatic calibration and frequency error counter feature
614
           Note: When using USB LPM (Link Power Management) and the device is in Sleep mode, the
614
           Note: When using USB LPM (Link Power Management) and the device is in Sleep mode, the
615
           periodic USB SOF will not be generated by the host. No SYNC signal will therefore be
615
           periodic USB SOF will not be generated by the host. No SYNC signal will therefore be
616
           provided to the CRS to calibrate the HSI48 on the run. To guarantee the required clock
616
           provided to the CRS to calibrate the HSI48 on the run. To guarantee the required clock
617
           precision after waking up from Sleep mode, the LSE or reference clock on the GPIOs
617
           precision after waking up from Sleep mode, the LSE or reference clock on the GPIOs
618
           should be used as SYNC signal.
618
           should be used as SYNC signal.
619
 
619
 
620
          (##) A polling function is provided to wait for complete synchronization
620
          (##) A polling function is provided to wait for complete synchronization
621
              (+++) Call function @ref HAL_RCCEx_CRSWaitSynchronization()
621
              (+++) Call function HAL_RCCEx_CRSWaitSynchronization()
622
              (+++) According to CRS status, user can decide to adjust again the calibration or continue
622
              (+++) According to CRS status, user can decide to adjust again the calibration or continue
623
                        application if synchronization is OK
623
                        application if synchronization is OK
624
             
624
             
625
      (#) User can retrieve information related to synchronization in calling function
625
      (#) User can retrieve information related to synchronization in calling function
626
            @ref HAL_RCCEx_CRSGetSynchronizationInfo()
626
            HAL_RCCEx_CRSGetSynchronizationInfo()
627
 
627
 
628
      (#) Regarding synchronization status and synchronization information, user can try a new calibration
628
      (#) Regarding synchronization status and synchronization information, user can try a new calibration
629
           in changing synchronization configuration and call again HAL_RCCEx_CRSConfig.
629
           in changing synchronization configuration and call again HAL_RCCEx_CRSConfig.
630
           Note: When the SYNC event is detected during the downcounting phase (before reaching the zero value),
630
           Note: When the SYNC event is detected during the downcounting phase (before reaching the zero value),
631
           it means that the actual frequency is lower than the target (and so, that the TRIM value should be
631
           it means that the actual frequency is lower than the target (and so, that the TRIM value should be
632
           incremented), while when it is detected during the upcounting phase it means that the actual frequency
632
           incremented), while when it is detected during the upcounting phase it means that the actual frequency
633
           is higher (and that the TRIM value should be decremented).
633
           is higher (and that the TRIM value should be decremented).
634
 
634
 
635
      (#) In interrupt mode, user can resort to the available macros (__HAL_RCC_CRS_XXX_IT). Interrupts will go
635
      (#) In interrupt mode, user can resort to the available macros (__HAL_RCC_CRS_XXX_IT). Interrupts will go
636
          through CRS Handler (RCC_IRQn/RCC_IRQHandler)
636
          through CRS Handler (RCC_IRQn/RCC_IRQHandler)
637
              (++) Call function @ref HAL_RCCEx_CRSConfig()
637
              (++) Call function HAL_RCCEx_CRSConfig()
638
              (++) Enable RCC_IRQn (thanks to NVIC functions)
638
              (++) Enable RCC_IRQn (thanks to NVIC functions)
639
              (++) Enable CRS interrupt (@ref __HAL_RCC_CRS_ENABLE_IT)
639
              (++) Enable CRS interrupt (__HAL_RCC_CRS_ENABLE_IT)
640
              (++) Implement CRS status management in the following user callbacks called from
640
              (++) Implement CRS status management in the following user callbacks called from
641
                   HAL_RCCEx_CRS_IRQHandler():
641
                   HAL_RCCEx_CRS_IRQHandler():
642
                   (+++) @ref HAL_RCCEx_CRS_SyncOkCallback()
642
                   (+++) HAL_RCCEx_CRS_SyncOkCallback()
643
                   (+++) @ref HAL_RCCEx_CRS_SyncWarnCallback()
643
                   (+++) HAL_RCCEx_CRS_SyncWarnCallback()
644
                   (+++) @ref HAL_RCCEx_CRS_ExpectedSyncCallback()
644
                   (+++) HAL_RCCEx_CRS_ExpectedSyncCallback()
645
                   (+++) @ref HAL_RCCEx_CRS_ErrorCallback()
645
                   (+++) HAL_RCCEx_CRS_ErrorCallback()
646
 
646
 
647
      (#) To force a SYNC EVENT, user can use the function @ref HAL_RCCEx_CRSSoftwareSynchronizationGenerate().
647
      (#) To force a SYNC EVENT, user can use the function HAL_RCCEx_CRSSoftwareSynchronizationGenerate().
648
          This function can be called before calling @ref HAL_RCCEx_CRSConfig (for instance in Systick handler)
648
          This function can be called before calling HAL_RCCEx_CRSConfig (for instance in Systick handler)
649
           
649
           
650
@endverbatim
650
@endverbatim
651
 * @{
651
 * @{
652
 */
652
 */
653
 
653