热度 2||
LAN8720A需要25Mhz晶振才能工作,当选择STM32F407的外部晶振为25MHZ时,可以巧妙的省去LAN8720A外设的一个晶振。
具体电路如下,
将STM32F407的MCO1(PA8)作为LAN8720A的CLKIN(XTAL1)的输入脚,MCO1输出源为HSE,分频系数为1.
/* Output HSE clock (25MHz) on MCO pin
(PA8) to clock the PHY */
RCC_MCO1Config(RCC_MCO1Source_HSE, RCC_MCO1Div_1);
关于25M 下STM32F407的RCC配置如下:
#define PLL_M 25
#define PLL_Q 7
#define PLL_N 336
#define PLL_P 2
PLL 的时钟配置经过,稍微整理下可由如下公式表达:
VCOCLK_IN = PLLCLK_IN / M = HSE / 25 = 1M
VCOCLK_OUT = VCOCLK_IN * N = 1M * 336 = 336M
PLLCLK_OUT=VCOCLK_OUT/P=336/2=168M
USBCLK = VCOCLK_OUT/Q=336/7=48。
所以很好理解,最终STM32F407主频跑168M,USB CLOCK为48M,同时提供给LAN8720A的clock为25M,完美的简化了外设电路, 并在bom中省一颗晶振。
需要源代码和开发板验证的同学, 请上淘宝店铺https://shop36329318.taobao.com/ 吧!