OpenEdv-开源电子网

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

lwip 不能够开启自协商模式 ??

[复制链接]

253

主题

792

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1850
金钱
1850
注册时间
2012-10-28
在线时间
342 小时
发表于 2017-12-5 11:12:24 | 显示全部楼层 |阅读模式
5金钱
lwip 不能够开启自协商模式 ??

static void low_level_init(struct netif *netif)
{
  uint32_t regvalue = 0;
  HAL_StatusTypeDef hal_eth_init_status;

  heth.Instance = ETH;

  heth.Init.AutoNegotiation = ETH_AUTONEGOTIATION_DISABLE;    // 这个地方不知道为什么,我开启自商协议后,貌似就不行了,如果设置为禁止选项的话 就可以,哪位大神看看是怎么回事啊 ??
  heth.Init.Speed = ETH_SPEED_100M;                                            //速度100M,如果开启了自协商模式,此配置就无效
  heth.Init.DuplexMode = ETH_MODE_FULLDUPLEX;                          //全双工模式,如果开启了自协商模式,此配置就无效

  heth.Init.PhyAddress = LAN8742A_PHY_ADDRESS;  

  heth.Init.MACAddr =  &lwipdev.mac[0];                         // 这个mac地址已经在其他地方设置好的
  heth.Init.RxMode = ETH_RXINTERRUPT_MODE;           //中断接收模式
  heth.Init.ChecksumMode = ETH_CHECKSUM_BY_HARDWARE;   //硬件帧校验
  heth.Init.MediaInterface = ETH_MEDIA_INTERFACE_RMII;       //RMII接口

  /* USER CODE BEGIN MACADDRESS */

  /* USER CODE END MACADDRESS */

  hal_eth_init_status = HAL_ETH_Init(&heth);

  if (hal_eth_init_status == HAL_OK)
  {
    /* Set netif link flag */  
    netif->flags |= NETIF_FLAG_LINK_UP;
  }
  /* Initialize Tx Descriptors list: Chain Mode */
  HAL_ETH_DMATxDescListInit(&heth, DMATxDscrTab, Tx_Buff, ETH_TXBUFNB);

  /* Initialize Rx Descriptors list: Chain Mode  */
  HAL_ETH_DMARxDescListInit(&heth, DMARxDscrTab, Rx_Buff, ETH_RXBUFNB);

#if LWIP_ARP || LWIP_ETHERNET

  /* set MAC hardware address length */
  netif->hwaddr_len = ETH_HWADDR_LEN;

  //初始化MAC地址,设置什么地址由用户自己设置,但是不能与网络中其他设备MAC地址重复
  netif->hwaddr[0] =  heth.Init.MACAddr[0];
  netif->hwaddr[1] =  heth.Init.MACAddr[1];
  netif->hwaddr[2] =  heth.Init.MACAddr[2];
  netif->hwaddr[3] =  heth.Init.MACAddr[3];
  netif->hwaddr[4] =  heth.Init.MACAddr[4];
  netif->hwaddr[5] =  heth.Init.MACAddr[5];

  /* maximum transfer unit */
  netif->mtu = 1500;//最大允许传输单元,允许该网卡广播和ARP功能

  /* Accept broadcast address and ARP traffic */

  netif->flags = NETIF_FLAG_BROADCAST | NETIF_FLAG_ETHARP | NETIF_FLAG_LINK_UP;   

/* create a binary semaphore used for informing ethernetif of frame reception */
  osSemaphoreDef(SEM);   // 定义os_semaphore_def_##name 结构体
  s_xSemaphore = osSemaphoreCreate(osSemaphore(SEM) , 1 );   ////创建信号量

/* create the task that handles the ETH_MAC */
  osThreadDef(EthIf, ethernetif_input, osPriorityRealtime, 0, INTERFACE_THREAD_STACK_SIZE);
  osThreadCreate (osThread(EthIf), netif);
  /* Enable MAC and DMA transmission and reception */
  HAL_ETH_Start(&heth);

  /* Read Register Configuration */
  HAL_ETH_ReadPHYRegister(&heth, PHY_ISFR, &regvalue);
  regvalue |= (PHY_ISFR_INT4);

  /* Enable Interrupt on change of link status */
  HAL_ETH_WritePHYRegister(&heth, PHY_ISFR , regvalue );

  /* Read Register Configuration */
  HAL_ETH_ReadPHYRegister(&heth, PHY_ISFR , &regvalue);


#endif /* LWIP_ARP || LWIP_ETHERNET */


}

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

558

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
164867
金钱
164867
注册时间
2010-12-1
在线时间
2099 小时
发表于 2017-12-6 00:54:18 | 显示全部楼层
回复

使用道具 举报

253

主题

792

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1850
金钱
1850
注册时间
2012-10-28
在线时间
342 小时
 楼主| 发表于 2017-12-6 09:16:33 | 显示全部楼层

老大,帮忙想想办法啊,看看是哪里没有设置对啊 ??
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
27
金钱
27
注册时间
2019-9-16
在线时间
15 小时
发表于 2019-11-20 09:16:47 | 显示全部楼层
hpdell 发表于 2017-12-6 09:16
老大,帮忙想想办法啊,看看是哪里没有设置对啊 ??

虽然是坟贴,但还是回复下,说不定后面有人看到,自动协商可能超时,在初始化自动协商那里加大判定延迟时间有可能就OK,我反正是这种情况
回复

使用道具 举报

0

主题

2

帖子

0

精华

初级会员

Rank: 2

积分
113
金钱
113
注册时间
2022-7-27
在线时间
25 小时
发表于 2023-7-28 18:14:51 | 显示全部楼层
帮定    3.
回复

使用道具 举报

5

主题

48

帖子

0

精华

初级会员

Rank: 2

积分
105
金钱
105
注册时间
2023-6-26
在线时间
22 小时
发表于 2023-10-11 11:38:50 | 显示全部楼层
我也回复下吧,记录记录,配置了自动协商在上电的时候就要插入网线,否则会一直等待,而且后续再插入网线是不能工作的,正常来说配置不开启,反正我这样设置的
回复

使用道具 举报

253

主题

792

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1850
金钱
1850
注册时间
2012-10-28
在线时间
342 小时
 楼主| 发表于 2023-10-28 08:40:39 | 显示全部楼层
qwerfgh3 发表于 2019-11-20 09:16
虽然是坟贴,但还是回复下,说不定后面有人看到,自动协商可能超时,在初始化自动协商那里加大判定延迟时 ...

感谢感谢啊
回复

使用道具 举报

253

主题

792

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1850
金钱
1850
注册时间
2012-10-28
在线时间
342 小时
 楼主| 发表于 2023-10-28 08:41:16 | 显示全部楼层
HelloSiri 发表于 2023-10-11 11:38
我也回复下吧,记录记录,配置了自动协商在上电的时候就要插入网线,否则会一直等待,而且后续再插入网线是 ...

原来还有这么一回事呀 ,  感谢感谢啊
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-5-14 05:02

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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