zoukankan      html  css  js  c++  java
  • 如何使用W5300实现ADSL连接(一)

    在介绍W5300连接ADSL之前,先给大家简单介绍一下WIZnet W5300这款芯片。

    W5300

    W5300是WIZnet公司的一款单芯片器件,采用0.18μmCMOS工艺,内部集成10/100M以太网控制器、MAC层协议和TCP/IP协议栈,主要应用于高集成、高稳定、高性能和低成本的嵌入式系统中。其主要性能特点如下:
    1)支持硬件TCP/IP协议栈:TCP、UDP、ICMP、IPv4、ARP,IGMP、PPPoE;
    2)支持8路独立的网络连接端口SOCKETs同时工作;
    3)内部拥有128 k字节TX/RX存储器用于数据通信,并可根据端口数据吞吐量灵活分配TX/RX存储器空间大小;
    4)支持2种主机接口模式(直接寻址模式和间接寻址模式);
    5)支持16/8 bit数据总线,传输速率高达50 Mbps;
    6)支持第三方物理(PHY)接口。

    简介

    W5300支持在ADSL上的PPP/PPPoE协议通信。ADSL是使用电话线提供多种服务的通信方式。PPP是数据链路层协议,通过使用ADSL调制解调器和发送IP数据包,与ISP设备建立起点对点连接。PPPoE是使用基于以太网的PPP帧进行通信的数据链路层协议。

    ADSL1

     

    图 1. ADSL

    该应用笔记详述了W5300的PPP/PPPoE功能,描述了ADSL连接的具体步骤。

    PPP/PPPoE功能寄存器

    与PPP/PPPoE相关的寄存器列表如下。了解更多详细信息,请参考W5300数据手册。

    MR (模式寄存器) [R/W] [0x08000/----][0x3800 or 0xB800]

    ADSL2

     

     

    PPP/PPPoE模式使能位

    1: 启用PPP/PPPoE

    0: 禁用PPP/PPPoE

    IR (中断寄存器) [R/W] [0x08002/0x002] [0x0000]

    ADSL3

     

    PPP/PPPoE终止中断位

    1: PPP/PPPoE连接关闭

    IMR (中断屏蔽寄存器) [R/W] [0x08004/0x004] [0x0000]

    ADSL4

    IR(PPPT)中断屏蔽位

    PATR (PPPoE认证类型寄存器) [R] [0x08032/0x032] [0x0000]

    它通知与PPPoE服务器协商的认证方法。

    W5300支持2种认证方法。

    ADSl5

    例) PATR = ‘CHAP’

    ADSL6

     

    PTIMER(PPP连接控制协议请求计数器寄存器)[R/W][0x08036/0x036][0x--28]

    它设置连接控制协议(LCP)的发送计数器应答请求,值1约为25ms。

    例) PTIMER = 200 (200 * 25ms = 5000ms = 5s)

    ADSL7

    PMAGICR(PPP LCP Magic number 寄存器)[R/W][0x08038/0x038][0x--00]

    它设置了与PPPoE服务器协商过程中将会用到的4字节的Magic number值。

    例) PMAGICR = 0×01

    ADSl8

     

                                                Magic number = 0×01010101

    PSIDR(PPPoE会话ID寄存器)[R][0x0803C/0x03C][0x0000]

    它通知通过W5300的PPPoE过程获得的PPP会话ID,用于与PPPoE服务器之间的通信。

    例) PSIDR = 0×0017

    ADSL9

    PDHAR(PPPoE目的硬件地址寄存器)[R][0x08040/0x040][00.00.00.00.00.00]

    它通知通过W5300的PPPoE过程获得的PPPoE服务器的硬件地址。

    例) PDHAR = 00.01.02.03.04.05

    ADSL10

    Sn_MR (SOCKETn模式寄存器) [R/W] [0x08200+0x40n/0x200+0x40n] [0x0000]

    它设置端口n的协议类型或者选项。

    ADSL11

    S0_MR_PPPoE只有在端口0有效。它暂时用于PPPoE服务器的连接/中断。在连接建立之后,它可以用于其他协议。

    S0_CR (SOCKET0指令寄存器) [R/W] [0x08202/0x202]

    对于端口0的指令寄存器,PPP/PPPoE指令,如PCON、PDISCON、PCR、PCN、PCJ可以与通用指令,如Open、Close、Connect、Listen、Send或者Recv,一同配置。

    ADSL12

    S0_IMR (SOCKET0中断屏蔽寄存器)[R/W] [0x08204/0x204] [0x--FF]

    ADSL13

     

    S0_IR (SOCKET0中断寄存器) [R/W] [0x08206/0x206] [0x--00]

    S0_IR是通知端口0中断类型的寄存器,例如建立,终止,接收数据,或者超时。特别是在端口0,它会在PPP/PPPoE工作期间通知中断类型发生。

    ADSL14

     

    S0_SSR (SOCKET0端口状态寄存器) [R] [0x08208/0x208] [0x--00]

    它通知端口0的端口状态。在端口0的情况下,它通知PPP的连接状态。

    ADSl15

     

    Sn_SSR(15:8)/Sn_SSR0(7:0) : 全部保留

    Sn_SSR(7:0)/Sn_SSR1(7:0)

    ADSL16

     

    S0_DHAR (SOCKET0目的硬件地址寄存器) [R/W]

    [0x0820C/0x20C] [FF.FF.FF.FF.FF.FF]

    在PPPoE模式下, PPPoE服务器的硬件地址被设置到S0_DHAR。

    例) S0_DHAR = 00.08.DC.01.02.10

    ADSL17

    S0_DPORTR (SOCKET0目的端口寄存器) [R/W] [0x08212/0x212] [0x0000]

    在PPPoE模式下,PPP会话ID设置到S0_DPORTR.

    OPEN指令之后,在S0_DPORTR中设置的PPP会话ID将被应用到PSODR。

    例) S0_DPORTR = 5000(0×1388)

    ADSL18

    S0_MSSR (SOCKET0最大段寄存器) [R/W] [0x08218/0x218] [0x0000]

    它设置端口0的MTU(最大发送单元)或告知MTU的设置信息。

    在使用PPPoE(MR(PPPoE=’1’))时,TCP或者UDP模式的MTU被限定在PPPoE的MTU的范围之内。在IPRAW或者MACRAW模式下,内部不处理MTU,而是使用默认MTU。所以,当发送数据大于默认MTU时,主机应该手动地将数据划分给默认的MTU。

    ADSL19

    感谢关注!明天为您继续介绍连接过程

     


     

  • 相关阅读:
    git和svn
    [Luogu] P1144 最短路计数
    [Luogu] CF280C Game on Tree
    LCA的一种优秀实现方式(倍增+dfs序)
    [Luogu] P1131 [ZJOI2007]时态同步
    [Luogu] P2285 [HNOI2004]打鼹鼠
    背包相关问题总结
    【笔记】模拟梯度下降法的实现
    【笔记】梯度下降法的简单了解
    【笔记】线性回归的可解性和更多思考及线性回归总结
  • 原文地址:https://www.cnblogs.com/riskyer/p/3260354.html
Copyright © 2011-2022 走看看