summaryrefslogtreecommitdiff
path: root/src/drivers/spi.cpp
diff options
context:
space:
mode:
authorjacqueline <me@jacqueline.id.au>2022-11-09 13:33:50 +1100
committerjacqueline <me@jacqueline.id.au>2022-11-09 13:33:50 +1100
commitff30b27f0d042972b4777c43dbdfccb7641be0f2 (patch)
tree1c29eb810d52f4c556026d782947e733805a3d44 /src/drivers/spi.cpp
parente389871d20232632c95fe17b523b672719008de7 (diff)
downloadtangara-fw-ff30b27f0d042972b4777c43dbdfccb7641be0f2.tar.gz
First test cases :)
Diffstat (limited to 'src/drivers/spi.cpp')
-rw-r--r--src/drivers/spi.cpp48
1 files changed, 48 insertions, 0 deletions
diff --git a/src/drivers/spi.cpp b/src/drivers/spi.cpp
new file mode 100644
index 00000000..66c78e8a
--- /dev/null
+++ b/src/drivers/spi.cpp
@@ -0,0 +1,48 @@
+#include "spi.hpp"
+
+#include "driver/sdspi_host.h"
+#include "driver/spi_common.h"
+#include "driver/spi_master.h"
+#include "esp_err.h"
+#include "hal/spi_types.h"
+
+namespace drivers {
+
+static const spi_host_device_t kSpiHost = VSPI_HOST;
+static const gpio_num_t kSpiSdoPin = GPIO_NUM_23;
+static const gpio_num_t kSpiSdiPin = GPIO_NUM_19;
+static const gpio_num_t kSpiSclkPin = GPIO_NUM_18;
+
+esp_err_t init_spi(void) {
+ spi_bus_config_t config = {
+ .mosi_io_num = kSpiSdoPin,
+ .miso_io_num = kSpiSdiPin,
+ .sclk_io_num = kSpiSclkPin,
+ .quadwp_io_num = -1, // SPI_QUADWP_IO,
+ .quadhd_io_num = -1, // SPI_QUADHD_IO,
+
+ // Unused
+ .data4_io_num = -1,
+ .data5_io_num = -1,
+ .data6_io_num = -1,
+ .data7_io_num = -1,
+
+ // Use the DMA default size. The display requires larger buffers, but it
+ // manages its down use of DMA-capable memory.
+ .max_transfer_sz = 128 * 16 * 2, // TODO: hmm
+ .flags = SPICOMMON_BUSFLAG_MASTER | SPICOMMON_BUSFLAG_IOMUX_PINS,
+ .intr_flags = 0,
+ };
+
+ if (esp_err_t err = spi_bus_initialize(kSpiHost, &config, SPI_DMA_CH_AUTO)) {
+ return err;
+ }
+
+ return ESP_OK;
+}
+
+esp_err_t deinit_spi(void) {
+ return spi_bus_free(kSpiHost);
+}
+
+} // namespace drivers