[STM32H5] 【NUCLEO- H563ZI 测评】4.EtherCat移植(一)

[复制链接]
1023|5
 楼主| 穿西装的强子 发表于 2023-7-29 14:15 | 显示全部楼层 |阅读模式
移植前先把网络调通
EtherCat是基于SOEM的开源主站进行移植,目前我移植的版本是1.3.1。
第一步,网口配置
  1. MX_ETH_Init();
  2. int32_t status = 0;
  3. void ETHThread_Entry(void *argument)
  4. {
  5.         (void) argument;
  6.         ETH_MACConfigTypeDef MACConf;

  7.         ETH_DMAConfigTypeDef dmaDefaultConf;
  8.         dmaDefaultConf.DMAArbitration = ETH_DMAARBITRATION_RX1_TX1;
  9.         dmaDefaultConf.AddressAlignedBeats = ENABLE;
  10.         dmaDefaultConf.BurstMode = ETH_BURSTLENGTH_FIXED;
  11.         dmaDefaultConf.TxDMABurstLength = ETH_TXDMABURSTLENGTH_32BEAT;
  12.         dmaDefaultConf.RxDMABurstLength = ETH_RXDMABURSTLENGTH_32BEAT;
  13.         dmaDefaultConf.FlushRxPacket = DISABLE;

  14.         dmaDefaultConf.PBLx8Mode = DISABLE;

  15.         dmaDefaultConf.RebuildINCRxBurst = DISABLE;

  16.         dmaDefaultConf.SecondPacketOperate = ENABLE;
  17.         dmaDefaultConf.TCPSegmentation = DISABLE;
  18.         dmaDefaultConf.MaximumSegmentSize = 536;

  19.         /* enable OSF bit to enhance throughput */
  20.         HAL_ETH_SetDMAConfig(ð_handle, &dmaDefaultConf);

  21.         /* Infinite loop */
  22.         nx_eth_phy_init();
  23.         status = nx_eth_phy_get_link_state();
  24.          /* Get MAC Config MAC */
  25.         HAL_ETH_GetMACConfig(ð_handle, &MACConf);
  26.         MACConf.DuplexMode = ETH_FULLDUPLEX_MODE;
  27.         MACConf.Speed = ETH_SPEED_100M;
  28.         HAL_ETH_SetMACConfig(ð_handle, &MACConf);
  29.         HAL_ETH_Start_IT(ð_handle);

  30.         while(1)
  31.         {
  32.                 status = nx_eth_phy_get_link_state();
  33.                 vTaskDelay(150);
  34.         }
  35. }
  36. /* USER CODE
根据官方给的例程代码,首先将网口初始化,MX_ETH_Init()。
初始化MAC之后最主要的是PHY的初始化。
根据例程的翻阅,只需要调用nx_eth_phy_init();即可。
根据nx_eth_phy_get_link_state()获取的状态进行全双工/半双工,10M/100M/1000M的适配,目前LAN8742只支持100M。
配置MAC后,启动中断。
根据link_state就可查询到是否插入网线。
下一步开始测试MAC收发函数功能和移植SOEM的ETHERCAT。

kaif2n9j 发表于 2024-1-12 16:59 | 显示全部楼层
EtherCat一般应用于什么场景啊?
t1ngus4 发表于 2024-1-12 17:15 | 显示全部楼层
其实用lwip是不是也是可以的?
ex7s4 发表于 2024-1-12 17:29 | 显示全部楼层
感觉还不错啊,这个做网络服务器是不是也是没啥问题的?
zhizia4f 发表于 2024-1-12 18:22 | 显示全部楼层
期待移植这个EtherCat,想了解一下这个源码能支持什么
y1n9an 发表于 2024-1-12 19:32 | 显示全部楼层
配置PHY是不是挺麻烦的?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

63

主题

266

帖子

3

粉丝
快速回复 在线客服 返回列表 返回顶部