LAN8710A/LAN8710Ai datasheet 记录
因为产品的双网口出现了问题,而且是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 的读写的数据结构组成如下:

* 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 :

* 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:

* 寄存器描述
* 所有的寄存器操作都是通过 `Serial Management Interface (SMI) protocol` (SMI协议)进行寻址操作。
* 寄存器属性描述术语:

* `Control and Status Registers` 控制和状态寄存器, 下图提供一个表关于支持的寄存器,寄存器细节,包含的位定义:

* 挑几个比较重要的寄存器介绍一下
* `Basic Control Register`: 这是控制基本的控制寄存器,比如说控制 软件reset,回环,速度选择,自动协商允许,关闭电源,孤立模式,重启自动协商,双工模式,冲突测试

* `Basic Status Register`: 基本的状态寄存器


* `Auto Negotiation Link Partner Ability Register`: 这里面主要存放连接的那个伙伴的一个能力的存储寄存器:

* `Mode Control/Status Register`: 模式控制/状态寄存器

* `Symbol Error Counter Register`: 错误累计寄存器

* `Interrupt Source Flag Register` 中断源标志寄存器

* `Interrupt Mask Register` 中断掩码寄存器

* `PHY Special Control/Status Register` 物理层专用控制/状态寄存器

`
LAN8710A/LAN8710Ai datasheet 记录的更多相关文章
- OK335xS 网络连接打印信息 hacking
/*********************************************************************** * OK335xS 网络连接打印信息 hacking ...
- STM32开发记录
一.使用keil时经常遇到的问题 1.没有下载固件包 2.下载器没选择对 3.没安装下载器的驱动 二.关于数据手册和开发手册 1.如何下载这些手册 在官网下载,官网永远是一手资源 意法半导体官网:ww ...
- Lattice 的 Framebuffer IP核使用调试笔记之datasheet笔记
本文由远航路上ing 原创,转载请标明出处. 学习使用以及调试Framebuffer IP 核已经有一段时间了,调试的时候总想记录些东西,可是忙的时候就没有时间来写,只有先找个地方记录下,以后再总结. ...
- Smart210学习记录-----SD/MMC/SDIO驱动
转自:http://jingpin.jikexueyuan.com/article/23369.html http://blog.csdn.net/evilcode/article/details/7 ...
- Arduino单片机使用和开发问题记录(转)
源:Arduino单片机使用和开发问题记录 1.将程序上传到板子时Arduino IDE提示“avrdude: stk500_getsync(): not in sync: resp=0x00” 网上 ...
- STM32F103X datasheet学习笔记---RCC(reset and clock control)
1.前言 本文主要记录stm32 关于reset 和 clock部分 datasheet的内容. 2.reset 有三种类型的reset:system reset, power reset, back ...
- am335x Watchdog 生效导致 LAN8710A action 异常
原因是因为 watchdog 生效的时候,产生的 reset 信号,只有 2.5us 左右,太短了,导致 LAN8710a 未完全重启 在 kernel watchdog 里面增加下面的代码即可 86 ...
- MT29F8G08ABACA nandflash 参数记录
跟踪 MT29F8G08ABACA datasheet ,记录里面有关软件的参数 首先,硬件上的特征,page size , oob , block size [](http://images2017 ...
- am335x Linux kernel DTS pinmux 定义记录
记录am335x TI PDK3.0 Linux Kernel 设备的pinmux 的配置 在TI 的Linux kernel 设备树里面,有很多关于pinctrl-single,pins 的配置, ...
随机推荐
- 使用DotNetBarcode制作基本常用条码
核心代码: /// <summary> /// 打印一维码 /// </summary> /// <param name="codeText"> ...
- JavaScript(select onchange)的网页跳转的简单实现
方法一: <select onchange="goUrl(this.options[this.selectedIndex])"> <option>==& ...
- 关于android闹钟,设置定时提醒的一点心得
首先在设置提醒之前你需要一个入口,比如说onclick事件中,在此不做赘述. android中使用闹钟进行提醒其实非常简单,你只需要告知系统你想在什么时候被提醒,然后需要一个闹钟的广播接收器,当到你设 ...
- RabbitMQ消息队列(五):Routing 消息路由[转]
上篇文章中,我们构建了一个简单的日志系统.接下来,我们将丰富它:能够使用不同的severity(严重程度)来监听不同等级的log.比如我们希望只有error的log才保存到磁盘上. 1. Bindin ...
- 【js】indexOf()
/** **位置方法indexOf()和lastIndexOf() **这两个方法都接收两个参数:要查找的项和(可选的)表示查找起点位置的索引 **indexOf()方法从数组的开头(位置0)开始向后 ...
- ASP.NET CORE 学习之自定义异常处理
为什么异常处理选择中间件? 传统的ASP.NET可以采用异常过滤器的方式处理异常,在ASP.NET CORE中,是以多个中间件连接而成的管道形式处理请求的,不过常用的五大过滤器得以保留,同样可以采用异 ...
- du和df命令的区别
du和df命令都被用于获得文件系统大小的信息:df用于报告文件系统的总块数及剩余块数,du -s /<filesystem>用于报告文件系统使用的块数.但是,我们可以发现从df命令算出的文 ...
- Python fabs() 函数
描述 fabs() 方法返回数字的绝对值,如math.fabs(-10) 返回10.0. fabs() 函数类似于 abs() 函数,但是他有两点区别: abs() 是内置函数. fabs() 函数在 ...
- Token:服务端身份验证的流行方案【转】
01- 身份认证 服务端提供资源给客户端,但是某些资源是有条件的.所以服务端要能够识别请求者的身份,然后再判断所请求的资源是否可以给请求者. token是一种身份验证的机制,初始时用户提交账号数据给服 ...
- 客户端负载均衡:Ribbon
Ribbon是一个客户端的负载均衡器,可以提供很多HTTP和TCP的控制行为.Feign已经使用了Ribbon,所以如果你使用了@FeignClient,Riboon也同样被应用了. Ribbon核心 ...