SPI and I2C on the same Pins

ManuSisko
Posts: 2
Joined: Sat Jun 29, 2019 7:34 pm

SPI and I2C on the same Pins

Postby ManuSisko » Sat Jun 29, 2019 7:49 pm

Hello. I've designed a PCB board with several sensors that can handle both SPI and I2C. When selecting the sensors I found that all of them could use SPI (SD Card, kinetic sensor, pressure sensor), so I routed my board accordingly. Now, I've found out the the pressure sensor that I selected only comes in I2C operation (despite the datasheet suggesting otherwise). So I have two sensors and an SD card on the same bus: Same SCLK, independent CS's, with MOS and SDA being the same wire.

I coded an I2C handle class and an SPI handle class, but I understand both Wire.h and SPIClass can't work on the same pins at the same time. So my intention is to switch between them during execution, alternating between SPI and I2C as needed.
My question is: Should I use pointers for Wire and SPIClass, construct them and destruct them periodically? Or is it a better solution?
I've noticed both objects have "Begin()" and "End()" instructions, can I use these two in order to alternate between the two?

Also, I will need to implement ULP operation in the future with I2C functionality. I know the UDP is programmed with assembly, but: Will these two handlers mingle with the ULP i2c in some way? Does the device eliminate the handlers as I got into deep_sleep, or do they remain configured/in begin() or end() condition?

Your help will be thanked dearly

Who is online

Users browsing this forum: No registered users and 37 guests