前言:最近在学以太网通讯,发现RMII接口配置的时钟管脚有MCU自己输出,想要看看是怎么输出的,对此进行记录
1、交接项目项目上使用的是PA8管脚来输出时钟50MHZ,提供给上面refclk。
先看手册
PA8的复用功能具备将MCU时钟输出,又叫MCO时钟输出脚。
2、配置输出
下面我以AT32F407VGT7举例
//PA8作为时钟输出引脚进行时钟的测试void GPIO_Configuration(void)
{
GPIO_InitType GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_AFIO, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2PERIPH_GPIOA, ENABLE);
GPIO_InitStructure.GPIO_Pins = GPIO_Pins_8;
GPIO_InitStructure.GPIO_MaxSpeed = GPIO_MaxSpeed_50MHz;
GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_Init(GPIOA, &GPIO_InitStructure);RCC_CLKOUTConfig(RCC_CLKOUT_SYSCLK, RCC_MCOPRE_4); /*50M
}
上面使用的系统时钟,由于我系统时钟是200MHZ,进行了4分频,所以输出50MHZ
值得注意的是:GPIO输出管脚的最大响应频率为50MHz,如果输出频率超过50MHz,则输出的波形会失真。
所以我们使用尽量不要超过,当然芯片是留有余量的,网上有网友测试ST的,超过了50MHZ输出也是正常,如下图。AT的我没测试过。