打印
[学习笔记]

以太网及USB OTG快速开发

[复制链接]
2899|31
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
略略u|  楼主 | 2022-9-29 22:38 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
想要快速完成网络协议栈和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后,软件自动的软件不一定和原理的对应上,我们应该按照原理图来配置管脚!对应上的就不用更改,不对应上就必须更改。如下图:


使用特权

评论回复

相关帖子

沙发
略略u|  楼主 | 2022-9-29 22:40 | 只看该作者
原图上的以太网PHY芯片管脚连接图是RMII接口,如下图所示:

使用特权

评论回复
板凳
略略u|  楼主 | 2022-9-29 22:41 | 只看该作者
相应的管脚,软件对应管脚配置

使用特权

评论回复
地板
略略u|  楼主 | 2022-9-29 22:44 | 只看该作者
RMII_REF_CLK 、ETH_MDIO、RMII_CRS_DV、ETH_RESET、RMII_TX_EN、RMII_TXD0、RMII_TXD1这些管脚对应的位置以及软件上的配置,如下图:

使用特权

评论回复
5
略略u|  楼主 | 2022-9-29 22:50 | 只看该作者
经过上述配置以太网的管脚基本上映射好了。修改管脚配置,方法:点击某个关键在弹出的功能菜单选中对应的功能即可!

使用特权

评论回复
6
略略u|  楼主 | 2022-9-29 22:53 | 只看该作者
USB OTG管脚映射
OTG配置!使用FS做OTG,因为原理图上面用的是FS。

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

使用特权

评论回复
7
略略u|  楼主 | 2022-9-29 22:54 | 只看该作者
UART1作为打印口映射

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

使用特权

评论回复
8
略略u|  楼主 | 2022-9-29 22:59 | 只看该作者
第三方库的配置
(1)      第三方库的配置主要是文件系统(USB OTG需要)、网络协议栈(以太网需要)、RT OS(选配本次使用OS方便后面的以太网和USB OTG任务的调度)。

使用特权

评论回复
9
略略u|  楼主 | 2022-9-29 23:00 | 只看该作者
如下:由于选了OS,而OS的滴答基于Systick来运作的,所以我们得另外选择定时器用来做软件的tcik的这里选这TIM1。如下图所示:

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

使用特权

评论回复
10
略略u|  楼主 | 2022-9-29 23:03 | 只看该作者
第三方库的选配:

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

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

使用特权

评论回复
11
略略u|  楼主 | 2022-9-29 23:04 | 只看该作者
细节方面:
系统时钟的配置
系统时钟的配置,Clock configuration选项卡里设置,如下配置:使用168MHz的时钟,USB时钟必须是48MHz。具体配置如下:

使用特权

评论回复
12
略略u|  楼主 | 2022-9-29 23:05 | 只看该作者

使用特权

评论回复
13
略略u|  楼主 | 2022-9-29 23:06 | 只看该作者
功能的配置 Configuration选项卡里面设置,为了方便网页的开发,我这里配置LWIP的httpd功能,GPIO设置输出设置为High。如下图:

使用特权

评论回复
14
略略u|  楼主 | 2022-9-29 23:07 | 只看该作者
总体细节框架如下:

使用特权

评论回复
15
略略u|  楼主 | 2022-9-29 23:09 | 只看该作者
生成代码框架步骤:
  生成代码框架,菜单project->setting设置编译平台和目录,Generator code生成代码框架!

使用特权

评论回复
16
略略u|  楼主 | 2022-9-29 23:13 | 只看该作者
代码的配置
1、进入到软件的及代码平台的编写!

使用特权

评论回复
17
略略u|  楼主 | 2022-9-29 23:14 | 只看该作者
(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芯片硬件复位后地址被锁在内部寄存器。

使用特权

评论回复
18
略略u|  楼主 | 2022-9-29 23:15 | 只看该作者
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响应一个特殊的帧。

使用特权

评论回复
19
略略u|  楼主 | 2022-9-29 23:16 | 只看该作者
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即可。

使用特权

评论回复
20
略略u|  楼主 | 2022-9-29 23:17 | 只看该作者
位置:Stm32f4xx_hal_conf.h

复位时间

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

62

主题

510

帖子

0

粉丝