stm32f407以太网及USB OTG快速开发

2017-07-13 22:38:49来源: eefocus 关键字:stm32f407  以太网  USB  OTG

引言

想要快速完成网络协议栈和USB OTG功能,使用ST自家的工具STM32CubMx再好不过的了。如果你还不会使用,别着急下面我会一步一步的用图片告诉你如何做。

软件平台:windows、STM32CubMx、keil v5

硬件平台:原子的stm32f407ZGT6开发板,

STM32CubMx配置

1、以太网管脚的映射配置

第一:阅读原理图,使用STM32CubMx完成配置,原理图这里不说明。直接到STM32CubMx配置。


(1)、打开STM32CubMx软件,选择New Project,在弹出的菜单选择,选择对应的芯片,点击OK即可。如下图:


(2)    设置clock,板子使用的是8MHz的晶振,软件对应的是Peripheral –>RCC。如下图:



(3)      根据原理图配置以太网,选择的是RMII接口,注意由于有管脚的复用,所有选择RMII后,软件自动的软件不一定和原理的对应上,我们应该按照原理图来配置管脚!对应上的就不用更改,不对应上就必须更改。如下图:


原图上的以太网PHY芯片管脚连接图是RMII接口,如下图所示:


相应的管脚,软件对应管脚配置


RMII_REF_CLK 、ETH_MDIO、RMII_CRS_DV、ETH_RESET、RMII_TX_EN、RMII_TXD0、RMII_TXD1这些管脚对应的位置以及软件上的配置,如下图:






经过上述配置以太网的管脚基本上映射好了。修改管脚配置,方法:点击某个关键在弹出的功能菜单选中对应的功能即可!

2、USB OTG管脚映射


OTG配置!使用FS做OTG,因为原理图上面用的是FS。


管脚使用默认的管脚无需更改。


3、UART1作为打印口映射


管脚使用默认的管脚无需更改。


4、第三方库的配置


(1)      第三方库的配置主要是文件系统(USB OTG需要)、网络协议栈(以太网需要)、RT OS(选配本次使用OS方便后面的以太网和USB OTG任务的调度)。

如下:由于选了OS,而OS的滴答基于Systick来运作的,所以我们得另外选择定时器用来做软件的tcik的这里选这TIM1。如下图所示:

配置sys tick,系统记时,单位是ms


第三方库的选配:

文件系统选择USB Disk USB硬盘设备

使能freeOS(嵌入式实时操作系统)、LWIP(TCP/IP协议栈)



细节方面:

系统时钟的配置

系统时钟的配置,Clock configuration选项卡里设置,如下配置:使用168MHz的时钟,USB时钟必须是48MHz。具体配置如下:


 功能的配置 Configuration选项卡里面设置,为了方便网页的开发,我这里配置LWIP的httpd功能,GPIO设置输出设置为High。如下图:


总体细节框架如下:



生成代码框架步骤:

  生成代码框架,菜单project->setting设置编译平台和目录,Generator code生成代码框架!



代码的配置

1、进入到软件的及代码平台的编写!


(1)      PHY驱动的编写


由于按照上面的步骤生成的代码基本上是可以用的,但是该代码基于的是LAN8742A芯片配置的PHY,原理图上用的是LAN8720,注意PHY芯片基本都上都一样的主芯片和PHY通信是通过MDIO接口来通信的,这个是标准化的,所以框架程序里面也是这样子的,这些基本不用改,而且PHY是IEEE802.3中定义的一个标准模块,PHY芯片的寄存器地址0-31地址具体功能IEEE802.3也是规范化标准了的,所以移植的时候就很方便了,不同的是PHY复位时间和PHY芯片地址,关于地址LAN8720有如下描述:

The PHYAD0 bit is driven high or low togive each PHY a unique address.

PHYAD 0 bit设置为1或者0以给PHY一个唯一的地址,就是LAN7820A的地址。Thisaddress is latched into aninternal register at the end of a hardware reset (default = 0b). PHY芯片硬件复位后地址被锁在内部寄存器。

In a multi-PHY application (such as a repeater), the controller isable to manage each PHY via the unique address. 多PHY芯片应用场景(例如一个中继器),控制器能够通过这个唯一的地址管理每隔PHY芯片。

Each PHY checks eachmanagement data frame for a matching address in the relevant bits. 每隔PHY芯片检查检查每个管理数据帧的相关位来匹配这个地址。

When a match is recognized, the PHYresponds to that particular frame. 当一个匹配被检查到,PHY响应一个特殊的帧。

The PHY address is also used to seed the scrambler.PHY.地址也用于种子的扰码

In a multi-PHYapplication, this ensures that the scramblers are out of synchronization and dispersesthe electromagneticradiation across the frequency spectrum.

根据上面的说法我们这里LAN7820的地址应该是0,所以找到LAN8742A_PHY_ADDRESS这个定义改为0即可。

位置:Stm32f4xx_hal_conf.h


复位时间


IP修改


修改自己的IP,注意该框架是默认打开DHCP的,DHCP功能,设备能在网内能请求DHCP服器来动态的配置设备的IP,我们这里要设置为固定iP,所以禁用DHCP!如下:

头文件:lwipopts.h



lwip.c文件修改



固定IP修改,为了方便使用,我这定义一个联合体类型来存储IP地址,如下图:


修改HAL_ETH_Init函数,添加硬复位如下:



LWIP测试结果

经过这样子就修改就可以完成了!只用主机能ping通,注意打印口映射代码没写出来,这个很简单,百度一下就有。具体实验图如下:



使用正点原子的串口工具,必须用它的。注意要打开一些调试信息就可以看到了这些打印信息了。



 USB OTG 则直接可以用,答应USB监听状态,实验效果图如下:

USB测试结果



插入USB,主机检测到了USB连接上了,可以调用mount然后fopen函数来正常的读取文件了,到此基本完成!

总结

1、完成了LWIP和USB的功能,剩下就是网络通信,这些都是应用程序了,相对来说简单。网络通信无非就是SOCKET、以及USB就是fopen函数的调用write和read函数等。

2、关于打印口看到了httpd_init,那是因为我添加了网页设计,通过网页可以修改IP等。

3、使用STM的STM32CubMx软件快速开发出你想要的框架,底层配置大多数可以不用自己的手工的去计算,比如时钟,如果通过自己的计算来给各个总线来分配时钟源那会相当麻烦,从做STM32F103的时候就深有体会。如果还不会这个软件的,建议还是得学会,因为它可以帮我们很大的忙。作为从事STM32和linux开发的我来说,省去一大部分的时间了。


关键字:stm32f407  以太网  USB  OTG

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2017071334131.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:stm32f105开发记录
下一篇:STM32 内部flash的读写程序

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利
推荐阅读
全部
stm32f407
以太网
USB
OTG

小广播

独家专题更多

东芝在线展会——芯科技智社会创未来
东芝在线展会——芯科技智社会创未来
2017东芝PCIM在线展会
2017东芝PCIM在线展会
TI车载信息娱乐系统的音视频解决方案
TI车载信息娱乐系统的音视频解决方案
汇总了TI汽车信息娱乐系统方案、优质音频解决方案、汽车娱乐系统和仪表盘参考设计相关的文档、视频等资源

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2017 EEWORLD.com.cn, Inc. All rights reserved