uint8_t W5100_MemReadWord(uint16_t addr, uint16_t *val) { uint8_t low, high; W5100_RequestSPIBus(); W5100_CS_ENABLE(); SPIWriteByte(W5100_CMD_READ); SPIWriteByte(addr>>8); /* high address */ SPIWriteByte(addr&0xff); /* low address */ high = SPIReadByte(); /* data */ W5100_CS_DISABLE(); addr++; W5100_CS_ENABLE(); SPIWriteByte(W5100_CMD_READ); SPIWriteByte(addr>>8); /* high address */ SPIWriteByte(addr&0xff); /* low address */ low = SPIReadByte(); /* data */ W5100_CS_DISABLE(); W5100_ReleaseSPIBus(); *val = (high<<8)|low; return ERR_OK; }
uint8_t W5100_MemReadByte(uint16_t addr, uint8_t *val) { W5100_GetBus(); SPIWriteByte(W5100_CMD_READ); SPIWriteByte(addr>>8); /* high address */ SPIWriteByte(addr&0xff); /* low address */ *val = SPIReadByte(); /* data */ W5100_ReleaseBus(); return ERR_OK; }
//******************************************************************************************* // // Function : icmp_send_request // Description : Send ARP request packet to destination. // //******************************************************************************************* BYTE enc28j60ReadOp(BYTE op, BYTE address) { BYTE data; // activate CS CSACTIVE; // issue read command SPISendByte(op | (address & ADDR_MASK)); // read data data = SPIReadByte(); // do dummy read if needed (for mac and mii, see datasheet page 29) if(address & 0x80) { data = SPIReadByte(); } CSPASSIVE; return data; }
///////////////////////////////////////////////////////////////////// //功 能:读RC632寄存器 //参数说明:Address[IN]:寄存器地址 //返 回:读出的值 ///////////////////////////////////////////////////////////////////// u8 ReadRawRC(u8 Address) { u8 ucAddr; u8 ucResult=0; CLR_SPI_CS; ucAddr = ((Address<<1)&0x7E)|0x80; SPIWriteByte(ucAddr); ucResult=SPIReadByte(); SET_SPI_CS; return ucResult; }
void enc28j60ReadBuffer(uint16_t len, uint8_t* data) { CSACTIVE; SPISendByte(ENC28J60_READ_BUF_MEM); while(len) { len--; *data = SPIReadByte(); data++; } *data='\0'; CSPASSIVE; }