init
This commit is contained in:
81
main/lipton/lepton_system.cpp
Normal file
81
main/lipton/lepton_system.cpp
Normal file
@@ -0,0 +1,81 @@
|
||||
#include "esp_system.h"
|
||||
#include <stdlib.h>
|
||||
#include "driver/spi_master.h"
|
||||
#include "driver/spi_slave.h"
|
||||
#include "lepton_system.h"
|
||||
#include "lepton_utilities.h"
|
||||
#include "i2c.h"
|
||||
#include "vospi.h"
|
||||
#include <cstring>
|
||||
#include <Arduino.h>
|
||||
|
||||
|
||||
// lepton image and telem buffer
|
||||
lep_buffer_t rsp_lep_buffer;
|
||||
|
||||
/**
|
||||
* Initialize the ESP32 GPIO and internal peripherals
|
||||
*/
|
||||
bool lepton_io_init()
|
||||
{
|
||||
esp_err_t ret;
|
||||
spi_bus_config_t spi_buscfg;
|
||||
|
||||
printf("[LEP SYS] Lepton I/O Initialization\n");
|
||||
|
||||
// Attempt to initialize the I2C Master
|
||||
ret = i2c_master_init(I2C_MASTER_SCL_PIN, I2C_MASTER_SDA_PIN);
|
||||
if (ret != ESP_OK) {
|
||||
printf("[LEP SYS] Error: I2C Master initialization failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
// Attempt to initialize the SPI Master used by the lep_task
|
||||
memset(&spi_buscfg, 0, sizeof(spi_bus_config_t));
|
||||
spi_buscfg.miso_io_num=LEP_MISO_PIN;
|
||||
spi_buscfg.mosi_io_num=-1;
|
||||
spi_buscfg.sclk_io_num=LEP_SCK_PIN;
|
||||
spi_buscfg.max_transfer_sz=LEP_PKT_LENGTH;
|
||||
spi_buscfg.quadwp_io_num=-1;
|
||||
spi_buscfg.quadhd_io_num=-1;
|
||||
|
||||
if (spi_bus_initialize(LEP_SPI_HOST, &spi_buscfg, LEP_DMA_NUM) != ESP_OK) {
|
||||
printf("[LEP SYS] Error: Lepton SPI initialization failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
// initialize GPIO pins
|
||||
pinMode(LEP_VSYNC_PIN, INPUT);
|
||||
#ifdef LEP_RESET_PIN
|
||||
pinMode(LEP_RESET_PIN, OUTPUT);
|
||||
digitalWrite(LEP_RESET_PIN, LEP_RESET_ON);
|
||||
delay(10);
|
||||
digitalWrite(LEP_RESET_PIN, LEP_RESET_OFF);
|
||||
#endif
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Allocate lepton buffers on heap
|
||||
*/
|
||||
bool lepton_buffer_init()
|
||||
{
|
||||
printf("[LEP SYS] Buffer Allocation\n");
|
||||
|
||||
// Allocate the LEP/RSP task lepton frame and telemetry ping-pong buffers
|
||||
rsp_lep_buffer.lep_bufferP = (uint8_t*)malloc(LEP_NUM_PIXELS*sizeof(uint8_t));
|
||||
if (rsp_lep_buffer.lep_bufferP == NULL) {
|
||||
printf("[LEP SYS] Error: malloc RSP lepton shared image buffer failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
rsp_lep_buffer.lep_telemP = (uint16_t*)malloc(LEP_TEL_WORDS*sizeof(uint16_t));
|
||||
if (rsp_lep_buffer.lep_telemP == NULL) {
|
||||
printf("[LEP SYS] Error: malloc RSP lepton shared telemetry buffer failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
Reference in New Issue
Block a user