sang-383176 发表于 2015-1-23 09:15:00

如何将MCO1输出50MHz时钟

   使用STM32F407 + DP38348 进行有线网络的开发,STM32F407通过MCO1为DP38348提供时钟,使用RMII接口。现在的问题是我没有办法让MCO1输出50MHz的时钟。
   关于MCO1的说明如下:
RCC 时钟配置寄存器 (RCC_CFGR)
位 22:21MCO1 :微控制器时钟输出 1 (Microcontroller clock output 1)
由软件置 1 和清零。时钟源选择可能会造成对 MCO1的干扰。强烈建议仅在复位后且在使能   
外部振荡器和 PLL之前来配置这些位。
00:选择 HSI 时钟输出到 MCO1引脚
01:选择 LSE振荡器输出到 MCO1引脚
10:选择 HSE振荡器时钟输出到 MCO1引脚
11:选择 PLL时钟输出到 MCO1引脚


位 24:26 MCO1PRE :MCO1 预分频器 (MCO1 prescaler)
由软件置 1 和清零,用于配置 MCO1的预分频器。对此预分频器进行修改可能会对M C O 1
造成干扰。强烈建议仅在复位后且在使能外部振荡器和 PLL之前进行此分频器的更改。
0xx:无分频
100 :2分频
101 :3分频
110 :4分频
111 :5分频

sang-383176 发表于 2015-1-23 13:14:07

我已经回复吧。
通过修改PLL主频,将PLL主频设置为150MHz,在MCO输出时使用PLL的三分频即可。
MCO1为DP83848输出时钟,这样修改后,MAC的初始化可以通过,但是将网线连接F407至电脑后,电脑端显示网络时断时续。可能是什么原因。是否与我修改PLL主频有关?
    此固件程序已经在另一款F407开发板上调试通过,但开发板DP83848使用的自带晶振,没有使用MCU提供的晶振。
   

zhangdaijin 发表于 2015-1-23 16:04:36

:D:D:D:D:D:D:D

overheat 发表于 2015-3-18 07:58:04

sang-383176 发表于 2015-1-23 13:14
我已经回复吧。
通过修改PLL主频,将PLL主频设置为150MHz,在MCO输出时使用PLL的三分频即可。
MCO1为DP838 ...

有没有测试过,这个输出是始终都有的吗?如果芯片睡眠是不是就没有了?

llbff 发表于 2018-5-21 18:18:45

sang-383176 发表于 2015-1-23 13:14
我已经回复吧。
通过修改PLL主频,将PLL主频设置为150MHz,在MCO输出时使用PLL的三分频即可。
MCO1为DP838 ...

我也遇到了同样的问题, 这个应该是STM32F407 锁相环频率抖动造成的。
我这边把锁相环的输入频率改为5MHz(25/5),锁相环核心倍频60倍到300MHz, 再2分频到150M供核心使用,再3分频到50M由MCO1输出供以太网芯片使用。

    // 设置PLL时钟源及倍频系数
   RCC_PLLConfig(RCC_PLLSource_HSE, 5, 60, 2, 7);

    // MCO1 输出50MHz时钟
    RCC_MCO1Config(RCC_MCO1Source_PLLCLK, RCC_MCO1Div_3);

页: [1]
查看完整版本: 如何将MCO1输出50MHz时钟