Exemplo n.º 1
0
static rt_size_t _spidev_device_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size)
{
	struct rt_spi_device* device;

	device = (struct rt_spi_device*) dev;
	RT_ASSERT(device != RT_NULL);
	RT_ASSERT(device->bus != RT_NULL);

	return rt_spi_transfer(device, buffer, RT_NULL, size);
}
Exemplo n.º 2
0
static rt_size_t _spi_bus_device_write(rt_device_t dev, rt_off_t pos, const void *buffer, rt_size_t size)
{
	struct rt_spi_bus* bus;

	bus = (struct rt_spi_bus*) dev;
	RT_ASSERT(bus != RT_NULL);
	RT_ASSERT(bus->owner != RT_NULL);

	return rt_spi_transfer(bus->owner, buffer, RT_NULL, size);
}
Exemplo n.º 3
0
/*
 * 函数名:SPI_RF24L01_WriteReg
 * 描述  :用于向RF24L01特定的寄存器写入数据
 * 输入  :reg:RF24L01的命令+寄存器地址。
 		   dat:将要向寄存器写入的数据
 * 输出  :RF24L01的status寄存器的状态
 * 调用  :内部调用
 */
u8 SPI_RF24L01_WriteReg(u8 reg,u8 dat)
{
 	u8 sendBuff[2];
	u8 recvBuff[2];
	
	 RF24L01_CE_LOW();
	
	sendBuff[0] = reg;
	sendBuff[1] = dat;
	rt_spi_transfer(rt_spi_device,sendBuff,recvBuff,2);
	
  return recvBuff[0];
}
Exemplo n.º 4
0
/*
 * 函数名:SPI_RF24L01_ReadBuf
 * 描述  :用于从RF24L01的寄存器中读出一串数据
 * 输入  :reg:RF24L01的命令+寄存器地址。
 		   pBuf:用于存储将被读出的寄存器数据的数组,外部定义
		   bytes: pBuf的数据长度	
 * 输出  :RF24L01的status寄存器的状态
 * 调用  :外部调用
 */
u8 SPI_RF24L01_ReadBuf(u8 reg,u8 *pBuf,u8 bytes)
{
 	u8 sendBuff[64];
	u8 recvBuff[64];
	u8 i;
	sendBuff[0] = reg;
	
	RF24L01_CE_LOW();

	rt_spi_transfer(rt_spi_device,sendBuff,recvBuff,bytes + 1);
	for(i = 0; i < bytes; i ++)
		*pBuf++ = recvBuff[1+ i];
		
 	return recvBuff[0];		//返回寄存器状态值
}
Exemplo n.º 5
0
/*
 * 函数名:SPI_RF24L01_WriteBuf
 * 描述  :用于向RF24L01的寄存器中写入一串数据
 * 输入  :reg:RF24L01的命令+寄存器地址。
 		   pBuf:存储了将要写入写寄存器数据的数组,外部定义
		   bytes: pBuf的数据长度	
 * 输出  :RF24L01的status寄存器的状态
 * 调用  :外部调用
 */
u8 SPI_RF24L01_WriteBuf(u8 reg ,u8 *pBuf,u8 bytes)
{
 	u8 sendBuff[64];
	u8 recvBuff[64];
	u8 i;
	
	sendBuff[0] = reg;
	for(i = 0; i < bytes; i++)
		sendBuff[i+1] = *(pBuf + i);
	
	RF24L01_CE_LOW();

	rt_spi_transfer(rt_spi_device,sendBuff,recvBuff,bytes + 1);

 	return recvBuff[0];		//返回寄存器状态值
}
Exemplo n.º 6
0
/*
 * 函数名:SPI_RF24L01_RW
 * 描述  :用于向RF24L01读/写一字节数据
 * 输入  :写入的数据
 * 输出  :读取得的数据
 * 调用  :内部调用
 */
u8 SPI_RF24L01_RW(u8 dat)
{  	
//   /* 当 SPI发送缓冲器非空时等待 */
//  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);
//  
//   /* 通过 SPI2发送一字节数据 */
//  SPI_I2S_SendData(SPI1, dat);		
// 
//   /* 当SPI接收缓冲器为空时等待 */
//  while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

  /* Return the byte read from the SPI bus */
	u8 val;
	
	if(rt_spi_device != RT_NULL) 
		rt_spi_transfer(rt_spi_device,&dat,&val,1);
	else
		val = 0;
	
  return val;
}
Exemplo n.º 7
0
/*
 * 函数名:SPI_RF24L01_ReadReg
 * 描述  :用于从RF24L01特定的寄存器读出数据
 * 输入  :reg:RF24L01的命令+寄存器地址。
 * 输出  :寄存器中的数据
 * 调用  :内部调用
 */
u8 SPI_RF24L01_ReadReg(u8 reg)
{
 	u8 reg_val;
	rt_spi_transfer(rt_spi_device,&reg,&reg_val,1);
	return reg_val;
}