因为产品的双网口出现了问题,而且是AM335x 内部驱动,难度比较大,现从PHY 端开始分析相关原理,找到双网口不能使用的原因。



#### 此篇是记录一些有关`LAN8710A` 这个`PHY`的一些特性。

  • 各个功能模块大致图解:



* `MII` 模式下各pin 功能描述:

    The MII includes 16 interface signals:
transmit data - TXD[3:0] // 数据发送
transmit strobe - TXEN // 发送的数据有效
transmit clock - TXCLK // 数据发送时钟
transmit error - TXER/TXD4 // 发送错误被检测
receive data - RXD[3:0] // 数据接收
receive strobe - RXDV // 接收脉冲
receive clock - RXCLK // 数据接收时钟
receive error - RXER/RXD4/PHYAD0 // 接收错误
collision indication - COL // 冲突声明
carrier sense - CRS // 载波监听,接收数据有效
    在MII模式下,分为两种情况。

    在发送通道,收发器 驱动传输时钟 `TXCLK` 到控制器,MAC控制器在`TXCLK` 为上升沿的时候同步数据。
控制器驱动 `TXEN` 为高表明传输的数据有效,当检测到传输错误的时候 `MAC` 控制器 驱动`TXER` 为高。 在接收通道,收发器 同时驱动接收数据 RXD[3:0], 和接收时钟信号,控制器时钟在 `RXCLK` 为上升沿的时候接收数据 当 RXDV 为高的时候
当检查到接收错误的时候 接收器驱动 RXER 为高



* 功能描述
* Transceiver --------> 作为一个收发器,这是一个最基本的功能。
* Auto-negotiation -------> 自动裁定功能
* The purpose of the auto-negotiation function is to automatically configure the transceiver to the optimum link parameters based on the capabilities of its link partner. Auto-negotiation is a mechanism for exchanging configuration information between two link-partners and automatically selecting the highest performance mode of operation supported by both sides. Auto-negotiation is fully defined in clause 28 of the IEEE 802.3 specification.
* 自动协商的目的功能是自动配置的收发器最佳链接参数基于其链接伙伴的能力。自动协商机制两个链接对象之间交换配置信息,自动选择双方支持的最高性能的操作模式。自动协商完全定义 28 IEEE 802.3规范的条款。
* 当一次自动协商完成,有关已经通过的连接信息将会记录在 SMI 串行管理接口上面,这个协商处理的结果将会记录在 `PHY Special Control/Status Register` 的 `Speed Indication` 位, 而且在 `Auto Negotiation Link Partner Ability Register`, 这个协商协议只是 `physical layer` 活动而无关 `MAC` 控制器。
* 这个收发器广播的能力是存储在 `Auto Negotiation Advertisement Register` 这个寄存器上,默认的广播模式取决于用户自定义芯片上的信号选择。
* 如果下面的事件发生,那么都会开始 `auto-negotiation`
* 硬件reset
* 软件重启
* 电源重启
* 连接关闭状态
* 设置了 `Basic Control Register` 的 `Restart Auto-Negotiate` 位
* 当上述其中一个事件发生,那么收发器将开始自动裁定 通过不断的发送 `Fast Link Pulses(FLP)` 快速连接脉冲,通过10M 的收发器发送连续的连接脉冲
* 还可以通过 `Parallel Detection` 功能连接一个没有自动裁定的 另外一个连接器。
* 还可以通过 设置寄存器 使`Disabling Auto-negotiation`
* MAC 的接口一共有两种支持,一种是MII 另外一种是RMII, MII 在上面有描述,RMII 这里不作介绍。
* `CRS_DV - Carrier Sense/Receive Data Valid` 载波检测/ 接收数据有效
* `CRS_DV` 在接收媒介不空闲的时候被声明。
* Serial Management Interface (SMI) (串行管理接口)
* 串行管理接口是用来控制设备以及获取他的状态。
* 在这个系统里面,SMI 提供了两个信号线。MDIO 以及MDC。
* MDC 信号是一个非周期性时钟通过 `station management controller(SMC)`
* MDIO 信号线是一个双向数据 SMI 输出输入信号,通过控制SMC 接受数据(commands),发送数据 (status)到SMC
* MDC 沿与沿之间的最小间隔是160ns, 沿与沿之间没有最大时间间隔。
* MDC 一个最小的循环是400 ns,
* MDIO 的读写的数据结构组成如下:
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317133204120-261132952.png)
* Interrupt Management
* 这个设备管理接口支持一个中断能力 不是包含在IEEE 802.3 规范内的。这个中断能力生成一个低异步中断信号在 `nINT` 输出当某一个事件被检测到当这个事件被设置在 `Interrupt Mask Register`
* 这个设备的中断系统提供两种模式,一种初级中断一种另类的中断,两者都是将 `nINT` 引脚设为低当相对应的掩码位被设置, 这两个中断不同的地方只有他们如何 取消断言 `nINT` 中断的输出。
* 1.`Primary Interrupt System` 是默认的中断模式 `(ALTINT bit of the Mode Control/Status Register is “0”)` , 这种初级中断模式总是在上电或者是硬件重启的时候被选择
* 在这个模式去设置一个中断,设置对应的掩码位在 `Interrupt Mask Register`, 然后当事件断言 `nINT` 为真, `nINT` 输出将断言。当对应的事件解除认定 `nINT` 为真,然后 `nINT` 将解除断言。
* Interrupt Management Table :
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317140101245-1190897768.png)


* 2.`Alternate Interrupt System`
* 这种模式是设定的 `ALTINT` 位在 `Mode Control/Status Register` 为1, 在这种模式下去设置中断是设置对应的位在 掩码寄存器30,为了清除一个中断是清除对应的位在`Interrupt Mask Register` 去清除 `nINT` 中断输出。 或者是清除对应的中断源,写`1` 到对应的中断的源标志, 写 `1`到对应的标志源会造成 状态器会去检查这个中断源去决定如果中断源标志要清除或者是继续保持在`1`, 如果条件去解除断言为真,那么中断源标志将被清除 同时 `nINT` 也会被解除断言, 如果解除断言的条件为假,那么中断源标志继续设置,`nINT` 继续被断言。
* Alternative Interrupt System Management Table:
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317141926104-911486229.png)


* 寄存器描述
* 所有的寄存器操作都是通过 `Serial Management Interface (SMI) protocol` (SMI协议)进行寻址操作。
* 寄存器属性描述术语:
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317151342385-1538457149.png)
* `Control and Status Registers` 控制和状态寄存器, 下图提供一个表关于支持的寄存器,寄存器细节,包含的位定义:
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317151657698-1794340789.png)
* 挑几个比较重要的寄存器介绍一下
* `Basic Control Register`: 这是控制基本的控制寄存器,比如说控制 软件reset,回环,速度选择,自动协商允许,关闭电源,孤立模式,重启自动协商,双工模式,冲突测试
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317151958651-1095720565.png)
* `Basic Status Register`: 基本的状态寄存器
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317152603995-2015910964.png)
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317152645776-1670959601.png)
* `Auto Negotiation Link Partner Ability Register`: 这里面主要存放连接的那个伙伴的一个能力的存储寄存器:
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317153300120-993556022.png)
* `Mode Control/Status Register`: 模式控制/状态寄存器
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317153539948-307600604.png)
* `Symbol Error Counter Register`: 错误累计寄存器
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317153903260-2100278705.png)
* `Interrupt Source Flag Register` 中断源标志寄存器
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317154101401-1048936203.png)
* `Interrupt Mask Register` 中断掩码寄存器
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317154141870-1123621216.png)
* `PHY Special Control/Status Register` 物理层专用控制/状态寄存器
![](http://images2015.cnblogs.com/blog/991711/201703/991711-20170317154251276-1645210058.png)

        `

LAN8710A/LAN8710Ai datasheet 记录的更多相关文章

  1. OK335xS 网络连接打印信息 hacking

    /*********************************************************************** * OK335xS 网络连接打印信息 hacking ...

  2. STM32开发记录

    一.使用keil时经常遇到的问题 1.没有下载固件包 2.下载器没选择对 3.没安装下载器的驱动 二.关于数据手册和开发手册 1.如何下载这些手册 在官网下载,官网永远是一手资源 意法半导体官网:ww ...

  3. Lattice 的 Framebuffer IP核使用调试笔记之datasheet笔记

    本文由远航路上ing 原创,转载请标明出处. 学习使用以及调试Framebuffer IP 核已经有一段时间了,调试的时候总想记录些东西,可是忙的时候就没有时间来写,只有先找个地方记录下,以后再总结. ...

  4. Smart210学习记录-----SD/MMC/SDIO驱动

    转自:http://jingpin.jikexueyuan.com/article/23369.html http://blog.csdn.net/evilcode/article/details/7 ...

  5. Arduino单片机使用和开发问题记录(转)

    源:Arduino单片机使用和开发问题记录 1.将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上 ...

  6. STM32F103X datasheet学习笔记---RCC(reset and clock control)

    1.前言 本文主要记录stm32 关于reset 和 clock部分 datasheet的内容. 2.reset 有三种类型的reset:system reset, power reset, back ...

  7. am335x Watchdog 生效导致 LAN8710A action 异常

    原因是因为 watchdog 生效的时候,产生的 reset 信号,只有 2.5us 左右,太短了,导致 LAN8710a 未完全重启 在 kernel watchdog 里面增加下面的代码即可 86 ...

  8. MT29F8G08ABACA nandflash 参数记录

    跟踪 MT29F8G08ABACA datasheet ,记录里面有关软件的参数 首先,硬件上的特征,page size , oob , block size [](http://images2017 ...

  9. am335x Linux kernel DTS pinmux 定义记录

    记录am335x TI PDK3.0 Linux Kernel 设备的pinmux 的配置 在TI 的Linux kernel 设备树里面,有很多关于pinctrl-single,pins 的配置, ...

随机推荐

  1. 通过JS控制各种元素的点击事件的【时间间隔】,特别适合【发表评论】功能

    1.使用情景模拟:下单(防止用户无脑狂点).支付(防止用户无脑点击支付).发表评论(防止用户无脑点击),当然如果你用了一个提示框进行屏蔽,下面代码可以无视了,右上角谢谢. 2.默写情景比如:比如发表评 ...

  2. MySQL-事务隔离级别设置

    加锁研究:http://www.cnblogs.com/JohnABC/p/4377529.html 先了解下 第一类丢失更新.脏读.不可重复读.幻读.第二类丢失更新 第一类丢失更新 撤销一个事务时, ...

  3. PL SQL基本内容(原创)

    本节介绍PL SQL的基本内容 本节所举示例数据来源oracle用户scott下的emp表和dept表,数据如下: 一.plsql简介: 1.概念:procedural language,过程化sql ...

  4. Android 手机震动功能实现

    1首先在AndroidManifest.xml中添加震动权限 <uses-permission android:name="android.permission.VIBRATE&quo ...

  5. OGG_GoldenGate检查点应用Checkpoint(案例)

    2014-03-06 Created By BaoXinjian

  6. 内存管理算法--Buddy伙伴算法【转】

    转自:http://blog.csdn.net/orange_os/article/details/7392986 Buddy算法的优缺点: 1)尽管伙伴内存算法在内存碎片问题上已经做的相当出色,但是 ...

  7. Linux中断 - IRQ Domain介绍

    一.概述 在linux kernel中,我们使用下面两个ID来标识一个来自外设的中断: 1.IRQ number.CPU需要为每一个外设中断编号,我们称之IRQ Number.这个IRQ number ...

  8. Math.Celing、Math.Floor、Math.DivRem与Math.BigMul

    返回大于或等于指定数字的最小整数.例如: double a=Math.Celing(0.00);  //0 double a=Math.Celing(0.40);  //1 double a=Math ...

  9. 群智能优化算法-测试函数matlab源码

    群智能优化算法测试函数matlab源代码 global M; creatematrix(2); %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %画ackley图. %%%% ...

  10. 音频特征提取——pyAudioAnalysis工具包

    作者:桂. 时间:2017-05-04  18:31:09 链接:http://www.cnblogs.com/xingshansi/p/6806637.html 前言 语音识别等应用离不开音频特征的 ...