/ * @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. ******************************************************************************/
| 1730 | * HFRCO band to activate. |
| 1731 | ******************************************************************************/ |
| 1732 | void 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 |
nothing calls this directly
no test coverage detected