当前位置: 首页 > news >正文

LAN8720 寄存器概览和STM32 HAL库读写测试

目录

  • 寄存器
    • 0x00:Basic Control Register(BCR)
    • 0x01:Basic Status Register(BSR)
  • 连接
  • 测试寄存器读写
      • 测试
  • 补充

寄存器

//

0x00:Basic Control Register(BCR)

BIT15:Soft Reset
写1复位,写1之后自清除。复位之后的芯片配置源自Mode Configuration寄存器,Mode Configuration寄存器的初始值来自上电之后的strap pin。

BIT14:Loopback
写1进入环回模式

BIT13:Speed Select
写1选择100M,写0选择10M
注意:如果自动协商被使能,那么此位设置无效

BIT12:Auto-Negotiation Enable
写1使能自动协商
写1之后会覆盖掉BIT13:Speed Select和BIT8 Duplex Mode的配置

BIT11:Power Down
写1进入掉电模式
注意:进入掉电模式之前要取消自动协商

BIT10:Isolate
写1隔离PHY和MII

“PHY隔离模式”用于通过MDIO/MDC接口进行通信,无需MAC的管理。该模式用于检查PHY自身功能,包括以太网连接和MDIO/MDC管理。
在此模式下,PHY与MII/RMII/RGMII隔离,以便独立检测PHY本身,确保其在PHY/MAC系统中使用时无任何问题。此模式主要用于调试阶段,通过MDC/MDIO单独管理PHY,以验证其是否正常工作。

BIT9:Restart Auto-Negotiate
写1重启自动协商,置位之后自清除

BIT8:Duplex Mode
写1全双工,写0半双工

//

0x01:Basic Status Register(BSR)

BIT15~BIT9:通讯介质能力启用
通讯介质参考https://blog.csdn.net/yeahpeople/article/details/116430588
LAN8720只能在部分介质类型下工作

BIT8:Extended Status
指示是否在index = 0x0F上有扩展状态信息

BIT7, BIT6:RESERVED

BIT5: Auto-Negotiate Complete
自动协商完成

BIT4: Remote Fault
网上看到过一个因为电磁辐射导致报Remote Fault和link down的。

BIT3: Auto-Negotiate Ability
是否带有自动协商能力

BIT2:Link status
网线连接状态

BIT1:Jabber Detect
jabber帧是指有效长度大于指定最大长帧长度,且CRC校验错误的帧

BIT0:Extended Capabilities
支不支持扩展能力寄存器

连接

测试寄存器读写

读写之前需要做一次硬件复位

//硬件复位
HAL_GPIO_WritePin(ETH_NRST_GPIO_Port, ETH_NRST_Pin, GPIO_PIN_RESET);
HAL_Delay(100);
HAL_GPIO_WritePin(ETH_NRST_GPIO_Port, ETH_NRST_Pin, GPIO_PIN_SET);
HAL_Delay(5);

做完硬件复位做软件复位,也是寄存器写入BCR的示例

static uint8_t ret  = 0;
static uint8_t lan8720addr = 0;
//置位BCR-BIT15,Soft Reset
ret = HAL_ETH_WritePHYRegister(&heth, lan8720addr, PHY_BCR,PHY_RESET);
if (ret != HAL_OK) {Error_Handler();
}
HAL_Delay(100);

读取BSR

ret = HAL_ETH_ReadPHYRegister(&heth, lan8720addr, PHY_BSR, &regvalue);
if (ret != HAL_OK) {Error_Handler();
}
SEGGER_RTT_printf(0, "%04x\n", regvalue);

测试

接入线缆和不接入线缆的情况下,BSR寄存器的区别

在这里插入图片描述
可以看出,拔掉网线之后PHY芯片会重启自动协商流程

补充

BCR,BSR寄存器是通用的,类似的网卡都会实现这个功能。
部分寄存器是供应商特定的,如下图
在这里插入图片描述
其中31寄存器指示自动协商的结果,如下
在这里插入图片描述
ST的HAL库会关注这个,需要手动修改hal库内容
在这里插入图片描述
怎么修改在后面LWIP移植的章节描述吧,只用8720做链路层通讯的话这个在库里用不到

31号寄存器在网线连接和断开的情况下寄存器内容如下:
在这里插入图片描述

http://www.dtcms.com/a/263918.html

相关文章:

  • CSS 安装使用教程
  • FreeRTOS任务切换
  • 力扣网C语言编程题:寻找两个正序数组的中位数
  • RIP 技术深度解析
  • 文心一言开源版测评:能力、易用性与价值的全面解析
  • [创业之路-457]:企业经营层 - 蓝海战略 - 价值创新不仅仅是技术创新
  • Java项目:基于SSM框架实现的智慧养老平台管理系统【ssm+B/S架构+源码+数据库+毕业论文】
  • 大麦基于HarmonyOS星盾安全架构,打造全链路安全抢票方案
  • 【机器学习深度学习】模型微调的基本概念与流程
  • 06会话管理
  • 前端计算机视觉:使用 OpenCV.js 在浏览器中实现图像处理
  • 量化选股策略 聚宽
  • 如何利用Charles中文版抓包工具提升API调试与网络性能
  • 二刷 苍穹外卖day10(含bug修改)
  • 如何使用StartUML绘制类图,用例图,时序图入门
  • 转录组分析流程(二):差异分析
  • MySQL MVCC 详解
  • ChatGPT使用限额记录与插件统计
  • 杭州来未来科技 Java 实习面经
  • [C#] WPF - 自定义样式(Slider篇)
  • 【Hive SQL优化完全指南:从0.x到4.x的性能进化之路】
  • c# IO密集型与CPU密集型任务详解,以及在异步编程中的使用示例
  • [2025CVPR]DE-GANs:一种高效的生成对抗网络
  • 微分几何、旋量理论、李群李代数、黎曼度量、微分流形、SE(3)、SO(3)
  • java微服务-linux单机CPU接近100%优化
  • Jenkins × 容器技术:构建未来DevOps生态的超级引擎
  • 插入排序解析
  • C++ dll lib 以及编译链接加载的底层机制
  • 【从历史数据分析英特尔该如何摆脱困境】
  • 跨境证券交易系统合规升级白皮书:全链路微秒风控+开源替代,护航7月程序化交易新规落地