Skip to main content
Explorer
August 19, 2019
Question

How to data from the LSM6DS3 at maximum speed?

  • August 19, 2019
  • 0 replies
  • 509 views

Hi there.

We tried to get data from the LSM6DS3 at maximum speed but data rate of the sensor was always around 400Hz.

Datasheet say 'LSM6DS3 supports up to 6.66kHz'. Then, can I read the raw data at 6.66kHz through SPI communication?

If it is possible, which resistor or setting must be configured?

Our code is down below.

Firstly, initializing LSM6DS3

void lsm6ds3_init(void)
 {
 	
 // CTRL1_XL Write
	TxData[0] = 0x10; // address
	TxData[1] = 0x00; // power down
	HAL_SPI_Transmit(&hspi1,&TxData[0],1,0xff);
 HAL_SPI_Transmit(&hspi1,&TxData[1],1,0xff);
	uint8_t cmd=0x10 ;
	uint8_t ret=SPI_Read(cmd,1,10);
 
	TxData[0] = 0x15; // address
	TxData[1] = 0x00; // highperformance mode
	HAL_SPI_Transmit(&hspi1,&TxData[0],1,0xff);
 HAL_SPI_Transmit(&hspi1,&TxData[1],1,0xff);
	cmd=0x15 ;
	ret=SPI_Read(cmd,1,10);
	 
	//CTRL1_XL 
	TxData[0] = 0x10; //address
	TxData[1] = 0xA0; // value 1010 00 00
 cmd=0x10 ;
	ret=SPI_Read(cmd,1,10);
	HAL_SPI_Transmit(&hspi1,&TxData[0],1,0xff);
 HAL_SPI_Transmit(&hspi1,&TxData[1],1,0xff);
 
	
	// CTRL2_G_XL Write	
	TxData[0] = 0x11; //address
	TxData[1] = 0x80; //value
 cmd=0x11 ;
	ret=SPI_Read(cmd,1,10);
	HAL_SPI_Transmit(&hspi1,&TxData[0],1,0xff);
	HAL_SPI_Transmit(&hspi1,&TxData[1],1,0xff);
 }

Secondly, Getting raw data from the sensor

while(1){
 LSM6DS3_state=LSM6DS3_Read_Status();
 if(LSM6DS3_state&0x01){
	 SensorData[2]=LSM6DS3_ReadXLData(0);
 SensorData[3]=LSM6DS3_ReadXLData(1);
	 SensorData[4]=LSM6DS3_ReadXLData(2);
	 SensorData[5]=LSM6DS3_ReadXLData(3);
	 SensorData[6]=LSM6DS3_ReadXLData(4);
	 SensorData[7]=LSM6DS3_ReadXLData(5);
	 SnsorData[8]=LSM6DS3_ReadGData(0);
	 SensorData[9]=LSM6DS3_ReadGData(1);
	 SensorData[10]=LSM6DS3_ReadGData(2);
	 SensorData[11]=LSM6DS3_ReadGData(3);
	 SensorData[12]=LSM6DS3_ReadGData(4);
	 SensorData[13]=LSM6DS3_ReadGData(5);
 }
}

    This topic has been closed for replies.