当前位置:   article > 正文

PHY芯片学习笔记1_phy芯片地址设置

phy芯片地址设置

 PHY芯片简介

从硬件上来说,一般的PHY芯片为模数混合电路,负责接收电、光这类模拟信号,经过解调和A/D转换后通过MII/RMII接口将信号交给MAC内核处理。

PHY地址的设置

SMI站管理接口通过PHY地址访问指定的PHY芯片,简称:PHY芯片的标识。

DP83848的默认地址ADDR是0x01。

外部提供50MHz时钟连接到PHY芯片34号引脚以及RMII_REF_CLK

PHY寄存器简介

有32个寄存器,每一个寄存器都是16位

寄存器:

1、相同的寄存器:根据IEEE802.3标准定义了0~15寄存器(重点BCR和BSR寄存器)

2、自由定义的寄存器:16~31寄存器是由芯片制造商自由定义(制造商定义的)

前16个寄存器用于配置PHY,而后16个寄存器是使用判断网络参数的(双工、网速)

因为前16个寄存器都是类似的,所以ST已经把主要框架搭建好了,用户只负责设置双工和网速参数即可

 

 特殊功能寄存器

通过确认网速及双工模式来设置BCR寄存器的bit8和bit13

  1. #define PHY_SR ((uint16_t)0x0010) /*!< PHY status register Offset */
  2. #define PHY_SPEED_STATUS ((uint16_t)0x0002) /*!< PHY Speed mask */
  3. #define PHY_DUPLEX_STATUS ((uint16_t)0x0004) /*!< PHY Duplex mask */
  4. //L8720A

每一个PHY的特殊功能寄存器都不一样,需要根据相关的手册来确定

DP83848 设置

  1. #define PHY_BCR 0 /*!< Transceiver Basic Control Register */
  2. #define PHY_BSR 1 /*!< Transceiver Basic Status Register */
  3. #define IS_ETH_PHY_ADDRESS(ADDRESS) ((ADDRESS) <= 0x20)
  4. #define IS_ETH_PHY_REG(REG) (((REG) == PHY_BCR) || \
  5. ((REG) == PHY_BSR) || \
  6. ((REG) == PHY_SR))
  7. /**
  8. * @}
  9. */
  10. /** @defgroup PHY_basic_Control_register
  11. * @{
  12. */
  13. #define PHY_Reset ((uint16_t)0x8000) /*!< PHY Reset */
  14. #define PHY_Loopback ((uint16_t)0x4000) /*!< Select loop-back mode */
  15. #define PHY_FULLDUPLEX_100M ((uint16_t)0x2100) /*!< Set the full-duplex mode at 100 Mb/s */
  16. #define PHY_HALFDUPLEX_100M ((uint16_t)0x2000) /*!< Set the half-duplex mode at 100 Mb/s */
  17. #define PHY_FULLDUPLEX_10M ((uint16_t)0x0100) /*!< Set the full-duplex mode at 10 Mb/s */
  18. #define PHY_HALFDUPLEX_10M ((uint16_t)0x0000) /*!< Set the half-duplex mode at 10 Mb/s */
  19. #define PHY_AutoNegotiation ((uint16_t)0x1000) /*!< Enable auto-negotiation function */
  20. #define PHY_Restart_AutoNegotiation ((uint16_t)0x0200) /*!< Restart auto-negotiation function */
  21. #define PHY_Powerdown ((uint16_t)0x0800) /*!< Select the power down mode */
  22. #define PHY_Isolate ((uint16_t)0x0400) /*!< Isolate PHY from MII */
  23. /**
  24. * @}
  25. */
  26. /** @defgroup PHY_basic_status_register
  27. * @{
  28. */
  29. #define PHY_AutoNego_Complete ((uint16_t)0x0020) /*!< Auto-Negotiation process completed */
  30. #define PHY_Linked_Status ((uint16_t)0x0004) /*!< Valid link established */
  31. #define PHY_Jabber_detection ((uint16_t)0x0002) /*!< Jabber condition detected */

 

  1. 对应代码 
  2. #define PHY_Linked_Status               ((uint16_t)0x0004)      /*!< Valid link established */

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小小林熬夜学编程/article/detail/81788
推荐阅读
相关标签
  

闽ICP备14008679号