/* ******************************************************************************** * 函 数 名: enc28j60_readop * 功能说明: 读寄存器命令 * 参 数: unsigned char op 操作码 * unsigned char address 寄存器地址 * 返 回 值: 返回数据 * 使用说明: 该函数支持的操作码只读控制寄存器 读缓冲器 * 调用方法: enc28j60_readop ******************************************************************************** */ unsigned char enc28j60_readop(unsigned char op, unsigned char address) { unsigned char dat = 0; /* CS拉低 使能ENC28J60 */ ENC28J60_CSL(); /* 操作码和地址 */ dat = op | (address & ADDR_MASK); /* 通过SPI写数据*/ BSP_SPI1SendByte(dat); /* 通过SPI读出数据 */ dat = BSP_SPI1SendByte(0xFF); /* 如果是MAC和MII寄存器,第一个读取的字节无效,该信息包含在地址的最高位*/ if(address & 0x80) { /* 再次通过SPI读取数据 */ dat = BSP_SPI1SendByte(0xFF); } /* CS拉高 禁止ENC28J60 */ ENC28J60_CSH(); /* 返回数据 */ return dat; }
void enc28j60WriteBuffer(u16 len, u8* data) { ENC28J60_CSL(); // issue write command SPInet_ReadWrite(ENC28J60_WRITE_BUF_MEM); while (len--) { SPInet_ReadWrite(*data++); } ENC28J60_CSH(); }
void enc28j60ReadBuffer(u16 len, u8* data) { ENC28J60_CSL(); // issue read command SPInet_ReadWrite(ENC28J60_READ_BUF_MEM); while (len--) { *data++ = (u8) SPInet_ReadWrite(0); } *data = '\0'; ENC28J60_CSH(); }
void enc28j60WriteOp(u8 op, u8 address, u8 data) { u8 dat = 0; ENC28J60_CSL(); // issue write command dat = op | (address & ADDR_MASK); SPInet_ReadWrite(dat); // write data dat = data; SPInet_ReadWrite(dat); ENC28J60_CSH(); }
void CEnc28J60::writeOp(uint8_t op, uint8_t address, uint8_t data) { uint8_t dat = 0; ENC28J60_CSL(); // issue write command dat = op | (address & ADDR_MASK); spi_read_write(dat); // write data dat = data; spi_read_write(dat); ENC28J60_CSH(); }
void enc28j60WriteOp(unsigned char op, unsigned char address, unsigned char data) { unsigned char dat = 0; ENC28J60_CSL(); // issue write command dat = op | (address & ADDR_MASK); SPI1_ReadWrite(dat); // write data dat = data; SPI1_ReadWrite(dat); ENC28J60_CSH(); }
void enc28j60WriteOp(uint8_t op, uint8_t address, uint8_t data) { uint8_t dat = 0; ENC28J60_CSL(); // issue write command dat = op | (address & ADDR_MASK); SPI1_ReadWrite(dat); // write data dat = data; SPI1_ReadWrite(dat); ENC28J60_CSH(); }
void CEnc28J60::writeBuffer(uint8_t* data,uint32_t len) { ENC28J60_CSL(); // issue write command spi_read_write(ENC28J60_WRITE_BUF_MEM); while(len) { len--; spi_read_write(*data); data++; } ENC28J60_CSH(); }
void enc28j60WriteBuffer(unsigned int len, unsigned char* data) { ENC28J60_CSL(); // issue write command SPI1_ReadWrite(ENC28J60_WRITE_BUF_MEM); while(len) { len--; SPI1_ReadWrite(*data); data++; } ENC28J60_CSH(); }
void enc28j60ReadBuffer(unsigned int len, unsigned char* data) { ENC28J60_CSL(); // issue read command SPI1_ReadWrite(ENC28J60_READ_BUF_MEM); while(len) { len--; // read data *data = (unsigned char)SPI1_ReadWrite(0); data++; } *data='\0'; ENC28J60_CSH(); }
void CEnc28J60::readBuffer(uint8_t* data,uint32_t len) { ENC28J60_CSL(); // issue read command spi_read_write(ENC28J60_READ_BUF_MEM); while(len) { len--; // read data *data = (uint8_t)spi_read_write(0); data++; } *data='\0'; ENC28J60_CSH(); }
/* ******************************************************************************** * 函 数 名: enc28j60_writeop * 功能说明: 写寄存器命令 * 参 数: unsigned char op 操作码 * unsigned char address 寄存器地址 * unsigned char data 写入数据 * 返 回 值: 无 * 使用说明: 该函数支持的操作码有: 写控制寄存器 位域清零 位域置1 * 调用方法: enc28j60_writeop ******************************************************************************** */ void enc28j60_writeop(unsigned char op, unsigned char address, unsigned char data) { unsigned char dat = 0; /* 使能ENC28J60 */ ENC28J60_CSL(); /* 通过SPI发送 操作码和寄存器地址 */ dat = op | (address & ADDR_MASK); /* 通过SPI1发送数据 */ BSP_SPI1SendByte(dat); /* 准备寄存器数值 */ dat = data; /* 通过SPI发送数据 */ BSP_SPI1SendByte(dat); /* 禁止ENC28J60 */ ENC28J60_CSH(); }
unsigned char enc28j60ReadOp(unsigned char op, unsigned char address) { unsigned char dat = 0; ENC28J60_CSL(); SpiWrite(op | (address & ADDR_MASK)); dat =SpiRead(); // do dummy read if needed (for mac and mii, see datasheet page 29) if(address & 0x80) { dat =SpiRead(); } // release CS ENC28J60_CSH(); return dat; }
uint8_t CEnc28J60::readOp(uint8_t op, uint8_t address) { uint8_t dat = 0; ENC28J60_CSL(); dat = op | (address & ADDR_MASK); spi_read_write(dat); dat = spi_read_write(0xFF); // do dummy read if needed (for mac and mii, see datasheet page 29) if(address & 0x80) { dat = spi_read_write(0xFF); } // release CS ENC28J60_CSH(); return dat; }
u8 enc28j60ReadOp(u8 op, u8 address) { u8 dat = 0; ENC28J60_CSL(); dat = op | (address & ADDR_MASK); SPInet_ReadWrite(dat); dat = SPInet_ReadWrite(0xFF); // do dummy read if needed (for mac and mii, see datasheet page 29) if (address & 0x80) { dat = SPInet_ReadWrite(0xFF); } // release CS ENC28J60_CSH(); return dat; }
/* ******************************************************************************** * 函 数 名: enc28j60_writeBuffer * 功能说明: 写缓冲区 * 参 数: unsigned int len 读取长度 * unsigned char* data 读取指针 * 返 回 值: 无 * 使用说明: * 调用方法: ******************************************************************************** */ void enc28j60_writebuf(unsigned char* pdata,unsigned int len ) { /* 使能ENC28J60 */ ENC28J60_CSL(); /* 通过SPI发送写取缓冲区命令*/ BSP_SPI1SendByte(ENC28J60_WRITE_BUF_MEM); /* 循环发送 */ while(len) { len--; /* 发送数据 */ BSP_SPI1SendByte(*pdata); /* 地址指针累加 */ pdata++; } /* 禁止ENC28J60 */ ENC28J60_CSH(); }
/* ******************************************************************************** * 函 数 名: enc28j60_readBuffer * 功能说明: 读缓冲区 * 参 数: unsigned int len 读取长度 * unsigned char* data 读取指针 * 返 回 值: 无 * 使用说明: * 调用方法: ******************************************************************************** */ void enc28j60_readBuffer(unsigned char* pdata,unsigned int len) { /* 使能ENC28J60 */ ENC28J60_CSL(); /* 通过SPI发送读取缓冲区命令*/ BSP_SPI1SendByte(ENC28J60_READ_BUF_MEM); /* 循环读取 */ while(len) { len--; /* 读取数据 */ *pdata = (unsigned char)BSP_SPI1SendByte(0); /* 地址指针累加 */ pdata++; } /* 禁止ENC28J60 */ ENC28J60_CSH(); }