I am working on a project where I am integrating BME688 ,CAN, LoRa, SD card, ePaper display and WiFi module. I am using the board Heltec LoRa V2. And I have found this pin diagram. What I don't understand is why did they use different pins for SPI (with LoRa) instead of the predefined ones. Based on the ESP32 data sheet the 2 SPI pins that are available are assigned to these pins:
ESP32 HSPI & VSPI
So my question is whats the benefit of changing the SPI pins (and how is that even possible)? While reading the official documentation from espressif it mentions something about GPIO matrix and IOMUX . Where it states the following
Most peripheral signals in ESP32 can connect directly to a specific GPIO, which is called its IOMUX pin. When a peripheral signal is routed to a pin other than its IOMUX pin, ESP32 uses the less direct GPIO matrix to make this connection.
If the driver is configured with all SPI signals set to their specific IOMUX pins (or left unconnected), it will bypass the GPIO matrix. If any SPI signal is configured to a pin other than its IOMUx pin, the driver will automatically route all the signals via the GPIO Matrix. The GPIO matrix samples all signals at 80MHz and sends them between the GPIO and the peripheral.
When the GPIO matrix is used, signals faster than 40MHz cannot propagate and the setup time of MISO is more easily violated, since the input delay of MISO signal is increased. The maximum clock frequency with GPIO Matrix is 40MHz or less, whereas using all IOMUX pins allows 80MHz.
To me this is something new, I never heard about it. If somebody can explain whats going on and knows the reason behind this pin-choice, I would appreciate it. Additionally, can somebody help me define the pins for the free SPI (since one is being used by the LoRa module). I want to drop the oled screen that comes with the module and use an ePaper display instead.