OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3207|回复: 4

H743ZI 网络问题 救助

[复制链接]

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-5-31
在线时间
7 小时
发表于 2019-1-17 10:29:51 | 显示全部楼层 |阅读模式
1金钱

程序运行一会会PING不通

1.     PING 工具发一个包 编号 ATK#1
                              
A.png
2.     抓包工具抓取,
B.png
3.     这里看到确实发出去了
C.png
4.     程序中设置断点,
D.png
5.     调试窗口观察
E.png
解释:
HAL_ETH_GetRxDataBuffer(&EthHandle,&RxBuff)
这句话获取最新收到的网络数据包。
返回的是
uint32_t FirstAppDesc;                /*<! First descriptor oflast received packet. */
最后收到的数据包的第一个描述符
看 RxBuff.buffer 显示地址是0x30040200
RX_Buff 是 这里定义的 缓冲网络数据包
#pragma location=0x30040200
uint8_tRx_Buff[ETH_RX_DESC_CNT][ETH_RX_BUFFER_SIZE]; /* Ethernet Receive Buffers */
他们的地址从 0x30040200 一共四个 放在 SDRAM3区域 ,从官方例程拿来的没动。
在设置断点之前我确保Rx_Buff 里面没有 ATK#1 为了对比有没有收到数据。
网络收到的数据包都在Rx_Buff这里面存放着。
最新的数据会从  HAL_ETH_GetRxDataBuffer 函数 给 RxBuff
在我设置断点的时候显示的最新数据是 0x30040200
下面查看这四个地址的数据。
F.png G.png H.png I.png
查看内存显示 。ATK#1 收到了。但是奇怪的是HAL_ETH_GetRxDataBuffer  得到的0x30040200这里面放的是 ATK#4
而我刚发的数据 ATK#1放在 了0x30040E00, 这才是真正最新的数据 。前后差了两个。
我用 HAL_ETH_GetRxDataBuffer得到的不是最新的,但是数据CPU是已经收到了。请问这是为什么?

最佳答案

查看完整内容[请看2#楼]

结帖结帖 问题解决了 void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth) { /* Packet received */ if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_RI)) { if(__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMACIER_RIE)) { /* Call this function to update handle fields */ //if(HAL_ETH_IsRxDataAvailable(heth) == 1) //{ /* Receive complete callback */ H ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

2

主题

8

帖子

0

精华

新手上路

积分
33
金钱
33
注册时间
2016-5-31
在线时间
7 小时
 楼主| 发表于 2019-1-17 10:29:52 | 显示全部楼层
结帖结帖

问题解决了

void HAL_ETH_IRQHandler(ETH_HandleTypeDef *heth)
{
  /* Packet received */
  if (__HAL_ETH_DMA_GET_IT(heth, ETH_DMACSR_RI))
  {
    if(__HAL_ETH_DMA_GET_IT_SOURCE(heth, ETH_DMACIER_RIE))
    {      
      /* Call this function to update handle fields */
      //if(HAL_ETH_IsRxDataAvailable(heth) == 1)
      //{
        /* Receive complete callback */
        HAL_ETH_RxCpltCallback(heth);
      //}
      
      /* Clear the Eth DMA Rx IT pending bits */
      __HAL_ETH_DMA_CLEAR_IT(heth, ETH_DMACSR_RI | ETH_DMACSR_NIS);
    }
  }

//if(HAL_ETH_IsRxDataAvailable(heth) == 1)
屏蔽掉

在用的时候
    if (HAL_ETH_IsRxDataAvailable(&EthHandle))
    {
      if (HAL_ETH_GetRxDataBuffer(&EthHandle, &RxBuff) == HAL_OK)
      {
        HAL_ETH_GetRxDataLength(&EthHandle, &framelength);
再判断  不明原因。。。。
回复

使用道具 举报

57

主题

1680

帖子

3

精华

资深版主

Rank: 8Rank: 8

积分
4306
金钱
4306
注册时间
2018-6-30
在线时间
808 小时
发表于 2019-1-17 10:53:38 | 显示全部楼层
你看下原子LWIP实验例程第一章的实验例程,看下网络有没ping通,重新设置下
或者换台电脑试下
务必将防火墙和杀毒软件关掉
业精于勤荒于嬉;行成于思毁于随!
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165309
金钱
165309
注册时间
2010-12-1
在线时间
2108 小时
发表于 2019-1-22 02:38:05 | 显示全部楼层
宋文帅 发表于 2019-1-17 13:29
结帖结帖

问题解决了

谢谢分享
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
28
金钱
28
注册时间
2021-1-13
在线时间
6 小时
发表于 2024-5-5 13:01:26 | 显示全部楼层

H743ZI 工程代码能参考下么,楼主大神,谢谢
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-22 15:36

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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