stm32f407以太网及USB OTG快速开发

发布者:温暖微笑最新更新时间:2017-07-13 来源: 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 引用地址:stm32f407以太网及USB OTG快速开发

上一篇:STM32 内部flash的读写程序
下一篇:AT24C128 EEPROM的读写

推荐阅读最新更新时间:2024-03-16 15:35

200G/400G以太网正式到来!这世界太快越来越快
  2017年12月6日,IEEE 802.3 以太网 工作组正式批准了新的IEEE 802.3bs 以太网 定义标准,包括200G 以太网 (200GbE)、400G以太网(400GbE)所需要的媒体访问控制参数、物理层、管理参与。下面就随网络通信小编一起来了解一下相关内容吧。   以太网联盟(Ethernet Alliance)联盟今天表示,已经做好准备将新批准的200/400GbE标准投入到商业部署应用中。   200/400GbE标准覆盖各种互连应用,超高带宽可完全满足云扩展数据中心、互联网交换、主机托管服务、服务供应商网络等各种带宽密集型应用的需求,并大大降低端口成本。   华为高级首席工程师、IEEE P802.3bs
[网络通信]
以太网供电(PoE)获得更大功率的方法
PoE藉由以太网联机来传输电源。在PoE供电网络中,由供电端设备(PSE)提供电源,在以太网络联机产生44~57V的输出电压;在以太网联机的另一端,受电端设备(PD)会消耗这些功率。虽然目前正在定义较高功率的以太网络供电标准,不过现在受电端设备可用的功率,在单一以太网联机的情况下限制在13W左右。遗憾的是,这样的功率往往不足以支持复杂的应用,因此某些高功率的受电端设备,需要将多个连接埠的功率转换为可用电压,并与48V输入电压的电流隔离。目前有多种技术,可由多重输入来源提供隔离的功率转换。 以太网供电(PoE)已经是一种普遍的概念,并被应用于网络电话、保全监控系统、收款机等产品。    下降法   DC/DC并联电源普遍
[电源管理]
从<font color='red'>以太网</font>供电(PoE)获得更大功率的方法
工程师改造 AirPods Pro,将 Lightning 端口改为 USB-C 端口
硬件原型设计顾问 Ken Pillonel 为了改善苹果 AirPods Pro 的可维修性,通过 3D 打印充电盒外壳,将 Lightning 充电端口切换为 USB-C 端口。 国外维修团队 iFixit 给苹果 AirPods Pro 的可维修打分为 0 分(满分 10 分,分数越高越容易维修)。Pillonel 在分享的视频中再次强调,虽然苹果 AirPods Pro 充电盒要比 AirPods 更容易打开,但依然无法保证在不损坏元件的情况下打开充电盒。 在为第一代和第二代 AirPods 开发了类似的解决方案后,Pillonel 试图创造一种解决方案,为无法打开的 AirPods Pro 充电盒赋予新的生
[手机便携]
工程师改造 AirPods Pro,将 Lightning 端口改为 <font color='red'>USB</font>-C 端口
3000D系列通用型USB示波器的性能特点及应用
产品简介: 强大、便携、又高性能 PicoS000系列电脑示波器小型、轻量、又便携,同时具有高性能规格参数,因此能够全面满足工程师在实验室内或外出使用的要求。 该系列示波器有2或4路模拟通道,在混合信号示波器上还有另外的16路数字通道。灵活又高分辨率的显示选项使你能够观看和分析每个信号的纤毫细节。 与PicoScope6软件一起使用,这些示波器提供最合适又最成本效益的工具包,可广泛应用于各种领域,包括嵌入式系统设计、研发、测试、教学、服务和维修。 高带宽和采样率 除了它们小巧便携和低成本之外,在性能方面也出类拔萃。拥有最大200MHz的输入带宽,PicoScope3000系列示波器可测量广泛的信号类型,从DC和基带到射
[测试测量]
3000D系列通用型<font color='red'>USB</font>示波器的性能特点及应用
基于USB2.0接口的生物阻抗分析仪的研制
  引言   生物阻抗技术是一种无损伤的技术,测量时对人体没有任何伤害和副作用,是人体医学发展的一个方向之一 。生物阻抗分析仪的机理 在于:生物组织对外加电流场具有不同导电作用,当在人体表面加一固定频率的低电平电流时,含水 70 %以上的肌肉组织是良好导体,而含水较少的脂肪组织近似为绝缘体,因此通过测出阻抗值可用于计算出身体成份以及电阻抗的医学成像 。   目前市场上已经有多种生物阻抗分析仪器,但成本昂贵,使用烦琐,设计复杂,难以在家庭保健方面得到普及。因此,本设计提出了新的思路并研制出一种高性能的小型生物阻抗分析仪,可以多频点测量人体各区间段的阻抗模值和相位信息。该仪器具有集成度高,成本较低,使用方便,安全可靠的优点。   1
[单片机]
基于<font color='red'>USB</font>2.0接口的生物阻抗分析仪的研制
linux2.6.32.2 mini2440平台移植-- 配置 USB 外设、SD卡移植
Linux-2.6.32.2 内核对 USB外设的支持是相当丰富的,并且已经包含了 S3C2440 的 USB Host 驱动支持,因此我们只要配置一下内核就可以了,下面是各种 USB外设的详细配置步骤。 1.4.1 配置和测试 USB键盘、扫描器和鼠标 在内核源代码目录的终端输入:make menuconfig,依次选择如下子菜单项: Device Drivers --- HID Devices --- 按空格键选中 USB Human Interface Device (full HID) support ,这样就配置好了 USB键盘和鼠标项。 提示:这里的配置选项对应的内核源代码目录是:linu
[单片机]
RELY-TSN-REC:汽车网络中融合以太网的有效解决方案
在未来的几年里,汽车线束将从不同协议的异构网络转向分层的同质以太网网络。在这种新的情况下,实验室试验台,反映真实的车辆网络,将需要分析工具,能够支持他们在验证过程中的车内通信。 1.以太网融入到汽车网络中的理论基础 汽车内部的技术变得越来越复杂,联系也越来越紧密。汽车内部最新的应用和功能正在提高带宽、降低延迟、同步、高可用性、QoS和降低成本的要求。当前和传统的汽车中最常用的协议(即CAN、LIN、most、FlexRay等)不足以满足这些即将到来的需求。在这种情况下,以太网显然是IVN(In-Vehicle Network)的领头羊,因为它与前面提到的其他协议相比有许多优势(请参阅下一个比较表作为参考)。 Netwo
[汽车电子]
RELY-TSN-REC:汽车网络中融合<font color='red'>以太网</font>的有效解决方案
车载通信发展史:从传统车载网络到车载以太网
前言 在汽车智能化、网联化的大背景下,ADAS技术的不断革新、车载多媒体持续推进、各种智能化功能的推陈出新以及大数据、云计算等一系列技术的发展,极大推进了车载网络容量需求的爆发式发展。CAN或FlexRay等传统车载网络已经逐渐无法满足新需求,车载以太网应运而生。 1 传统车载网络介绍 当前主流的传统车载网络主要包括CAN、LIN、FlexRay和MOST。 CAN: Controller Area Network 一种用于实时应用的串行通讯协议总线,它可以使用双绞线来传输信号,是世界上应用最广泛的现场总线之一。CAN协议用于汽车中各种不同元件之间的通信,以此取代昂贵而笨重的
[汽车电子]
车载通信发展史:从传统车载网络到车载<font color='red'>以太网</font>
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved