硬汉嵌入式论坛

 找回密码
 立即注册
查看: 5200|回复: 23
收起左侧

[以太网] 使用STM32H7的以太网HAL V1.4.0接收数据务必注意调用的函数顺序

[复制链接]

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
发表于 2019-5-8 03:08:50 | 显示全部楼层 |阅读模式
新版HAL库1.4.0的下面这个举例误导了我,导致程序ping时间过长,而且导致实际的文件传输速度降低了一半。

QQ截图20190508030130.jpg

通过与1.3.0老版本的对比,发现新版1.4.0的中断里面没有调用下面这个函数了。



进一步发现在函数HAL_ETH_GetRxDataBuffer里面已经有HAL_ETH_IsRxDataAvailable了,所有务必优先调用HAL_ETH_GetRxDataBuffer

也就是下面的调用顺序:
  1. if(HAL_ETH_GetRxDataBuffer(&EthHandle, &RxBuff) == HAL_OK)
  2. {
  3.     HAL_ETH_GetRxDataLength(&EthHandle, &framelength);

  4.     HAL_ETH_BuildRxDescriptors(&EthHandle);


  5.     xxxxxx数据接收xxxxxx
  6. }
复制代码


这样就解决了ping慢,文件传输慢的问题,当前ST提供的例子是采用的这种方式,移植其它网络协议栈务必要注意。

回复

使用道具 举报

2

主题

28

回帖

34

积分

新手上路

积分
34
发表于 2019-5-8 08:58:37 | 显示全部楼层
硬汉哥,STM32H7的以太网HAL V1.4.0 包 哪里可以下载啊,看官网只有1.3.0版的
回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2019-5-8 09:08:27 | 显示全部楼层
这个文件用lwip时用得上,RL-TCPnet应该不用这个文件吧?
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2019-5-8 09:31:11 | 显示全部楼层
硬汉哥有测试过官方驱动的速度吗
回复

使用道具 举报

2

主题

28

回帖

34

积分

新手上路

积分
34
发表于 2019-5-8 10:55:31 | 显示全部楼层
兵哥哥 发表于 2019-5-8 08:58
硬汉哥,STM32H7的以太网HAL V1.4.0 包 哪里可以下载啊,看官网只有1.3.0版的

http://www.armbbs.cn/forum.php?mod=viewthread&tid=29744
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-8 12:06:09 | 显示全部楼层
兵哥哥 发表于 2019-5-8 08:58
硬汉哥,STM32H7的以太网HAL V1.4.0 包 哪里可以下载啊,看官网只有1.3.0版的

STM32H7的HAL库软件包升级至V1.4.0版本,提供百度云下载
http://www.armbbs.cn/forum.php?m ... 3438&fromuid=58
(出处: 安富莱电子论坛)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-8 12:07:23 | 显示全部楼层
木兰花 发表于 2019-5-8 09:08
这个文件用lwip时用得上,RL-TCPnet应该不用这个文件吧?

新版TCPnet V7.X要用这几个函数,现在KEIL也懒了,最底层的自己不写了。。。

导致这种坑搞的我很痛苦。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-8 12:08:26 | 显示全部楼层
王海靖 发表于 2019-5-8 09:31
硬汉哥有测试过官方驱动的速度吗

我没有用过ST的。

我用的是KEIL的,基本文件传输速度6-7MB/S
在H7上移植FreeRTOS和新版RL-TCPnet V7.X的组合也成功了,文件传输速度基本有个6MB/S左右
http://www.armbbs.cn/forum.php?m ... 9141&fromuid=58

回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2019-5-8 14:55:47 | 显示全部楼层
eric2013 发表于 2019-5-8 12:07
新版TCPnet V7.X要用这几个函数,现在KEIL也懒了,最底层的自己不写了。。。

导致这种坑搞的我很痛苦 ...

嗯,看来以后还得关注st的库的动态啊。。

请问硬汉哥,TCPnet可以用到商业项目中吗?这个库是否含有版权标识的隐藏函数,如我要检测你是否使用了tcpnet,只需发个命令,有响应说明肯定就使用了tcpnet,这样一查一个准,证据确凿了就。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-8 16:36:24 | 显示全部楼层
木兰花 发表于 2019-5-8 14:55
嗯,看来以后还得关注st的库的动态啊。。

请问硬汉哥,TCPnet可以用到商业项目中吗?这个库是否含有版 ...

mbedSSL加密走起。
推荐公司出钱,来正版。
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
发表于 2019-5-8 17:22:38 | 显示全部楼层
本帖最后由 hpdell 于 2019-5-8 17:26 编辑

我看 h7 v1.4.0 版本的例程,应用如下

00.png

例程路径:  STM32Cube_FW_H7_V1.4.0\Projects\STM32H743I-EVAL\Applications\LwIP\LwIP_TCP_Echo_Client\MDK-ARM
他这个应用应该是没有问题的吧 ?

还是说他这个例程里面的调用顺序是不对的 ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-8 17:32:32 | 显示全部楼层
hpdell 发表于 2019-5-8 17:22
我看 h7 v1.4.0 版本的例程,应用如下

你再看看其它例子几个板子的和这个板子的多个例子,你会发现啥写法都有。

这种的也可以,我测试过,就是那个IsRxData不能省,其实函数HAL_ETH_GetRxDataBuffer里面已经调用HAL_ETH_IsRxDataAvailable了,所以这种写法就有些累赘。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-8 17:42:42 | 显示全部楼层
推荐这种的

QQ截图20190508174234.jpg
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2019-5-8 18:33:11 | 显示全部楼层
eric2013 发表于 2019-5-8 12:08
我没有用过ST的。

我用的是KEIL的,基本文件传输速度6-7MB/S

有人说板子做服务器能达到90M的速度,这样看来差距还挺大啊
回复

使用道具 举报

610

主题

3063

回帖

4913

积分

至尊会员

积分
4913
发表于 2019-5-8 20:22:57 | 显示全部楼层
回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2019-5-8 21:07:38 | 显示全部楼层
eric2013 发表于 2019-5-8 16:36
mbedSSL加密走起。
推荐公司出钱,来正版。

买一套pro的估计10万下不来吧。。。。。有点贵哦
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-9 00:43:19 | 显示全部楼层
王海靖 发表于 2019-5-8 18:33
有人说板子做服务器能达到90M的速度,这样看来差距还挺大啊

注意单位,我的这个单位是字节,他们是90Mbps,单位是bit。。。
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-9 00:43:39 | 显示全部楼层
木兰花 发表于 2019-5-8 21:07
买一套pro的估计10万下不来吧。。。。。有点贵哦

那就mbedSSL加密走起。
等我RL-TCPnet的物联网教程。
回复

使用道具 举报

18

主题

285

回帖

339

积分

高级会员

积分
339
发表于 2019-5-9 08:52:38 | 显示全部楼层
eric2013 发表于 2019-5-9 00:43
那就mbedSSL加密走起。
等我RL-TCPnet的物联网教程。

期待大作。。。。。
回复

使用道具 举报

18

主题

321

回帖

375

积分

高级会员

积分
375
发表于 2019-5-9 18:54:09 | 显示全部楼层
eric2013 发表于 2019-5-9 00:43
注意单位,我的这个单位是字节,他们是90Mbps,单位是bit。。。

对不起,我错了
回复

使用道具 举报

9

主题

62

回帖

89

积分

初级会员

积分
89
发表于 2019-5-15 14:05:15 | 显示全部楼层
还记得我发过一个帖子说 H743 ping 着 ping 着就不通了的事情吗?当时我也发现了 HAL_ETH_IsRxDataAvailable 这个函数的问题,当时解决的办法是中断里把它删除了,网速还是不快,后来从写了一个。 我的问题解决了,FTP 速度能达到 9.9MB/S。
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2019-5-16 22:06:12 | 显示全部楼层
songwenshuai 发表于 2019-5-15 14:05
还记得我发过一个帖子说 H743 ping 着 ping 着就不通了的事情吗?当时我也发现了 HAL_ETH_IsRxDataAvailabl ...

能否分享一下.c ?
回复

使用道具 举报

1

主题

3

回帖

6

积分

新手上路

积分
6
发表于 2019-5-16 22:06:43 | 显示全部楼层

能否分享一下目前测试好用的.c ?
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107101
QQ
 楼主| 发表于 2019-5-17 00:32:42 | 显示全部楼层
wx_Tz94cQCs 发表于 2019-5-16 22:06
能否分享一下目前测试好用的.c ?

这个就在ST的软件包里面,有ST做的NUCLEO和综合评估板例子。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-18 06:38 , Processed in 0.347527 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表