fix ade7758
This commit is contained in:
10
components/spi_bus_manager/CMakeLists.txt
Executable file
10
components/spi_bus_manager/CMakeLists.txt
Executable file
@@ -0,0 +1,10 @@
|
||||
set(srcs
|
||||
"src/spi_bus_manager.c"
|
||||
)
|
||||
|
||||
idf_component_register(
|
||||
SRCS ${srcs}
|
||||
INCLUDE_DIRS include
|
||||
PRIV_REQUIRES driver esp_timer
|
||||
REQUIRES config
|
||||
)
|
||||
20
components/spi_bus_manager/include/spi_bus_manager.h
Executable file
20
components/spi_bus_manager/include/spi_bus_manager.h
Executable file
@@ -0,0 +1,20 @@
|
||||
#ifndef SPI_BUS_MANAGER_H_
|
||||
#define SPI_BUS_MANAGER_H_
|
||||
|
||||
#include "driver/spi_master.h"
|
||||
#include "esp_err.h"
|
||||
#include <stdbool.h>
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
esp_err_t spi_bus_manager_init(void);
|
||||
spi_host_device_t spi_bus_manager_get_host(void);
|
||||
bool spi_bus_manager_is_initialized(void);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif // SPI_BUS_MANAGER_H_
|
||||
48
components/spi_bus_manager/src/spi_bus_manager.c
Executable file
48
components/spi_bus_manager/src/spi_bus_manager.c
Executable file
@@ -0,0 +1,48 @@
|
||||
#include "spi_bus_manager.h"
|
||||
#include "esp_log.h"
|
||||
#include "esp_err.h"
|
||||
|
||||
#define TAG "spi_bus_mgr"
|
||||
|
||||
#define SHARED_SPI_HOST SPI2_HOST
|
||||
|
||||
// Pinos padrão (podem ser futuramente configuráveis)
|
||||
#define PIN_NUM_MOSI 23
|
||||
#define PIN_NUM_MISO 19
|
||||
#define PIN_NUM_CLK 18
|
||||
|
||||
static bool initialized = false;
|
||||
|
||||
esp_err_t spi_bus_manager_init(void) {
|
||||
if (initialized) {
|
||||
ESP_LOGW(TAG, "SPI bus already initialized on host %d", SHARED_SPI_HOST);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
spi_bus_config_t buscfg = {
|
||||
.mosi_io_num = PIN_NUM_MOSI,
|
||||
.miso_io_num = PIN_NUM_MISO,
|
||||
.sclk_io_num = PIN_NUM_CLK,
|
||||
.quadwp_io_num = -1,
|
||||
.quadhd_io_num = -1,
|
||||
.max_transfer_sz = 64, // Ajustável conforme necessidade
|
||||
};
|
||||
|
||||
esp_err_t ret = spi_bus_initialize(SHARED_SPI_HOST, &buscfg, SPI_DMA_CH_AUTO);
|
||||
if (ret != ESP_OK) {
|
||||
ESP_LOGE(TAG, "Failed to initialize SPI bus: %s", esp_err_to_name(ret));
|
||||
return ret;
|
||||
}
|
||||
|
||||
initialized = true;
|
||||
ESP_LOGI(TAG, "SPI bus initialized on host %d", SHARED_SPI_HOST);
|
||||
return ESP_OK;
|
||||
}
|
||||
|
||||
spi_host_device_t spi_bus_manager_get_host(void) {
|
||||
return SHARED_SPI_HOST;
|
||||
}
|
||||
|
||||
bool spi_bus_manager_is_initialized(void) {
|
||||
return initialized;
|
||||
}
|
||||
Reference in New Issue
Block a user