Exemple #1
0
/*
********************************************************************************
* 函 数 名: 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();
}
Exemple #5
0
	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();
	}
Exemple #6
0
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();
}
Exemple #7
0
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();
} 
Exemple #8
0
	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();
	}
Exemple #9
0
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();
}
Exemple #10
0
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();
}
Exemple #11
0
	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();
	}
Exemple #12
0
/*
********************************************************************************
* 函 数 名: 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;
}
Exemple #14
0
	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;
	}
Exemple #15
0
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;
}
Exemple #16
0
/*
********************************************************************************
* 函 数 名: 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();
}
Exemple #17
0
/*
********************************************************************************
* 函 数 名: 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();
}