Re shared SPI: I assume you’re using different CS plns for the two devices? I found two devices could co-exist quite happily on the same SPI bus: See this sketch:
/*
* Using SPI on the ESP32-Cam to access the SD card and expand GPIOs
*
* The ESP32-Cam uses most of its GPIOs to manage the onboard camera, RAM and SD-card reader.
* If the SD-card is not required there are a number of free GPIOs however if the SD-card is needed the number of available GPIOs is very limited.
*
* Most SD-cards can be operated in three modes:
* - 4 bit SD mode = uses 6 pins and is supported by the SD_MMC library by default SD_MMC.begin("/sdcard", false)
* - 1 bit SD mode = uses 3 pins and is also supported by the SD_MMC library SD_MMC.begin("/sdcard", true);
* - SPI mode = uses 4 pins and is supported by the SPI and SD libraries but not SD_MMC
*
* In 4-bit SD mode there are no properly free GPIOs
* In 1-bit SD mode there are three free GPIOs (GPIO12, GPIO13, GPIO4)
* In SPI mode there are 2 free GPIOs (GPIO12, GPIO4)
*
* NB GPIO4 is also the flashlight so although it can be used it has unwanted side effects
*
* Under SPI it is possible to connect multiple slave SPI devices to the same SPI master bus.
* Each device then requires a dedicated GPIO to control Chip Select (CS)
* The SD-card reader on the ESP32 is already hardwired for SPI as follows:
This file has been truncated. show original
However, it was only a proof of concept. When I discovered the ESP32S3 had more IO pins and PS RAM I gave up on expanding GPIO on the ESP32Cam. It wasn’t worth the trouble