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配置工程的时候,请重点关注MII的时钟选项,STM32F4XX编程手册对于MII的时钟源有说明,基本上时钟源有两种来源
- PHY芯片自己的晶振
- STM32F4XX的MCO
我们需要根据自己的原理图进行配置
CubeMX配置注意事项
1.CubeMX选择MII模式以后,请一一核对CubeMX管脚是否和原理图一一对应
2.注意PHY 芯片DP83848的PHY 芯片复位管脚、使能管脚和PHY地址
CubeMX的配置
- MCU时钟配置,选择外部晶振25M,主频配置为168M
- Eth选择MII模式,如果带有FreeeRTOS操作系统,会自动开启Interrupu Mode
- FreeRTOS系统配置TOTAL_HEAP_SIZE配置大点,其他使用默认设置即可
- LWIP配置使用静态IP, 配置对应的IP地址,然后就可以生成keil工程
- 需要注意的是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