I'm using the ADXL345 accelerometer with i2c. I've connected one to my PI and get good data. I use 3.3V, SDA, SDL and Ground. My project needs two ADXL345 units. So I hooked up a second. Both come off the same 4 pins on the PI (Pins 1,3,5,9).
Of course, this "works" but the data are mixed up, I cab't read each ADXL345 independently. The default address is 0x53 when SDO is low (https://wiki.analog.com/resources/tools-software/linux-drivers/input-misc/adxl345). As you can see, I have hooked up nothing to SDO on either unit, so both units are low and report address 0x53. I can verify this with "sudo i2cdetect -y 0".
Per the wiki entry referenced above, if SDO is high on one unit, it should report address 0x1D. Then I will have two units that are uniquely addressable.
I thought that all I would need to do is apply 3.3V to the SDO pin to keep it high. For my second unit I added one wire from 3.3v to the SDO pin. After making this connection, the PI would not boot. No lights, nothing. Pulling this one wire off, and the PI booted (although with both devices back to address 0x53 as expected).
Can anyone point out what I am doing wrong? Since applying 3.3v to the SDO pin doesn't seem to be the way to set SDO high, how should I do it? Your advice appreciated. I'm new to this.
The board is initially wired for I2C operation. But can easily be converted to work with SPI - by removing a few resistors. Also includes a 3.3V regulator on-board.
Take that into account when looking at my answer below.