使用STM32F407 + DP38348 进行有线网络的开发,STM32F407通过MCO1为DP38348提供时钟,使用RMII接口。现在的问题是我没有办法让MCO1输出50MHz的时钟。 关于MCO1的说明如下: RCC 时钟配置寄存器 (RCC_CFGR) 位 22:21 MCO1 :微控制器时钟输出 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 分频 |
通过修改PLL主频,将PLL主频设置为150MHz,在MCO输出时使用PLL的三分频即可。
MCO1为DP83848输出时钟,这样修改后,MAC的初始化可以通过,但是将网线连接F407至电脑后,电脑端显示网络时断时续。可能是什么原因。是否与我修改PLL主频有关?
此固件程序已经在另一款F407开发板上调试通过,但开发板DP83848使用的自带晶振,没有使用MCU提供的晶振。
有没有测试过,这个输出是始终都有的吗?如果芯片睡眠是不是就没有了?
我也遇到了同样的问题, 这个应该是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);