I’ve been having a rough time communicating with my Sparkfun LSM6DS3 IMU. Can’t even get it to send the WHO_AM_I value. No matter what I do, the code below returns 255. I tried another LSM6DS3 chip, but same issue. I2C works for both so the chips are functioning.
The Arduino Due pinout diagram shows +5V next to the SPI MOSI pin. Are the MOSI/MISO +5V pins? My IMU is a 3.3V device. Could this be the problem? Or maybe the code below is wrong? Appreciate your help.
#include <SPI.h>
#define SSX 10
void setup() {
uint8_t result1, result2;
uint8_t target = 0X0F;
Serial.begin(115200);
pinMode(SSX, OUTPUT);
digitalWrite(SSX, HIGH);
SPI.begin(SSX);
SPI.setBitOrder(MSBFIRST);
SPI.setDataMode(SSX, SPI_MODE3);
SPI.setClockDivider(SSX,10); // Due: (pin,divider) where divider is any value from 1 to 255
delay(1000);
digitalWrite(SSX, LOW); // Select chip
result1 = SPI.transfer(SSX, 0x80 | target, SPI_CONTINUE);
result2 = SPI.transfer(SSX, 0x00, SPI_LAST);
digitalWrite(SSX, HIGH); // De-select chip
Serial.println("Who Am I:");
Serial.println(result1);
Serial.println(result2);
}
void loop() {
}