コード例 #1
0
ファイル: user_spi.c プロジェクト: zouchuan1991/ESP8266-Demos
/*
 * 函数:user_spi_read_byte
 * 说明:SPI读取一个字节
 */
u8 ICACHE_FLASH_ATTR
user_spi_read_byte(void)
{
	u8 read = 0;

#if defined(HARD_SPI)
	u32 recv_data[1];
	SpiData spiData;
    spiData.cmd = MASTER_READ_DATA_FROM_SLAVE_CMD;
    spiData.cmdLen = 0;
    spiData.addr = NULL;
    spiData.addrLen = 0;
    spiData.data = recv_data;
    spiData.dataLen = 1;
    SPIMasterRecvData(SpiNum_HSPI, &spiData);
    read = (u8)(recv_data[0]&0xFF);

#elif defined(SOFT_SPI)
    u8 i;
    CS_0();
	for (i = 0; i < 8; i++){
		SCK_0();
		//user_spi_delay_us(50);
		read = read<<1;
		if (MISO_IS_HIGH()){
			read++;
		}
		SCK_1();
		//user_spi_delay_us(50);
	}
	CS_1();
#endif

	return read;
}
コード例 #2
0
ファイル: bsp_spi_bus.c プロジェクト: Tanmingtian/YH
/*
*********************************************************************************************************
*	函 数 名: bsp_spiRead0
*	功能说明: 从SPI总线接收8个bit数据。 SCK上升沿采集数据, SCK空闲时为低电平。
*	形    参: 无
*	返 回 值: 读到的数据
*********************************************************************************************************
*/
uint8_t bsp_spiRead0(void)
{
#ifdef SOFT_SPI		/* 软件SPI */
	uint8_t i;
	uint8_t read = 0;

	for (i = 0; i < 8; i++)
	{
		read = read<<1;

		if (MISO_IS_HIGH())
		{
			read++;
		}
		SCK_1();
		bsp_spiDelay();
		SCK_0();
		bsp_spiDelay();
	}
	return read;
#endif

#ifdef HARD_SPI		/* 硬件SPI */
	uint8_t read;

	/* 等待发送缓冲区空 */
	while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET);

	/* 发送一个字节 */
	SPI_I2S_SendData(SPI1, 0);

	/* 等待数据接收完毕 */
	while(SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET);

	/* 读取接收到的数据 */
	read = SPI_I2S_ReceiveData(SPI1);

	/* 返回读到的数据 */
	return read;
#endif
}
コード例 #3
0
ファイル: TM7705.c プロジェクト: zouchuan1991/ESP8266-Demos
/*
*********************************************************************************************************
*	函 数 名: TM7705_Read2Byte
*	功能说明: 读2字节数据
*	形    参: 无
*	返 回 值: 读取的数据(16位)
*********************************************************************************************************
*/
static uint16_t ICACHE_FLASH_ATTR
TM7705_Read2Byte(void)
{
	u16 read = 0;
#if 0
	read = user_spi_read_2byte();
#else
	u8 i;
	CS_0();
	for (i = 0; i < 16; i++){
		SCK_0();
		//TM7705_Delay_us(20);
		read = read<<1;
		if (MISO_IS_HIGH()){
			read++;
		}
		SCK_1();
		//TM7705_Delay_us(50);
	}
	CS_1();
#endif
	return read;
}
コード例 #4
0
ファイル: TM7705.c プロジェクト: zouchuan1991/ESP8266-Demos
/*
*********************************************************************************************************
*	函 数 名: TM7705_Recive8Bit
*	功能说明: 从SPI总线接收8个bit数据。 不带CS控制。
*	形    参: 无
*	返 回 值: 无
*********************************************************************************************************
*/
static u8 ICACHE_FLASH_ATTR
TM7705_Recive8Bit(void)
{
	u8 read = 0;
	//read = user_spi_read_byte();

#if defined(SOFT_SPI)
	u8 i;
	CS_0();
	for (i = 0; i < 8; i++){
		SCK_0();
		TM7705_Delay_us(50);
		read = read<<1;
		if (MISO_IS_HIGH()){
			read++;
		}
		SCK_1();
		TM7705_Delay_us(50);
	}
	CS_1();
#endif

	return read;
}