Selaa lähdekoodia

fix:非阻塞接口使用导致阻塞接口失效

alienwalker 4 vuotta sitten
vanhempi
sitoutus
70e4b15f47

+ 1 - 0
application/src/luat_i2c_air105.c

@@ -75,6 +75,7 @@ int luat_i2c_no_block_transfer(int id, int addr, uint8_t is_read, uint8_t *reg,
 		return -1;
 	}
 	I2C_Prepare(id, addr, 1, CB, pParam);
+	I2C_SetNoBlock(id);
 	if (reg && reg_len)
 	{
 		I2C_MasterXfer(id, I2C_OP_READ_REG, reg, reg_len, buff, len, Toms);

+ 1 - 0
application/src/luat_spi_air105.c

@@ -206,6 +206,7 @@ int luat_spi_no_block_transfer(int spi_id, uint8_t *tx_buff, uint8_t *rx_buff, s
 {
 	if (SPI_IsTransferBusy(luat_spi[spi_id].id)) return -1;
 	SPI_SetCallbackFun(luat_spi[spi_id].id, CB, pParam);
+	SPI_SetNoBlock(luat_spi[spi_id].id);
 	return SPI_Transfer(luat_spi[spi_id].id, tx_buff, rx_buff, len, 0);
 
 }

+ 5 - 0
bsp/air105/hal/core_i2c.c

@@ -346,6 +346,11 @@ int I2C_WaitResult(uint8_t I2CID, int32_t *Result)
 	return 1;
 }
 
+void I2C_SetNoBlock(uint8_t I2CID)
+{
+	prvI2C.IsBlockMode = 0;
+}
+
 int32_t I2C_BlockWrite(uint8_t I2CID, uint8_t ChipAddress, const uint8_t *Data, uint32_t Len, uint16_t Toms, CBFuncEx_t CB, void *pParam)
 {
 	int32_t Result;

+ 5 - 1
bsp/air105/hal/core_spi.c

@@ -498,6 +498,11 @@ void SPI_SetCallbackFun(uint8_t SpiID, CBFuncEx_t CB, void *pUserData)
 }
 
 
+void SPI_SetNoBlock(uint8_t SpiID)
+{
+	prvSPI[SpiID].IsBlockMode = 1;
+}
+
 static void SPI_DMATransfer(uint8_t SpiID, uint8_t UseDMA)
 {
 	uint32_t RxLevel;
@@ -579,7 +584,6 @@ int32_t SPI_Transfer(uint8_t SpiID, const uint8_t *TxData, uint8_t *RxData, uint
 		return -ERROR_DEVICE_BUSY;
 	}
 	prvSPI[SpiID].IsBusy = 1;
-	prvSPI[SpiID].IsBlockMode = 0;
 	uint32_t RxLevel, i, TxLen;
 	Buffer_StaticInit(&prvSPI[SpiID].TxBuf, TxData, Len);
 	Buffer_StaticInit(&prvSPI[SpiID].RxBuf, RxData, Len);