KSZ8873MLLV在AURIX平台的应用

目录

1.管理接口

1.1 MII 接口

1.1.1特点

1.1.2帧格式

1.1.3 MII寄存器

1.2 SMI 接口

1.2.1特点

1.2.2帧格式

1.2.3 8位寄存器

1.3 SPI接口

1.3.1特点

1.3.2总线格式

1.4 I2C接口

1.4.1特点

2.驱动调试

2.1 管理接口数据读写

2.1.1 MII/SMI接口

2.1.2 SPI接口

2.2 寄存器设置

2.2.1寄存器分析

2.2.2寄存器设置

2.3 功能测试

2.3.1 Switch功能测试

2.3.2 PHY功能测试


1.管理接口

1.1 MII 接口

1.1.1特点

IEEE 802.3标准接口,两根信号线mdc/mdio,最高频率5MHZ,访问8个16位寄存器,含6个标准寄存器[0:5], 2个客户寄存器[29, 31]。

1.1.2帧格式

1.1.3 MII寄存器

port1端口PHY地址默认为0x01,port2端口PHY地址默认为0x02。均可通过bits[7:3] of Register 15 (0x0F): Global Control 13 进行更改。Port3不是PHY,故MIIM接口无法访问。

1.2 SMI 接口

1.2.1特点

非标准接口,两根信号线mdc/mdio,最高频率5MHZ,可访问所有寄存器[0-198],间接访问8个MIIM寄存器。寄存器数据为8位,写数据时高8位无效,读数据时高8位为0。SMI接口不是所有CPU在硬件层面都能支持,可以使用GPIO模拟实现。

1.2.2帧格式

1.2.3 8位寄存器

1.3 SPI接口

1.3.1特点

4线SPI接口,最高频率25MHZ,可访问所有寄存器[0-198]。支持2个标准SPI命令:‘0000_0011’ for data read 和 ‘0000_0010’ for data write。

1.3.2总线格式

1.4 I2C接口

1.4.1特点

2线I2C接口,最高频率2.5MHZ,可访问所有寄存器[0-198],从机地址0x5F。可以外接EEPROM。

 

2.驱动调试

2.1 管理接口数据读写

驱动此类芯片的首要任务是调通管理接口,能够访问芯片寄存器。编写程序之前,检测PHY芯片所有管脚信号,波形均正常,收发数据时钟频率为25MHZ。

2.1.1 MII/SMI接口

使用illd自带驱动访问KSZ8873,发现时序是标准MIIM读写时序:

32个1+ST(01)+OP(10)+PHY Address(00)+REG Address(00)+TA(11)+DATA(0xFFFF)。

32个1+ST(01)+OP(01)+PHY Address(00)+REG Address(00)+TA(11)+DATA(0x8000)。

由于MIIM模式下,PHY1和PHY2地址默认为01和02,故此处读写数据均无效。

将PHY地址分别修改为01和02,并读取0-31所有地址,发现确如数据手册所述,只有8个寄存器可访问。

01地址数据:0-5:0x1120 0x7808 0x0022 0x1430 0x05E1 0x0001;1D:0x0000;1F:0x0034

02地址数据:0-5:0x3120 0x7808 0x0022 0x1430 0x05E1 0x0001;1D:0x0000;1F:0x0014

PHY01为何为10Mbps?极性为何反相?应是管脚设置不对,应当设置相关寄存器并确认。

MII能够访问的寄存器数量太少,无法满足要求;而AURIX 单片机无法控制OPCODE为00,因此无法实现KSZ8873特有的SMI接口。

2.1.2 SPI接口

  修改KSZ8873管理接口为SPI接口,频率10MHZ。

  可见已经正确读出芯片ID,一共读出199个8位寄存器的数据。此处为了分析方便,利用MOSI将寄存器地址和其对应数据同步输出。

2.2 寄存器设置

2.2.1寄存器分析

1) Global Registers (Registers 0 – 15)

Register 6 (0x06): Global Control 4,port3 的端口设置;

Register 15 (0x0F): Global Control 13,设置Port1和2的PHY 地址,默认Port1为 0x1,Port 2 PHY address = (Port 1 PHY address) + 1;

2) Port Registers (Registers 16 – 95)

26 (0x1A): Port 1 PHY Special Control/Status,诊断与近端回环设置;

42 (0x2A): Port 2 PHY Special Control/Status

28 (0x1C): Port 1 Control 12,设置自动协商,速度,双工/半双工,流控,默认全部使能;

44 (0x2C): Port 2 Control 12

29 (0x1D): Port 1 Control 13,设置自动协商重启,低功耗,远端回环,默认均不使能;

45 (0x2D): Port 2 Control 13

30 (0x1E): Port 1 Status 0

46 (0x2E): Port 2 Status 0

31 (0x1F): Port 1 Status 1

47 (0x2F): Port 2 Status 1

63 (0x3F): Port 3 Status 1

67 (0x43): Reset,控制软复位;

3) Advanced Control Registers (Registers 96-198)

112 (0x70) to 117 contain the switch engine’s MAC address,读出00 10 A1 FF FF FF。

121 (0x79) to 131 provide read and write access to the static MAC address table, VLAN table, dynamic MAC address table, and MIB counters.

147~142(0x93~0x8E): Station MAC Address 1 MACA1

153~148 (0x99~0x94): Station MAC Address 2 MACA2

187 (0xBB): Interrupt enable register

188 (0xBC): Link Change Interrupt

195 (0xC3): Power Management and LED Mode

166 (0xA6): KSZ8873 mode indicator,读出0x03 ,即芯片型号为MLL/MLLJ。

198 (0xC6): Forward Invalid VID Frame and Host Mode,读出0x02,即为SPI 模式。

 

2.2.2寄存器设置

对0x06,0x1c,0x2c,0x1d,0x2d几个寄存器进行设置,回读正确。

  /* ETH_RST */
  IfxPort_setPinMode(&MODULE_P23, 6, IfxPort_Mode_outputPushPullGeneral);
  /* ETH_INT */
  IfxPort_setPinMode(&MODULE_P23, 7, IfxPort_Mode_inputPullUp);

  IfxPort_setPinState(&MODULE_P23, 6,IfxPort_State_low);
  _DelayMS(20);
  IfxPort_setPinState(&MODULE_P23, 6,IfxPort_State_high);
  _DelayMS(10);

  /* Reset the PHY */
  str_tx[0] = KSZ8873_CMD_WRITE;
  str_tx[1] = KSZ8873_Reg_RESET;
  str_tx[2] = KSZ8873_Reg_RESET_SWRST;
  _SPI_KSZ8873_Send(str_tx,3);

  /* wait for reset to finish */
  do {
      str_tx[0] = KSZ8873_CMD_READ;
      str_tx[1] = KSZ8873_Reg_RESET;
      _SPI_KSZ8873_Exchange(str_tx,str_rx,3);
  } while (str_rx[2] & KSZ8873_Reg_RESET_SWRST);

  /* setup Eth PHY */
  str_tx[0] = KSZ8873_CMD_WRITE;
  str_tx[1] = KSZ8873_Reg_GC4;
  str_tx[2] = 0x20; /* 100MBit,full duplex, flow control */
  _SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_GC9;
  str_tx[2] = 0x40; /* 62.5MHz supports SPI speed between 6MHz to 12.5MHz */
  _SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_P1SC_ST;
  str_tx[2] = 0x02; /* Perform Remote loopback */
  //_SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_P2SC_ST;
  str_tx[2] = 0x02; /* Perform Remote loopback */
  //_SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_P1CON12;
  str_tx[2] = 0xff; /* 100MBit,full duplex, flow control */
  _SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_P2CON12;
  str_tx[2] = 0xff; /* 100MBit,full duplex, flow control */
  _SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_P1CON13;
  str_tx[2] = 0x00; /* Enable auto MDI/MDI-X */
  _SPI_KSZ8873_Send(str_tx,3);

  str_tx[1] = KSZ8873_Reg_P2CON13;
  str_tx[2] = 0x00; /* Enable auto MDI/MDI-X */
  _SPI_KSZ8873_Send(str_tx,3);

 

2.3 功能测试

2.3.1 Switch功能测试

设置KSZ8873相应寄存器后,将两台PC分别连至Port1、Port2,观察寄存器30和46的第五位,插上网线后都为1。设置PC1 IP地址为192.168.4.8,设置PC2 IP地址为192.168.4.23。

PC1执行:ping 192.168.4.23

PC2执行:ping 192.168.4.8

2.3.2 PHY功能测试

目标板运行测试程序,连接PC至Port1,在PC上使用Wireshark抓包,观察收发数据是否正确。

1) 关闭回环模式,目标板只发送数据,可见Wireshark接收到了相应数据[aa 55 aa 55 01 02 03 04]。PC接到Port1和Port2均能接收到数据。

2) 关闭回环模式,目标板只接收数据。

当PC使用ping命令时(广播),PHY芯片的RXDx管脚出现数据,说明PHY部分通讯正常。在单步运行模式下,目标板抓到IP数据,说明下位机已经成功接收了数据。PC接至Port1,执行ping 192.168.4.5 -t;PC接至Port2,执行ping 192.168.4.13,分别在目标板抓到相应IP地址。

 

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
支持RGMII的千兆位以太网收发器 特性 • 单芯片10/100/1000 Mbps以太网收发器,适用于 IEEE 802.3应用 • RGMII 时序支持符合 RGMII 版本 2.0 规范的片上延 时,并且具有外部延时编程选项以及用于对TX和 RX时序路径进行调整和校正的编程选项 • 具有3.3V/2.5V/1.8V耐压I/O的RGMII • 可 自 动 选 择 最 高 链 路 接 通 速 度(10/100/1000 Mbps)和双工模式(半双工/全双工)的自动协商 功能 • 用于差分对的片上端接电阻 • 支持 3.3V单电源操作的片上 LDO控制器 ——只需 一个外部FET即可为内核生成1.2V电压 • 支持最大16 KB的巨型帧 • 125 MHz参考时钟输出 • 用于在未连接线缆时降低功耗的电能检测掉电模式 • 支 持 节 能 以 太 网(Energy Efficient Ethernet, EEE),可实现低功耗空闲(Low-Power Idle, LPI)模式和时钟停止功能(对于100BASE-TX/ 1000BASE-T),并且提供10BASE-Te选项以降低 发送幅值 • 支持 LAN唤醒(Wake-On-LAN, WOL),并具备 稳健的自定义数据包检测功能 • 用于指示链路、活动和速度的可编程LED输出 • 基线漂移校正 • Quiet-WIRE® EMI降低技术 • LinkMD®基于TDR的线缆诊断,可用于识别有故障 的铜缆布线 • 信号质量指示 • 支持参数化NAND树,可用于检测芯片I/O和电路板 之间的故障 • 用于诊断的环回模式 • 自动MDI/MDI-X交叉,可在所有工作速度下检测和 校正对交换 • 自动检测和校正对交换、对偏移和对极性 • 用于PHY寄存器配置的MDC/MDIO管理接口 • 中断引脚选项 • 掉电模式和节能模式 • 工作电压 - 内核(DVDDL、 AVDDL 和 AVDDL_PLL): 1.2V(外部FET或稳压器) - VDD I/O(DVDDH): 3.3V、 2.5V或1.8V - 收发器(AVDDH): 3.3V或2.5V • 通过AEC-Q100 3级(KSZ9131RNXU)和2级 (KSZ9131RNXV)汽车应用认证 • 48引脚QFN(7 mm x 7 mm)封装 目标应用 • 激光器/网络打印机 • 联网存储(Network Attached Storage, NAS) • 网络服务器 • 板载千兆局域网(Gigabit LAN on Motherboard, GLOM) • 宽带网关 • 千兆位SOHO/SMB路由器 • IPTV • IP机顶盒 • 游戏机 • 三重播放(数据、语音和视频)媒体中心 • 工业控制 • 车载网络
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值