keil4.53例程 Keil453ARMBoardsSTSTM3240G-EVALRLTCPnetLibrary下有一个DP83848的驱动,
里面读PHY的代码是
static U16 read_PHY (U32 PhyReg) {
/* Read a PHY register 'PhyReg'. */
U32 tout;
ETH->MACMIIAR = DP83848C_DEF_ADR << 11 | PhyReg << 6 | MMAR_MB;
/* Wait until operation completed */
tout = 0;
for (tout = 0; tout < MII_RD_TOUT; tout++) {
if ((ETH->MACMIIAR & MMAR_MB) == 0) {
break;
}
}
return (ETH->MACMIIDR & MMDR_MD);
}
我不明白的是 ETH->MACMIIAR = DP83848C_DEF_ADR << 11 | PhyReg << 6 | MMAR_MB; 只是对一个结构体成员赋值啊,并没有对芯片的操作啊,为什么下面一句
就可以等待芯片操作结束信号呢? write_PHY子程序也有这个问题,它到底在哪里对PHY芯片进行操作啊,快崩溃了。
此帖出自
小平头技术问答
一周热门 更多>