以GD32F307为例,配置以太网控制器的时钟寄存器选择外部时钟源作为时钟输入的示例代码
时间: 2023-12-10 14:42:37 浏览: 130
以下是以GD32F307为例,配置以太网控制器的时钟寄存器选择外部时钟源作为时钟输入的示例代码:
```c
#include "gd32f30x.h"
void eth_clock_config(void)
{
/* 使能以太网控制器时钟 */
rcu_periph_clock_enable(RCU_ETHMAC);
rcu_periph_clock_enable(RCU_ETHMACRX);
rcu_periph_clock_enable(RCU_ETHMACTX);
/* 配置以太网控制器时钟 */
ETH_MACCK_CFG = ETH_MACCK_CFG_CKEN | ETH_MACCK_CFG_CKDV;
ETH_MMC_CTRL &= ~ETH_MMC_CTRL_CLKSEL;
/* 配置PHY时钟 */
ETH_CTL &= ~ETH_CTL_PHYCLKEN;
ETH_CTL |= ETH_CTL_PHYDIVEN;
ETH_CTL &= ~ETH_CTL_PHYDIV;
ETH_CTL |= ETH_CTL_PHYDIV_2;
/* 配置时钟源为外部时钟 */
ETH_CTL &= ~ETH_CTL_CLKSEL;
ETH_CTL |= ETH_CTL_CLKSEL_0;
}
```
在以上代码中,我们通过设置ETH_CTL寄存器的CLKSEL位为1,将时钟源选择为外部时钟。具体来说,ETH_CTL寄存器的CLKSEL位控制以太网控制器的时钟源选择,其中:
- CLKSEL = 0:时钟源为内部时钟,使用内部PLL提供的时钟;
- CLKSEL = 1:时钟源为外部时钟,使用外部PHY提供的时钟;
需要注意的是,在选择外部时钟源之前,需要先配置好PHY时钟。PHY时钟的配置可以通过设置ETH_CTL寄存器的PHYDIV和PHYDIVEN位来实现。具体来说,PHY时钟的计算公式如下:
PHY_CLK = System_CLK / (2 * (PHYDIV + 1))
其中,System_CLK为MCU的时钟频率,PHYDIV为PHY时钟分频系数,取值范围为0~63。
在以上代码中,我们将PHY时钟分频系数设置为2,即PHYDIV = 1。这样,PHY时钟的频率就可以通过以下公式计算得出:
PHY_CLK = System_CLK / 4
需要根据具体的硬件电路设计情况,选择适当的PHY时钟分频系数。同时,还需要根据外部时钟源的频率,配置好ETH_MACCK_CFG寄存器的CKDV位,以确保以太网控制器的时钟频率符合要求。
阅读全文
相关推荐
![-](https://img-home.csdnimg.cn/images/20241231045053.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![pdf](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241226111658.png)
![-](https://img-home.csdnimg.cn/images/20241231044930.png)
![-](https://img-home.csdnimg.cn/images/20241231044955.png)
![rar](https://img-home.csdnimg.cn/images/20241231044955.png)