CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程

CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP 工程

最近在有项目使用STM32F407 MII接口驱动PHY芯片DP83848,而且使用cubemx配置。该项目集成了操作系统FreeRTOS和TCP/IP协议栈 lwIP,下面把具体的配置流程和注意事项说下

硬件环境:

  • MCU单片机型号:STM32F407ZGT6
  • PHY 芯片型号 :DP83848
  • MCU和PHY芯片接口:MII
  • 操作系统:FreeRTOS
  • TCP/IP网络协议栈:lwIP
  • 配置工具:cubeMX
  • 编译工具:Keil5
  • 烧录器:J-Link
  • 烧录模式:SWD

原理图:
原理图部分参考了STM32F4XX编程手册的推荐电路,同时PHY 芯片DP83848使用外部晶振作为时钟源
CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程_第1张图片
在cubeMX配置工程的时候,请重点关注MII的时钟选项,STM32F4XX编程手册对于MII的时钟源有说明,基本上时钟源有两种来源

  • PHY芯片自己的晶振
  • STM32F4XX的MCO
    CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程_第2张图片
    我们需要根据自己的原理图进行配置

CubeMX配置注意事项

1.CubeMX选择MII模式以后,请一一核对CubeMX管脚是否和原理图一一对应
2.注意PHY 芯片DP83848的PHY 芯片复位管脚、使能管脚和PHY地址

CubeMX的配置

  • MCU时钟配置,选择外部晶振25M,主频配置为168M
    CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程_第3张图片
  • Eth选择MII模式,如果带有FreeeRTOS操作系统,会自动开启Interrupu Mode
    CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程_第4张图片
  • FreeRTOS系统配置TOTAL_HEAP_SIZE配置大点,其他使用默认设置即可
    CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程_第5张图片
  • LWIP配置使用静态IP, 配置对应的IP地址,然后就可以生成keil工程
    CubeMX 创建STM32F407 + DP83848 + FreeRTOS +lwIP工程_第6张图片
  • 需要注意的是cubeMX产生keil工程main函数中需要完成DP83848的使能和RST工作,这点是需要自己添加的
/**
  * @brief  The application entry point.
  * @retval int
  */
int main(void)
{
  /* USER CODE BEGIN 1 */

  /* USER CODE END 1 */
  

  /* MCU Configuration--------------------------------------------------------*/

  /* Reset of all peripherals, Initializes the Flash interface and the Systick. */
  HAL_Init();

  /* USER CODE BEGIN Init */

  /* USER CODE END Init */

  /* Configure the system clock */
  SystemClock_Config();

  /* USER CODE BEGIN SysInit */

  /* USER CODE END SysInit */

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  /* USER CODE BEGIN 2 */
	HAL_GPIO_WritePin(DP83848_EN_GPIO_Port, DP83848_EN_Pin, GPIO_PIN_SET);
	
	HAL_GPIO_WritePin(DP83848_RST_GPIO_Port, DP83848_RST_Pin, GPIO_PIN_RESET);
	short_delay();
	HAL_GPIO_WritePin(DP83848_RST_GPIO_Port, DP83848_RST_Pin, GPIO_PIN_SET);
  /* USER CODE END 2 */

  /* Call init function for freertos objects (in freertos.c) */
  MX_FREERTOS_Init();

  /* Start scheduler */
  osKernelStart();
  
  /* We should never get here as control is now taken by the scheduler */

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
    /* USER CODE END WHILE */

    /* USER CODE BEGIN 3 */
  }
  /* USER CODE END 3 */
}

测试与验证
1.将电脑IP和板子的IP地址配置在一个网段,然后在电脑端ping 192.168.1.109
在这里插入图片描述
至此cubeMX 配置完成

小结

  • 根据原理图确定STM32F4XX和PHY芯片的连接方式MII
  • MII接口确定以后,需要根据原理图在cubeMX配置引脚
  • DP83848的PHY 使能,复位,PHY地址都要根据原理图配置
  • PHY芯片的时钟要保证稳定

获取工程和源码,请+QQ: 1025054559

你可能感兴趣的:(单片机开发)