[评测分享]
【STM32H735-DK 测评】手工配置LWIP
#板卡评测
 
2265 人阅读
|
0 人回复
|
2024-03-17 
 
 
 
 
TA的每日心情  | 开心 2025-10-22 07:09 | 
|---|
 
  签到天数: 590 天 连续签到: 1 天 [LV.9]以坛为家II 
状元 
 
 
	- 积分
 - 8782
 
 
 
 
 | 
 
 
【目的】 
STM32H735-DK板载了网口,能够实现联网的功能。在官方提供的驱动示例中已经给出了好多的示例。但是如果需要结合到其它的项目时面,那么配置它的驱还是有必要的。 
【实现步骤】 
1、创建基于stm32H735-DK的开发板工程,详细步骤这里略过。 
2、配置ETH参数,在基础工程中,已经配置好了与LA8742的连接,如果是基于芯片的驱动,那么还需要根据开发板的原理图来修改相应的IO。这里我们需要配置的参数是TX、RX的RAM的地址。根据网上一位UP主的教程,设计收发地址如下图,需要RX为描述符的基地址为0x30000000,它占用4*32=128个字节,那么我们的TX描述就从0x3000080开发,然后RX接收缓冲区就从0x30000100开始点用4*1534个字节 
 
那么我们的网址地址配置如下图所示: 
 
3、开启LWIP必须配置MPU才能激活,打开MCU并使能MPU,打开ICache、DCache,按照0x30000100+10*1024,那么我们配l置堆从0x30002000开始,大小为32KB,配置如下图, 
 
4、LWIP中配置为固定IP形式,具体根据自己的网络环境进行设置。我这里设置IO地址如下: 
 
在key Options中设置MEM_SIZE大小为10*1024,基地址为0x30002000 
 
在Platform Settings中选择Found Soulutions为LA8742 
 
到此我们的stm32CubeMAX就配置好了。 
【添加代码】 
由于生成的代码还有几个地方需要配置才能正常的运行。 
1、在ethernetif.c中没有给出rxbuffer的地址,因此需要添加以下代码: 
- <font size="4">/* USER CODE BEGIN 2 */
 
 - #if defined ( __ICCARM__ ) /*!< IAR Compiler */
 
 - #pragma location = 0x30000100
 
 - extern u8_t memp_memory_RX_POOL_base[];
 
 - #elif defined ( __CC_ARM ) /* MDK ARM Compiler */
 
 - __attribute__((at(0x30000100)) extern u8_t memp_memory_RX_POOL_base[];
 
 - #elif defined ( __GNUC__ ) /* GNU Compiler */
 
 - __attribute__((section(".Rx_PoolSection"))) extern u8_t memp_memory_RX_POOL_base[];
 
 - #endif
 
 - /* USER CODE END 2 */</font>
 
  复制代码 2、配置flashID在STM32H735IGKX_FLASH.ld文件中添架如下代码: 
- <font size="4"> /* Modification start */
 
 -         .lwip_sec (NOLOAD) :
 
 -         {
 
 -         . = ABSOLUTE(0x30000000);
 
 -         *(.RxDecripSection)
 
 -         . = ABSOLUTE(0x30000080);
 
 -         *(.TxDecripSection)
 
 -         . = ABSOLUTE(0x30000100);
 
 -         *(.Rx_PoolSection)
 
 -         } >RAM_D2
 
 -         /* Modification end */</font>
 
  复制代码 【注】官方给出的示例中,SD卡初始化会卡死,因此需要注释掉MX_SDMMC1_SD_Init(); 
4、在主循环中添加LWIP的进程。 
-    MX_LWIP_Process();
 
 -           HAL_Delay(10);
 
  复制代码 到此,配置全部结束,我们编译下载到开发板后,使用PING可以成功PING通,效果如下: 
【总结】 <span] 因上STM32H7系列配置LWIP需要开启MPU,因此我学习了好多都没有成功配置。昨天在B站看到STM32H743的配置才成功,在这里特别要感谢@[color=var(--text1)] 倪博的天空这位大佬的教程。 
 
 
 |   
 
  
  
  
 
 
 | 
| 
 | 
| 
 | 
| 
 | 
 |