你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32F756 ETH数据不通问题

[复制链接]
djky12-298419 提问时间:2017-3-21 23:04 /

大家好,最近一直在搞以太网通信,移植了Lwip,物理连接成功了,读写PHY寄存器也是对的,但就是接受不到数据,也发不出数据。愁了我几天,没有啥进展,想来咨询下大家,硬件如下连接如下(PHY是KSZ8041NLI,MII连接):

KSZ8041NLI

KSZ8041NLI


(物理连接:ETH_MDIO:PA2     ETH_MDC : PC1     ETH_MII_RXD2 : PB0     ETH_MII_RXD3: PB1     ETH_MII_TX_CLK: PC3       ETH_MII_TXD2: PC2  ETH_MII_TXD3 : PB8     ETH_MII_RX_CLK: PA1   ETH_MII_RX_DV : PA7    ETH_MII_RXD0 : PC4     ETH_MII_RXD1 : PC5    ETH_MII_TX_EN :PB11      ETH_MII_TXD0 :PB12     ETH_MII_TXD1 : PB13 )


        PHY的地址映射如下(其中0x00和0x01控制和状态寄存器的定义和STM32Cube_FW_F7_V1.4.0例程中的PHY地址相同,其他的中断地址不一样,我在软件中删除掉了中断的配置部分。):

PHY寄存器映射.png

主要软件代码如下:

以太网配置:

void HAL_ETH_MspInit(ETH_HandleTypeDef *heth)
{
  GPIO_InitTypeDef GPIO_InitStructure;

  /* Enable GPIOs clocks */
  __HAL_RCC_GPIOA_CLK_ENABLE();
  __HAL_RCC_GPIOB_CLK_ENABLE();
  __HAL_RCC_GPIOC_CLK_ENABLE();
  __HAL_RCC_GPIOE_CLK_ENABLE();
  __HAL_RCC_GPIOF_CLK_ENABLE();
  __HAL_RCC_GPIOG_CLK_ENABLE();
  __HAL_RCC_GPIOH_CLK_ENABLE();
  __HAL_RCC_GPIOI_CLK_ENABLE();

/* Ethernet pins configuration ************************************************/
  /*
        ETH_MDIO -------------------------> PA2
        ETH_MDC --------------------------> PC1
        ETH_MII_RXD2 ---------------------> PB0  
        ETH_MII_RXD3 ---------------------> PB1  
        ETH_MII_TX_CLK -------------------> PC3
        ETH_MII_TXD2 ---------------------> PC2
        ETH_MII_TXD3 ---------------------> PB8  
        ETH_MII_RX_CLK -------------------> PA1
        ETH_MII_RX_DV --------------------> PA7
        ETH_MII_RXD0 ---------------------> PC4
        ETH_MII_RXD1 ---------------------> PC5
        ETH_MII_TX_EN --------------------> PB11  
        ETH_MII_TXD0 ---------------------> PB12  
        ETH_MII_TXD1 ---------------------> PB13  
  */

  /* Configure PA1, PA2 and PA7 */
  GPIO_InitStructure.Speed = GPIO_SPEED_HIGH;
  GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
  GPIO_InitStructure.Pull = GPIO_NOPULL;
  GPIO_InitStructure.Alternate = GPIO_AF11_ETH;
  GPIO_InitStructure.Pin = (GPIO_PIN_1 | GPIO_PIN_2 | GPIO_PIN_7);
  HAL_GPIO_Init(GPIOA, &GPIO_InitStructure);

  /* Note : ETH_MDIO is connected to PA2 which is shared with other signals like SAI2_SCKB.
     By default on STM32756G-EVAL board, PA2 is connected to SAI2_SCKB, so to connect PA2 to ETH_MDIO :
    - unsolder bridge SB24 (SAI2_CKB)
    - solder bridge SB5 (ETH_MDIO) */

  /* Configure PB0, PB1, PB8, PB11, PB12, PB13 */
  GPIO_InitStructure.Pin = (GPIO_PIN_0 | GPIO_PIN_1 | GPIO_PIN_8 | GPIO_PIN_11 | GPIO_PIN_12 | GPIO_PIN_13);//GPIO_PIN_5;
  HAL_GPIO_Init(GPIOB, &GPIO_InitStructure);

  /* Enable ETHERNET clock  */
  __HAL_RCC_ETH_CLK_ENABLE();
}

main函数配置如下:

void main()
{
      MPU_Config();
       Cache_Enable();
       HAL_Init();
       SystemClock_Config();
       delay_init(200);
        lwip_init();
        Netif_Config();
        udp_echoclient_connect();
        User_notification(&gnetif);
       while(1)
        {

                ethernetif_input(&gnetif);
                sys_check_timeouts();

      }
}



但是接收不到电脑发送给本板子的数据。发现收到了电脑给本板子的ARP数据时,板子调用了HAL_ETH_TransmitFrame()回送数据,但会进入下面代码中/* When Tx Buffer unavailable flag is set: clear it and resume transmission */  if (((heth->Instance)->DMASR & ETH_DMASR_TBUS) != (uint32_t)RESET)
  {
    /* Clear TBUS ETHERNET DMA flag */
    (heth->Instance)->DMASR = ETH_DMASR_TBUS;
    /* Resume DMA transmission*/
    (heth->Instance)->DMATPDR = 0;
  }





收藏 1 评论4 发布时间:2017-3-21 23:04

举报

4个回答
djky12-298419 回答时间:2017-3-21 23:09:01
最下面那段,是我在电脑上用TCP&UDP助手给STM32F756发送UDP数据的时候,板子回复ARP数据报文时候的状态。大家有没有遇到过这种问题,求指点?????????
djky12-298419 回答时间:2017-3-23 14:21:08
确定是MAC发送问题。在low_level_output()中打印出了lwip组的报文,报文没有错误,但是调用HAL_ETH_TransmitFrame()之后,就发送不出去了,示波器测量外围TX【0-4】只能收到类似于MAC帧报头,还不确定是什么导致以太网发送不出数据的,希望遇到类似情况的朋友,能指点一二
niuqq 回答时间:2017-4-19 09:55:59
你好,我也遇到这个问题,arp包发送的时候,TBUS这一位总是1,数据发不出去,楼主是否已解决?如解决,麻烦告知问题原因,谢谢!
萌-图 回答时间:2017-6-29 09:21:52
你好,麻烦问下,发送一帧MAC数据,在buff中的格式是怎样的?需要拷贝到buff中的数据包括哪些

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版