RT-Thread 使用以太网PHY与MCO配置


背景

需要使用 LAN8720 以太网PHY芯片,LAN8720 要求提供25M晶振,同时买到的测试板晶振是25M的,而 bsp 中是8M晶振,所以需要修改时钟相关配置,并尝试使用 MCO 输出25M时钟给 LAN8720 使用。

修改时钟配置

打开board->CubeMX_Config文件夹,使用 CubeMX 软件打开 .ioc 文件,进行时钟配置。

时钟配置如图,主时钟为 168M

配置完成后点击 GENERATE CODE,生成新的配置代码,在同文件下,src-main.c,复制SystemClock_Config()函数内容,替换掉工程内board.c的同函数内容

完成后重新编译下载,程序执行正常

配置 MCO 输出

首先配置外设


在 GPIO 选项内将输出速度跳到最高


时钟配置内配置 MCO1 输出


配置完成后点击 GENERATE CODE,生成新的配置代码,同样的,完成SystemClock_Config()函数的替换,实际上只多了一行代码:

HAL_RCC_MCOConfig(RCC_MCO1, RCC_MCO1SOURCE_HSE, RCC_MCODIV_1);

需要注意的是,MCO 的 IO 是在 CubeMX 生成的main.c内初始化的,需要把这部分代码完成初始化。

复制MX_GPIO_INIT()到工程的main.c,这里修改函数名为MCO_GPIO_INIT()完整的main.c内容如下:

#include <rtthread.h>
#include <rtdevice.h>
#include <board.h>

/* defined the LED0 pin: PF9 */
#define LED0_PIN    GET_PIN(F, 9)
/**
  * @brief GPIO Initialization Function
  * @param None
  * @retval None
  */
static void MCO_GPIO_Init(void)
{
  GPIO_InitTypeDef GPIO_InitStruct = {0};

  /* GPIO Ports Clock Enable */
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOF_CLK_ENABLE();
  __HAL_RCC_GPIOH_CLK_ENABLE();
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOG_CLK_ENABLE();
  __HAL_RCC_GPIOE_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  __HAL_RCC_GPIOD_CLK_ENABLE();

  /*Configure GPIO pin : PA8 */
  GPIO_InitStruct.Pin = GPIO_PIN_8;
  GPIO_InitStruct.Mode = GPIO_MODE_AF_PP;
  GPIO_InitStruct.Pull = GPIO_NOPULL;
  GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_HIGH;
  GPIO_InitStruct.Alternate = GPIO_AF0_MCO;
  HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);

}

int main(void)
{
    MCO_GPIO_Init();    //初始化 MCO IO口
    int count = 1;
    /* set LED0 pin mode to output */
    rt_pin_mode(LED0_PIN, PIN_MODE_OUTPUT);

    while (count++)
    {
        rt_pin_write(LED0_PIN, PIN_HIGH);
        rt_thread_mdelay(500);
        rt_pin_write(LED0_PIN, PIN_LOW);
        rt_thread_mdelay(500);
    }

    return RT_EOK;
}

测试 MCO 输出

因为屋里条件简陋,没有示波器,使用梦源实验室的逻辑分析仪做测试,测试 PA8 脚有没有 25M HZ 的频率输出。

测试结果正常:

参考

RCC-时钟配置和MCO输出

新版bsp在哪里修改HSE_VALUE比较好?

RT-Thread Studio 结合 STM32CubeMx 开发其他驱动文档

  • 分享:
评论
还没有评论
    发表评论 说点什么