0
\$\begingroup\$

I have a brand new acceleration/giro sensor evaluation board which I want to interface with ESP32 via SPI bus. After spending few days trying to make it work, I have discovered that sensors SS(CSB) and MISO pins are permanently HIGH (3.3V). In my code I'm implementing the required power up sequence described in the datasheet on page 23. But Chip Select and MISO of the sensor stay always HIGH, even when it is only connected to DVDD and GND.

I have contacted the technical support. But I wonder maybe there is something I'm not aware of. What could cause such an issue?

Datasheet of Murata SCC2230 sensor

Datasheet of evaluation board

\$\endgroup\$
  • 2
    \$\begingroup\$ As several have explained, it's up to your processor to drive the /SS or /CS or whatever line low. Try disconnecting the chip and look only at the processor output. A cheap CY76C68013A logic analyzer with sigrok can help you do this, if you can drastically lower the SPI clock speed you might even be able to use a little piezo disc to hear if it gets driven by itself, or use your computer's soundcard as a crude, slow A/C-coupled scope. Sometimes instead of an "automatic" /SS driven by the SPI engine you use a GPIO and drive it yourself in software before and after the SPI operations. \$\endgroup\$ – Chris Stratton Aug 17 at 17:12
  • \$\begingroup\$ @ChrisStratton I have already ordered LA1010. Thanks for the advice. I am going to check everything from the ground up. \$\endgroup\$ – stardust Aug 17 at 19:53
1
\$\begingroup\$

The SS and MISO lines are idle HIGH, a pullup is keeping the voltage at 3.3 V. Only when there is data transmission these lines are pulled down to GND by the devices (SS by the Master, MISO by the slave).

\$\endgroup\$
  • 2
    \$\begingroup\$ A logic analyzer or oscilloscope (or stepping through instructions one at a time if possible) are required to see these signals change state. \$\endgroup\$ – rdtsc Aug 17 at 13:50
  • \$\begingroup\$ That is good to know. But strange enough, MISO is permanently high. Unfortunately I do not have a logic analyzer yet. \$\endgroup\$ – stardust Aug 17 at 15:02
  • 1
    \$\begingroup\$ @stardust, how do you know it's permanently high if you don't have an instrument that can detect it going low for a short period of time? \$\endgroup\$ – The Photon Aug 17 at 17:44
  • \$\begingroup\$ I was receiving only 0xFF no matter what I did. Then checked it with multimeter. Of course it is not the right way, but as I receive only 0xFF it has to be bulled always high. \$\endgroup\$ – stardust Aug 17 at 19:41
1
\$\begingroup\$

I assume with "SS" pin you mean the signal connected to the CSB pin of the sensor.

(I did a quick scan of the document provided and I could not immediately spot an SS pin.)

The SS/CSB pin is an input and your micro-controller's SPI interface must set it low in order to access the device. If it does not go low that is not an error of the sensor. You should sort out your micro-controller SPI interface.

The MISO pin will only be active if the SS pins goes low. Thus until you have sorted out the above problem the MISO pins should be tri-state.

As to them being always high: there may be a pull-up but, in contrast to I2C interface, the SPI interface normally does not use pull-up resistors.


ESP32 is not able to set it low.

Where did you get that from? I am struggling to find a full datasheet for the ESP32 to look up the details but what I did find is a summary of the ESP 32 where it says:
"ESP32 features three SPIs (SPI, HSPI and VSPI) in slave and master modes"

The sensor is an SPI slave device. The only way to communicate with it, is using the ESP32 in SPI master mode. An SPI master must drive the chips select (or slave select) low in order to communicate with the chip.

Again: If your SS does not go low that you should check what is wrong on the ESP32 side. Maybe something is set wrong with pin mode or pin multiplexing or GPIO settings or with using the SPI in master and not in slave mode...

I know these things are hard. I once took two days to find out how to configure the GPIO pins for a UART2 on an Atmel chip.

\$\endgroup\$
  • \$\begingroup\$ SS because we know it is slave select of the sensor. CSB makes less sense. ESP32 is not able to set it low. Thats why I am asking. \$\endgroup\$ – stardust Aug 17 at 14:58
  • 1
    \$\begingroup\$ @stardust, CSB might make less sense, but if it's what the pin is called in the sensor's documentation, it will be a lot easier for us to figure out what you mean if you just call it that. (Or provide a schematic showing a wire named SS connected to the pin named CSB) \$\endgroup\$ – The Photon Aug 17 at 17:41
  • 2
    \$\begingroup\$ @stardust, by the way, "CSB" stands for "chip select (bar)" aka \$\overline{CS}\$, where the "bar" over a signal name is used to indicate active low logic. \$\endgroup\$ – The Photon Aug 17 at 17:42
  • \$\begingroup\$ Sorry about that. I did not know it. \$\endgroup\$ – stardust Aug 17 at 19:45

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.