在读取dm9000 的芯片ID时,返回ID错误。代码如下:
#define DM9000_BASE 0x20000300
#define DM9000_VID_L 0x28
#define DM9000_VID_H 0x29
#define DM9000_PID_L 0x2A
#define DM9000_PID_H 0x2B
#define DM9000_ID 0x90000A46
#define DM9000_INT_MII 0x00
#define DM9000_PPTR *(volatile u16_t *)(DM9000_BASE) // 命令寄存器地址
#define DM9000_PDATA *(volatile u16_t *)(DM9000_BASE + 4)
u32_t GetDM9000ID (void){
u32_t id_val;
DM9000_PPTR = DM9000_PID_H;
id_val = (DM9000_PDATA & 0xff) << 8;
DM9000_PPTR = DM9000_PID_L;
id_val+= (DM9000_PDATA & 0xff);
id_val = id_val << 16;
DM9000_PPTR = DM9000_VID_H;
id_val += (DM9000_PDATA & 0xff) << 8;
DM9000_PPTR = DM9000_VID_L;
id_val += (DM9000_PDATA & 0xff);
}
读写的时序 我参考
http://blog.chinaunix.net/u1/57901/showart_2023852.html 但是返回的ID就是不对,请高手们指教