MCPcopy Create free account
hub / github.com/RT-Thread/rt-thread / CMU_HFRCOBandSet

Function CMU_HFRCOBandSet

bsp/efm32/Libraries/emlib/src/em_cmu.c:1732–1802  ·  view source on GitHub ↗

/ * @brief * Set HFRCO band and the tuning value based on the value in the calibration * table made during production. * * @param[in] band * HFRCO band to activate. ******************************************************************************/

Source from the content-addressed store, hash-verified

1730 * HFRCO band to activate.
1731 ******************************************************************************/
1732void CMU_HFRCOBandSet(CMU_HFRCOBand_TypeDef band)
1733{
1734 uint32_t tuning;
1735 uint32_t freq;
1736 CMU_Select_TypeDef osc;
1737
1738 /* Read tuning value from calibration table */
1739 switch (band)
1740 {
1741 case cmuHFRCOBand_1MHz:
1742 tuning = (DEVINFO->HFRCOCAL0 & _DEVINFO_HFRCOCAL0_BAND1_MASK) >>
1743 _DEVINFO_HFRCOCAL0_BAND1_SHIFT;
1744 break;
1745
1746 case cmuHFRCOBand_7MHz:
1747 tuning = (DEVINFO->HFRCOCAL0 & _DEVINFO_HFRCOCAL0_BAND7_MASK) >>
1748 _DEVINFO_HFRCOCAL0_BAND7_SHIFT;
1749 break;
1750
1751 case cmuHFRCOBand_11MHz:
1752 tuning = (DEVINFO->HFRCOCAL0 & _DEVINFO_HFRCOCAL0_BAND11_MASK) >>
1753 _DEVINFO_HFRCOCAL0_BAND11_SHIFT;
1754 break;
1755
1756 case cmuHFRCOBand_14MHz:
1757 tuning = (DEVINFO->HFRCOCAL0 & _DEVINFO_HFRCOCAL0_BAND14_MASK) >>
1758 _DEVINFO_HFRCOCAL0_BAND14_SHIFT;
1759 break;
1760
1761 case cmuHFRCOBand_21MHz:
1762 tuning = (DEVINFO->HFRCOCAL1 & _DEVINFO_HFRCOCAL1_BAND21_MASK) >>
1763 _DEVINFO_HFRCOCAL1_BAND21_SHIFT;
1764 break;
1765
1766 case cmuHFRCOBand_28MHz:
1767 tuning = (DEVINFO->HFRCOCAL1 & _DEVINFO_HFRCOCAL1_BAND28_MASK) >>
1768 _DEVINFO_HFRCOCAL1_BAND28_SHIFT;
1769 break;
1770
1771 default:
1772 EFM_ASSERT(0);
1773 return;
1774 }
1775
1776 /* If HFRCO is used for core clock, we have to consider flash access WS. */
1777 osc = CMU_ClockSelectGet(cmuClock_HF);
1778 if (osc == cmuSelect_HFRCO)
1779 {
1780 /* Configure worst case wait states for flash access before setting divider */
1781 CMU_FlashWaitStateMax();
1782 }
1783
1784 /* Set band/tuning */
1785 CMU->HFRCOCTRL = (CMU->HFRCOCTRL &
1786 ~(_CMU_HFRCOCTRL_BAND_MASK | _CMU_HFRCOCTRL_TUNING_MASK)) |
1787 (band << _CMU_HFRCOCTRL_BAND_SHIFT) |
1788 (tuning << _CMU_HFRCOCTRL_TUNING_SHIFT);
1789

Callers

nothing calls this directly

Calls 4

CMU_ClockSelectGetFunction · 0.85
CMU_FlashWaitStateMaxFunction · 0.85
SystemCoreClockGetFunction · 0.50

Tested by

no test coverage detected