Hi hamady,
In you SPI read and write function, there are some errors. You can change your code to the following code and run it again.
/*! * SPI read function map to COINES platform */ BME68X_INTF_RET_TYPE bme68x_spi_read(uint8_t reg_addr, uint8_t *reg_data, uint32_t len, void *intf_ptr) { APP_LOG(TS_ON, VLEVEL_L, "Read BME 6810 SPI\r\n"); //uint8_t dev_addr = *(uint8_t*)intf_ptr; GTXBuffer[0] = reg_addr | 0x80; HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // NSS low HAL_SPI_TransmitReceive(&hspi1,GTXBuffer,GRXBuffer,len+1, 1000); while(&hspi1 == HAL_SPI_STATE_BUSY); // wait for xmission complete for(uint32_t i=0;i<len;i++){ APP_LOG(TS_ON, VLEVEL_L, "DATA [%d]=%x\r\n",i,GRXBuffer[i]); } memcpy(reg_data, GRXBuffer+1, len);
HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // NSS high return HAL_OK; }
/*! * SPI write function map to COINES platform */ BME68X_INTF_RET_TYPE bme68x_spi_write(uint8_t reg_addr, const uint8_t *reg_data, uint32_t len, void *intf_ptr) { APP_LOG(TS_ON, VLEVEL_L, "Write BME 6810 SPI\r\n"); //uint8_t dev_addr = *(uint8_t*)intf_ptr; GTXBuffer[0] = len & 0x7F; memcpy(>XBuffer[1], reg_data, len); HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_RESET); // NSS low HAL_SPI_Transmit(&hspi1, GTXBuffer,len+1, 1000); while(&hspi1 == HAL_SPI_STATE_BUSY); // wait for xmission complete HAL_GPIO_WritePin(GPIOA, GPIO_PIN_4, GPIO_PIN_SET); // NSS high return HAL_OK; }
... View more