打印
[其他ST产品]

使用keil5中的RL_TCPNet中间件建立一个工程

[复制链接]
927|43
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
前言

RL_TCPnet也算是一个比较有名的小型协议栈,相比于LwIP,它支持非常多的应用协议。并且这是ARM自家出的中间件,专门针对自家内核做过优化,性能强劲。所以学一下它非常有必要。这次搞以太网算是第二次了,去年开始尝试玩了一下,自己画了一套F107以太网开发板,但是最后是没调出来。后来发现是硬件电路画的有问题,就没接下去弄了。这次又拿起来搞,总结上次电路失败的经验,我又重新设计了一块电路板。嗯,这次是一次成功啊_!所以在学习网络应用之前,得首先确保你的硬件是可以用的啊,不然车底盘不稳,开的再快迟早是要翻车的呀!先上一份我做好的成品。最终学习目地是做一个串口服务器:)



————————————————


使用特权

评论回复
沙发
原来是wjc|  楼主 | 2023-4-19 00:02 | 只看该作者
硬件电路设计

嵌入式以太网接口一般有以下几种模式:

    1.MCU内部自带MAC+PHY,比如TI的LM3S6911,此款芯片是自带MAC和PHY,外部接上RJ45接口电路就可以使用了。
    2.MCU内部自带MAC,需要外接PHY。比如我使用的STM32F107,外接一个DP83848物理芯片和添加RJ45接口电路就可以使用了。当然PHY有很多LA8720、DM9162等都可以使用。
    3.MCU内部既不带MAC也不带MAC和PHY,这就是一般低端的单片机了,这种情况下可以使用SPI接口网络芯片,典型的就是enc28j60。像F103不带MAC的就可以使用SPI驱动该芯片,以实现网络应用。

MAC即媒体访问控制,处于链路层的下方。MAC的作用是使设备在多节点应用中,不会引起访问冲突。

PHY即端口物理层,是OSI参考模型中的最底层。常用的PHY基本寄存器都一样,不一样的是各个厂家提供的扩展寄存器和专门设置的寄存器。所以驱动成功立一种PHY,驱动另一种PHY也就很简单。

使用特权

评论回复
板凳
原来是wjc|  楼主 | 2023-4-19 00:02 | 只看该作者
底层驱动接口
(1)独立于介质的接口:MII


该接口有16根线,使用25MHz外部晶振驱动时钟系统。支持10Mbps和100Mbps的运行速率。

使用特权

评论回复
地板
原来是wjc|  楼主 | 2023-4-19 00:03 | 只看该作者
(2)精简的独立于介质的接口:RMII


RMII将标准减少到7根线,支持10Mbps和100Mbps运行速率;时钟信号需提高到50MHz;MAC和PHY需要使用同样的时钟源;使用2位宽的数据收发。

使用特权

评论回复
5
原来是wjc|  楼主 | 2023-4-19 00:03 | 只看该作者
(3)DP83848的RMII应用电路

我所使用的接口就是RMII,使用该接口就没有MII那么多线看着头晕的麻烦。具体电路如下,DP83848其它的引脚功能需要自行查阅数据手册了

使用特权

评论回复
6
原来是wjc|  楼主 | 2023-4-19 00:03 | 只看该作者
创建工程

在确保硬件可以使用的情况下,接下来就要开始创建工程来驱动这个PHY。自keil5发布以来,创建和使用中间件就非常方便,特别是在使用中间件的时候,省去了很多移植的花费的时间。你可能会看到我就是不停的勾选,勾选勾选,一个工程例子代码就创建好了。。。(我使用的版本是5.23,组件都是最新版本)

使用特权

评论回复
7
原来是wjc|  楼主 | 2023-4-19 00:04 | 只看该作者
(1)新建UDP例子工程
1.CMSIS驱动选择

新建一个工程,创建工程名,选择芯片F107RC(具体芯片具体选择),接下来就跳到“Manage Run-Time Environment”窗口。这是重点,选好依赖整个创建过程就很快。驱动选择如下:


这里说明一下,在勾选时,选项卡变黄是因为缺少相应的依赖,依赖齐全后,就变成绿色。因为RL_TCPnet这个版本需要使用RTX,所以RTOS必选。因为我使用的是MAC+PHY,所以MAC驱动必选,PHY按所选用的芯片来选择。像其它的PHY芯片,因为基本寄存器都一样,所以可以在keil5提供的一种PHY驱动文件中来更改驱动文件,以适应自己的PHY。选择UASRT驱动是用来Debug输出时使用的。

使用特权

评论回复
8
原来是wjc|  楼主 | 2023-4-19 00:04 | 只看该作者
2.STM32驱动选择

图中的DMA和GPIO是keil提供的驱动文件,目的是与CMSIS Driver相互依赖。使用STM32的标准库的GPIO是用来初始化PHY的复位引脚的。

使用特权

评论回复
9
原来是wjc|  楼主 | 2023-4-19 00:05 | 只看该作者
3.STDIO调试选择

使能STDOUT后,在程序中就可以使用printf函数。keil为F1提供相应的串口驱动,所以我们不必编写相应的串口驱动程序。

使用特权

评论回复
10
原来是wjc|  楼主 | 2023-4-19 00:05 | 只看该作者
4.NetWork选择

具体的选择如图所示,内核选择Debug STDIO调试版本,正式发布后可选择发行版本。接口使用的ETH,序号1表示有一个MAC物理IP.其它2个是供串行接口使用。现在这个例子不使用服务,我们使用UDP做测试。

使用特权

评论回复
11
原来是wjc|  楼主 | 2023-4-19 00:05 | 只看该作者
(2)文件配置

以上工程依赖配置好后,就要添加相应的文件,配置文件了。

使用特权

评论回复
12
原来是wjc|  楼主 | 2023-4-19 00:05 | 只看该作者
1.添加模板代码

鼠标右键“Source Group1”向该组增加文件。

使用特权

评论回复
13
原来是wjc|  楼主 | 2023-4-19 00:05 | 只看该作者
增加UDP模板代码文件

使用特权

评论回复
14
原来是wjc|  楼主 | 2023-4-19 00:06 | 只看该作者
增添stoutio模板文件

使用特权

评论回复
15
原来是wjc|  楼主 | 2023-4-19 00:06 | 只看该作者
去掉main函数注释

使用特权

评论回复
16
原来是wjc|  楼主 | 2023-4-19 00:06 | 只看该作者
编译一下工程,会错误提示,然后按着错误来解决相应的问题。

使用特权

评论回复
17
原来是wjc|  楼主 | 2023-4-19 00:06 | 只看该作者
上图中提示出了2个错误,分别是ETH和USART找不到。那需要配置“RTE_Device.h”文件,进入此文件的配置视图模式。具体配置如下:

使用特权

评论回复
18
原来是wjc|  楼主 | 2023-4-19 00:06 | 只看该作者
ETH接口有使用重映射的方式,要具体选择。系统的时钟一定不要配置错误。选择好后,再编译一次,还有一个错误 ,如下图:

使用特权

评论回复
19
原来是wjc|  楼主 | 2023-4-19 00:07 | 只看该作者
这个提示是stdout_usart使用的串口号没有选择,配置如下:

因为我使用的是串口1,所以编号要选择对应的,波特率选择115200,打印速度多少会快点。

使用特权

评论回复
20
原来是wjc|  楼主 | 2023-4-19 00:07 | 只看该作者
2.配置RTX

再编译一次就没啥错误了。你以为这就完了?其实还有很多。接下来配置RTX:

使用特权

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

本版积分规则

76

主题

978

帖子

0

粉丝