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

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管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版