/* * 函数: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; }
/* ********************************************************************************************************* * 函 数 名: 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 }
/* ********************************************************************************************************* * 函 数 名: 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; }
/* ********************************************************************************************************* * 函 数 名: 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; }