电子说
在电子工程师的日常工作中,芯片的性能和稳定性至关重要。ENC28J60作为一款常用的以太网控制器芯片,其硅片问题和数据手册的澄清对于我们的设计工作有着重要的影响。今天,我们就来深入探讨一下ENC28J60芯片的硅片勘误和数据手册的相关内容。
文件下载:ENC28J60-H.pdf
ENC28J60有多个硅片版本,包括B1、B4、B5和B7。这些版本在功能上基本符合当前的设备数据手册(DS39662C),但存在一些异常情况。我们可以通过查询设备控制寄存器空间Bank 3中地址为12h的只读EREVID寄存器来获取硅片版本。不同版本的硅片在一些功能模块上存在问题,下面我们来详细了解一下。
| 模块 | 特征 | 问题 | 问题总结 | 受影响版本 | |||
|---|---|---|---|---|---|---|---|
| B1 | B4 | B5 | B7 | ||||
| MAC接口 | — | 1 | 低速异步SPI时钟下MAC寄存器不可靠 | X | X | ||
| 复位 | — | 2 | CLKRDY提前置位 | X | X | X | X |
| 核心 | 工作规格 | 3 | 不支持工业温度范围(-40°C至+85°C) | X | X | ||
| 振荡器 | CLKOUT引脚 | 4 | 节能模式下CLKOUT不可用 | X | X | X | X |
| 内存 | 以太网缓冲区 | 5 | 接收缓冲区必须从0000h开始 | X | X | X | X |
| 中断 | — | 6 | 接收数据包待处理中断标志(PKTIF)不可靠 | X | X | X | X |
| PHY | — | 7 | TPIN+/-自动极性检测和校正不可靠 | X | X | X | X |
| PHY | — | 8 | 不同硅片版本的RBIAS电阻值不同 | X | X | ||
| PHY | — | 9 | 半双工内部环回不可靠 | X | X | X | X |
| PHY | — | 10 | 全双工内部环回不可靠 | X | X | X | X |
| PHY LED | — | 11 | 组合碰撞和双工状态模式不可用 | X | X | X | X |
| 发送逻辑 | — | 12 | 发送中止可能导致发送逻辑停滞 | X | X | X | X |
| PHY | — | 13 | 接收到的链路脉冲可能导致碰撞 | X | X | ||
| 内存 | 以太网缓冲区 | 14 | ERXRDPT中的偶数可能损坏接收缓冲区 | X | X | X | X |
| 发送逻辑 | — | 15 | LATECOL状态位不可靠 | X | X | X | X |
| PHY LED | — | 16 | LED自动极性检测不可靠 | X | X | X | X |
| DMA | — | 17 | DMA校验和计算将中止接收数据包 | X | X | X | X |
| 接收滤波器 | — | 18 | 模式匹配滤波器允许接收额外的数据包 | X | X | X | X |
| SPI接口 | — | 19 | 节能模式下复位命令不可用 | X | X | X | X |
| 在测试B1和B4硅片版本是否符合IEEE标准802.3时,发现了一些一致性问题。这些问题在B4版本之后不再存在,仅供参考。 | 问题 | 问题总结 | 受影响版本 | ||
|---|---|---|---|---|---|
| B1 | B4 | B5 | B7 | ||
| 1 | TP_IDL发送波形违反IEEE STD 802.3™模板 | X | X | ||
| 2 | PHY在链路测试失败状态下接受接收数据包 | X | X | ||
| 3 | 碰撞强制执行延迟 | X | X |
当主机微控制器的SPI时钟频率低于8 MHz时,对MAC寄存器的读写可能不可靠。解决方法有两种:一是将SPI运行在至少8 MHz的频率;二是生成25/2(12.5 MHz)、25/3(8.333 MHz)、25/4(6.25 MHz)、25/5(5 MHz)等频率的SPI时钟,并与进入ENC28J60 OSC1的25 MHz时钟同步。
发送SPI复位命令后,PHY时钟停止,但ESTAT.CLKRDY位未清除,因此轮询CLKRDY位无法检测PHY是否准备好。此外,硬件启动时间300 μs可能在设备准备好运行之前就已过期。解决方法是在发出复位命令后,在固件中等待至少1 ms让设备准备好。
设备数据手册规定支持工业工作温度范围(-40°C至+85°C),但硅片版本B1和B4仅支持商业温度范围(0°C至+70°C)。解决方法是使用硅片版本B5或更高版本。
在节能模式(ECON2.PWRSV = 0)下,CLKOUT无输出。如果主机控制器使用CLKOUT信号作为系统时钟,则不要启用节能模式。
接收硬件维护一个内部写指针,当主机微控制器写入接收缓冲区起始指针ERXST或接收缓冲区结束指针ERXND时,该指针应更新为ERXST的值。但有时写入ERXST或ERXND时,内部接收写指针会存储0000h而不是ERXST地址。解决方法是将缓冲区内存的下段用于接收缓冲区,从地址0000h开始。
接收数据包待处理中断标志(EIR.PKTIF)不能可靠/准确地报告待处理数据包的状态。在中断服务例程(ISR)中,如果不知道是否有待处理数据包以及中断源,切换到Bank 1并检查EPKTCNT的值。如果轮询是否有待处理数据包,也检查EPKTCNT的值。
PHY层的自动RX极性检测和校正功能无法按描述工作。在设计应用时,应始终验证TPIN+和TPIN-引脚是否正确连接。
当前数据手册中推荐的RBIAS外部电阻值不适用于某些硅片版本。对于硅片版本B1和B4,在RBIAS引脚和地之间使用2.7 kΩ、1%的外部电阻;数据手册中显示的值(2.32 kΩ)适用于版本B5和B7。
半双工和全双工环回模式下,数据包不能可靠地回环。解决方法是使用外部环回连接器/电缆在全双工模式下进行环回诊断。
当PHLCON寄存器编程为在同一LED上输出双工状态和碰撞活动时,仅显示双工状态。在半双工模式下,将PHLCON寄存器的LxCFG位编程为‘0011’以显示碰撞状态;在全双工模式下,将LxCFG位编程为‘0101’以显示双工状态。
在半双工模式下,由于过多碰撞、晚期碰撞或过多延迟导致的硬件传输中止可能会使内部发送逻辑停滞。在尝试发送数据包之前,通过设置ECON1.TXRST然后清除ECON1.TXRST来重置内部发送逻辑。
在半双工模式下与某些链路伙伴通信时,PHY有时会错误地将接收到的链路脉冲解释为碰撞事件。实现软件重传机制,当发生晚期碰撞时,检测发送状态向量中的相关位和EIR.TXERIF位,并根据情况重置发送状态机。
当将偶数编程到ERXRDPTH:ERXRDPTL寄存器中时,接收硬件可能会损坏循环接收缓冲区。确保只将奇数地址写入ERXRDPT寄存器。
如果在发送64字节后发生碰撞,发送逻辑可能不会设置晚期碰撞错误状态位(ESTAT.LATECOL)。当可能发生晚期碰撞时,读取发送状态向量并检查发送晚期碰撞位(位29)。
某些LED的自动极性检测电路在复位时会误检测LED的连接极性。在LED上并联一个电阻,推荐电阻值在1 kΩ至100 kΩ之间。
如果DMA模块在接收以太网数据包时处于校验和模式(ECON1.CSUMEN, (DMAST =1) ),正在接收的数据包将被中止。不要使用DMA模块进行校验和计算,而是在软件中进行校验和。
使用模式匹配接收滤波器时,可能会接受一些本应被拒绝的数据包。在使用模式匹配接收滤波器时,在软件中丢弃任何不需要的数据包。
在节能模式(ECON2.PWRSV = 1)下,发出SPI系统复位命令将无效。清除PWRSV位并等待设备的电源稳压器稳定后再发出SPI系统复位命令。
在最新版本的设备数据手册(DS39662C)中,有一处需要注意的排版修正和澄清:在第8.2节“模式匹配滤波器”中,编程到EPMOH:EPMOL寄存器中的模式匹配偏移量应从目标地址字段的开头开始加载偏移量,并且EPMOH:EPMOL寄存器必须仅编程为偶数(即EPMOL<0>必须始终为‘0’)。
ENC28J60芯片虽然存在一些硅片问题,但通过了解这些问题并采取相应的解决方法,我们可以在设计中避免或减少这些问题对系统的影响。作为电子工程师,我们需要仔细研究芯片的数据手册和勘误信息,确保设计的稳定性和可靠性。在实际应用中,你是否遇到过类似的芯片问题?你是如何解决的呢?欢迎在评论区分享你的经验。
全部0条评论
快来发表一下你的评论吧 !