STM32F407 - DP83848 - Lwip移植方法
更新时间:2023-11-25 00:08:01 阅读量: 教育文库 文档下载
- stm32f407推荐度:
- 相关推荐
前段时间做项目用到百兆网通信,用到了LWIP,一开始是参照原子的例程做移植,因为原子的例程中使用的是LAN8720,为了改成DP83848,改寄存器地址,改位定义,改速度计算公式,折腾了好多天也没成功,最后只好听从网友的建议,修改ST官方的一个例程,几天下来,竟然成功了,现在将步骤分享给大家,感觉实际工程中用DP83848的还是大多数..其实本文并不是移植LWIP,只是将ST官方的例程改成我们项目所需要的,然后我们再在这个基础上完成自己的项目即可,这对新接触LWIP又急着做项目的人比较适合,没必要去了解LWIP的具体实现,会用就行了..
本文作者:武汉普创科技--易宇--转载请注明出处 本人的项目配置:STM32F407VET6 + DP83848C
1、从官方网站http://www.stmcu.org/document/list/index/category-523下载STSW-STM32070 面向STM32F4x7微控制器的LwIP TCP/IP协议栈的演示代码 的英文
文档DM00036052.pdf和软件包stsw-stm32070.zip。stsw-stm32070.zip是面向STM32F4x7微控制器的LwIP TCP/IP协议栈的基于官方EVAL开发板的演示代码,显然,我们直接修改这个演示代码要比我们去移植LWIP简单得多。DM00036052.pdf是演示代码的说明文档。
2、将stsw-stm32070.zip解压得到STM32F4x7_ETH_LwIP_V1.1.0文件夹,下面是STM32F4x7_ETH_LwIP_V1.1.0文件夹架构
3、删除_htmresc文件夹,这个文件夹是ST及CMSIS公司logo,没什么用。 4、打开project文件夹,这个文件夹包括两个文件夹:FreeRTOS和Standalone。
FreeRTOS文件夹里的程序示例是基于FreeRTOS系统的LWIP移植示例,这里我们不需要,直接删除。
Standalone文件夹里是一些无操作系统LWIP移植示例程序,在这里我们工程需要的是普通的数据传输,所以只使用到UDP,所以我们只保留udp_echo_client文件夹,其他的都删除掉。在udp_echo_client文件夹中EWARM文件夹是IAR EWARM建立的工程,MDK-ARM是keil MDK建立的工程。在这里我们选择MDK工程,IAR建立的工程可以保
留也可以删除。还有一个文件夹RIDE,打开看了看,应该是用另一款编译软件建立的工程空间,这里我们不需要,直接删除。
5、Utilities->Third_Party文件夹下面有三个文件夹FatFs_vR0、FreeRTOSV7.3 、lwip-1.4.1。FatFs_vR0一个通用的文件系统模块,用于在小型嵌入式系统中实现FAT文件系统,FreeRTOSV7.3一个迷你操作系统内核的小型嵌入式系统,在这里我们都用不上,直接删除。lwip-1.4.1文件夹是LWIP源码,是我们所需要的。 6、打开MDK-ARM文件夹里面的MDK工程
,我们先编译一下,可以看
到有0个错误,三个警告,其中两个警告是定义了变量但是没有使用,我们不去管它,另一个警告是..\\..\\..\\..\\Utilities\\Third_Party\\lwip-1.4.1\\port\\STM32F4x7\\Standalone \\ethernetif.c(366): warning: #1-D: last line of file ends without a newline 提示ethernetif.c文件的最后一行(也就是366行)没有换行,MDK里面每个文件的最后一行必须换行,不然会提示一个警告,这里把366行后面换行再编译,这个警告就消失了。 7、打开 main.h 文件,因为我们电路板上使用的是RMII接口,所以将#define MII_MOD注释掉,将//#define RMII_MODE取消注释,如下图所示:
在这里要注意RMII的时钟为50MHz,在电路板上直接焊接一个50MHz的有源晶振就可以了。
取消//#define USE_DHCP的注释,启用动态地址分配,当地址分配不成功则使用静态IP地址。如图:
注释掉或删除 USE_LCD和serial_debug,本项目没有用到这两项,如下图:
本项目中直接删除掉,因为删除掉了SERIAL_DEBUG,所以我们可以将
serial_debug.c文件从项目中移除。
点击红色的叉号删除serial_debug.c,然后点击OK就可以了。
将Groups栏STM324xG_EVAL中的stm324x7i_eval.c和stm324x7i_eval_lcd.c删除,将MDK_ARM中的启动文件startup_stm32f427x.s删除,将Project Targets分栏中的项目名STM324x7I_EVAL删除,将STM324xG_EVAL中的stm324xg_eval_lcd.c删除,这都是和本项目无关的东西。这时候编译会提示错误,我们将stm32f4x7_eth_bsp.h文件里关于包含LCD函数的头文件删除,如下图。
将stm32f4x7_eth_bsp.c文件里面关于LCD的部分删除掉,如下图,将这些行删除。
将netconf.c中141-148行关于LCD的函数删掉
/* Set the LCD Text Color */ LCD_SetTextColor(Red);
/* Display message on the LCD */
LCD_DisplayStringLine(Line5, (uint8_t*)\ Network Cable is \ LCD_DisplayStringLine(Line6, (uint8_t*)\ not connected \
/* Set the LCD Text Color */ LCD_SetTextColor(White); 再编译就没有问题了。
8、按电路图修改时钟,修改 stm32f4xx.h中宏定义标识符HSE_VALUE 的值为我们的外部时钟20MHz
设置主 PLL 时钟, 在 System_stm32f4xx.c 文件开头的地方配置
所以我们的主 PLL 时钟为:
PLL = 20MHz * N/ (M*P) = 20MHz* 336 /(20*2) = 168MHz SystemInit()函数中设置的系统时钟大小:
SYSCLK(系统时钟) = 168MHz AHB 总线时钟 (HCLK=SYSCLK) = 168MHz APB1 总线时钟 (PCLK1=SYSCLK/4) = 42MHz APB2 总线时钟 (PCLK2=SYSCLK/2) = 84MHz PLL 主时钟 = 168MHz
9、这个例程默认的是STM324xG_EVAL开发板,它使用的主芯片是STM32F407IG,而我们项目所使用的主芯片是STM32F407VE,要更改芯片配置。
点击弹出如下窗口
选择 Device 将下面的主芯片改为
10、下面我们进入main.c函数看一下程序:
首先的注释是说明系统时钟已经配置完成,如果修改的话可以参考第8条。接下来就是配置中断优先级分组NVIC_PriorityGroupConfig,这个很重要,只要定义了中断,就必须配置中断优先级分组,这个函数在系统中只能被调用一次,一旦分组确定就最好不要更改。这里分配的是组4,4位抢占优先级, 0位响应优先级。
接下来的是条件编译和LCD初始化,在前面我们已经删除SERIAL_DEBUG 串口调试和LCD头文件,这里我们直接将这段程序删除。如下图,将这几行代码删除掉。
删除mian.c下面关于LCD的信息:
删除128行以后的所有数据。
打开stm324xg_eval.h,注释掉第39行#include \,这个头文件是关于开发板上LCD及按键的声明,本项目中没有用到LCD和按键。
打开stm32f4x7_eth_bsp.c文件,删除关于LCD的一些程序,删除447行至472行的程序和485行到495行的程序,这里的程序是在LCD屏上显示一些语句及本机的IP。删除如下图所示程序。
打开netconf.c文件,删除关于LCD的程序,删除第219至223行程序,删除239至255行程序,删除274至290行程序。这是关于LCD显示分配动态IP的信息的程序。
11、下面是stm32f4x7_eth_bsp.c ; 配置以太网 (GPIOs, clocks, MAC, DMA),对于GPIO的配置,我们选用的是RMII接口,而且芯片是STM32F407VE,和STM324xG_EVAL开发板上有些引脚定义有些差别,所以我们要对网口的GPIO接口修改:
修改结果如上图所示 , 注意以太网配置那段注释里面,双斜线的是我们RMII没有用到的引脚,还有就是要将PG11/PG13/PG14修改为PB11/PB12/PB13。
12、接下来就是修改关于LED和按键的程序了,删除netconf.c里面第179行、第234行和252行,有些行数可能不对,但代码不会变,找到相应代码并修改
将stm324xg_eval.c文件除了#include \其他全部删除,如图所示
将stm324xg_eval.h文件除了下图所示程序其他全部删除:
正在阅读:
STM32F407 - DP83848 - Lwip移植方法11-25
课程理念03-17
石英石板材生产项目可研报告 - 图文05-12
物流常见运输车辆规格08-09
九局水曹铁路指挥部管理制度汇编04-08
最美的鲜花送给谁作文600字06-26
- exercise2
- 铅锌矿详查地质设计 - 图文
- 厨余垃圾、餐厨垃圾堆肥系统设计方案
- 陈明珠开题报告
- 化工原理精选例题
- 政府形象宣传册营销案例
- 小学一至三年级语文阅读专项练习题
- 2014.民诉 期末考试 复习题
- 巅峰智业 - 做好顶层设计对建设城市的重要意义
- (三起)冀教版三年级英语上册Unit4 Lesson24练习题及答案
- 2017年实心轮胎现状及发展趋势分析(目录)
- 基于GIS的农用地定级技术研究定稿
- 2017-2022年中国医疗保健市场调查与市场前景预测报告(目录) - 图文
- 作业
- OFDM技术仿真(MATLAB代码) - 图文
- Android工程师笔试题及答案
- 生命密码联合密码
- 空间地上权若干法律问题探究
- 江苏学业水平测试《机械基础》模拟试题
- 选课走班实施方案
- 移植
- STM32F407
- DP83848
- 方法
- Lwip
- 投资公司项目投后收益分配激励方案
- 2016年临沂市初中学生学业考试试题及答案word版
- 循环流化床MFT逻辑
- 甲状腺知识系列科普讲座
- 人教版小学语文《赵州桥》课堂实录
- 川大电工电子综合实践报告
- 光谱线展宽的物理机制解读
- CE认证的基本内容
- 浅析同期并网过程
- 最新教学参考资料:体育教案-耐力跑 - 图文
- 构建以会计信息系统功能为中心的财会专业课程体系
- 十五种常见的销售策略
- 中医治疗肝腹水肝硬化方法
- 征文通知
- 争创四强争做四优共产党员总结
- 基于单片机的倒车防撞报警系统的设计 - 图文
- 11以财务报告为目的的评估指南(试行)
- 结合典型案例看施工合同履约证据及其管理
- 噶米精编中考历史总复习全程突破 专题十二 三次科技革命与全球化 北师大版
- 2009.12.10钢结构冬季施工专项方案 - 图文