硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1131|回复: 4
收起左侧

[技术讨论] DM9162的热插拔问题

[复制链接]

1

主题

2

回帖

5

积分

新手上路

积分
5
发表于 2024-5-30 15:02:11 | 显示全部楼层 |阅读模式
DM9162做热插拔的时候,碰到一个问题
DM9162的Basic Mode Status Register,里面的link status位
函数status =(ETH_ReadPHYRegister(PHY_ADDRESS, PHY_BSR));读出来status始终是0
同样的代码在83848上没问题。有朋友遇到过吗?

回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-5-31 08:53:09 | 显示全部楼层
看下是这个不,这个的话,是没问题的

#define REG_BMCR              0x00U     /* Basic Control                      */
#define REG_BMSR              0x01U     /* Basic Status                       */

/* Basic Status Register Bitmasks */
#define BMSR_100B_T4          0x8000U   /* 100BASE-T4 Capable                 */
#define BMSR_100B_TX_FD       0x4000U   /* 100BASE-TX Full Duplex Capable     */
#define BMSR_100B_TX_HD       0x2000U   /* 100BASE-TX Half Duplex Capable     */
#define BMSR_10B_T_FD         0x1000U   /* 10BASE-T Full Duplex Capable       */
#define BMSR_10B_T_HD         0x0800U   /* 10BASE-T Half Duplex Capable       */
#define BMSR_NO_PREAMBLE      0x0040U   /* Preamble suppression               */
#define BMSR_ANEG_COMPLETE    0x0020U   /* Auto Negotiation Complete          */
#define BMSR_REMOTE_FAULT     0x0010U   /* Remote Fault                       */
#define BMSR_ANEG_ABILITY     0x0008U   /* Auto Negotiation Ability           */
#define BMSR_LINK_STAT        0x0004U   /* Link Status (1=link is up)         */
#define BMSR_JABBER_DETECT    0x0002U   /* Jabber Detect                      */
#define BMSR_EXT_CAPAB        0x0001U   /* Extended Capability                */

[C] 纯文本查看 复制代码
/**
  \fn          ARM_ETH_LINK_STATE GetLinkState (void)
  \brief       Get Ethernet PHY Device Link state.
  \return      current link status \ref ARM_ETH_LINK_STATE
*/
static ARM_ETH_LINK_STATE GetLinkState (void) {
  ARM_ETH_LINK_STATE state;
  uint16_t           val = 0U;

  if (PHY.flags & PHY_POWER) {
    PHY.reg_rd(ETH_PHY_ADDR, REG_BMSR, &val);
  }
  state = (val & BMSR_LINK_STAT) ? ARM_ETH_LINK_UP : ARM_ETH_LINK_DOWN;

  return (state);
}
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2024-5-31 10:51:28 | 显示全部楼层
eric2013 发表于 2024-5-31 08:53
看下是这个不,这个的话,是没问题的

#define REG_BMCR              0x00U     /* Basic Control       ...

是他,同样的代码,在83848是好的,不知道在9162上这个val怎么始终是0
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117512
QQ
发表于 2024-6-1 08:28:43 | 显示全部楼层
jaywhitejay 发表于 2024-5-31 10:51
是他,同样的代码,在83848是好的,不知道在9162上这个val怎么始终是0

那没问题,我们一直用的这个。

另外这个9162还有个网线插拔硬件触发引脚,你可以网线插拔时看下效果。
回复

使用道具 举报

1

主题

2

回帖

5

积分

新手上路

积分
5
 楼主| 发表于 2024-6-12 09:10:58 | 显示全部楼层
eric2013 发表于 2024-6-1 08:28
那没问题,我们一直用的这个。

另外这个9162还有个网线插拔硬件触发引脚,你可以网线插拔时看下效果。

感谢,我试试看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-12 06:07 , Processed in 0.037692 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表