mirror of
https://github.com/openmv/openmv.git
synced 2025-11-04 14:49:50 +08:00
Reorganize the ISC SPI related handles/macros. (#1360)
* Reorganize the ISC SPI related handles/macros. The SPI bus on image sensor connector is not design for Lepton sensor only. Thereforce, change the related functions and macros name from LEPTON_SPI_* to ISC_SPI_* and move interrupt callback to sensor.c.
This commit is contained in:
parent
ac794eb43d
commit
5f4250e74e
@ -322,39 +322,39 @@
|
||||
|
||||
#define SOFT_I2C_SPIN_DELAY 64
|
||||
|
||||
#define LEPTON_SPI (SPI3)
|
||||
#define ISC_SPI (SPI3)
|
||||
// SPI1/2/3 clock source is PLL3 (160MHz/8 == 20MHz) - Minimum (164*240*8*27 = 8,501,760Hz)
|
||||
#define LEPTON_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_8)
|
||||
#define ISC_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_8)
|
||||
|
||||
#define LEPTON_SPI_IRQn (SPI3_IRQn)
|
||||
#define LEPTON_SPI_IRQHandler (SPI3_IRQHandler)
|
||||
#define ISC_SPI_IRQn (SPI3_IRQn)
|
||||
#define ISC_SPI_IRQHandler (SPI3_IRQHandler)
|
||||
|
||||
#define LEPTON_SPI_DMA_IRQn (DMA1_Stream0_IRQn)
|
||||
#define LEPTON_SPI_DMA_STREAM (DMA1_Stream0)
|
||||
#define ISC_SPI_DMA_IRQn (DMA1_Stream0_IRQn)
|
||||
#define ISC_SPI_DMA_STREAM (DMA1_Stream0)
|
||||
|
||||
#define LEPTON_SPI_DMA_REQUEST (DMA_REQUEST_SPI3_RX)
|
||||
#define LEPTON_SPI_DMA_IRQHandler (DMA1_Stream0_IRQHandler)
|
||||
#define ISC_SPI_DMA_REQUEST (DMA_REQUEST_SPI3_RX)
|
||||
#define ISC_SPI_DMA_IRQHandler (DMA1_Stream0_IRQHandler)
|
||||
|
||||
#define LEPTON_SPI_RESET() __HAL_RCC_SPI3_FORCE_RESET()
|
||||
#define LEPTON_SPI_RELEASE() __HAL_RCC_SPI3_RELEASE_RESET()
|
||||
#define ISC_SPI_RESET() __HAL_RCC_SPI3_FORCE_RESET()
|
||||
#define ISC_SPI_RELEASE() __HAL_RCC_SPI3_RELEASE_RESET()
|
||||
|
||||
#define LEPTON_SPI_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
|
||||
#define LEPTON_SPI_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
|
||||
#define ISC_SPI_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
|
||||
#define ISC_SPI_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
|
||||
|
||||
#define LEPTON_SPI_SCLK_AF (GPIO_AF6_SPI3)
|
||||
#define LEPTON_SPI_MISO_AF (GPIO_AF6_SPI3)
|
||||
#define LEPTON_SPI_MOSI_AF (GPIO_AF7_SPI3)
|
||||
#define LEPTON_SPI_SSEL_AF (GPIO_AF6_SPI3)
|
||||
#define ISC_SPI_SCLK_AF (GPIO_AF6_SPI3)
|
||||
#define ISC_SPI_MISO_AF (GPIO_AF6_SPI3)
|
||||
#define ISC_SPI_MOSI_AF (GPIO_AF7_SPI3)
|
||||
#define ISC_SPI_SSEL_AF (GPIO_AF6_SPI3)
|
||||
|
||||
#define LEPTON_SPI_SCLK_PIN (GPIO_PIN_3)
|
||||
#define LEPTON_SPI_MISO_PIN (GPIO_PIN_4)
|
||||
#define LEPTON_SPI_MOSI_PIN (GPIO_PIN_5)
|
||||
#define LEPTON_SPI_SSEL_PIN (GPIO_PIN_15)
|
||||
#define ISC_SPI_SCLK_PIN (GPIO_PIN_3)
|
||||
#define ISC_SPI_MISO_PIN (GPIO_PIN_4)
|
||||
#define ISC_SPI_MOSI_PIN (GPIO_PIN_5)
|
||||
#define ISC_SPI_SSEL_PIN (GPIO_PIN_15)
|
||||
|
||||
#define LEPTON_SPI_SCLK_PORT (GPIOB)
|
||||
#define LEPTON_SPI_MISO_PORT (GPIOB)
|
||||
#define LEPTON_SPI_MOSI_PORT (GPIOB)
|
||||
#define LEPTON_SPI_SSEL_PORT (GPIOA)
|
||||
#define ISC_SPI_SCLK_PORT (GPIOB)
|
||||
#define ISC_SPI_MISO_PORT (GPIOB)
|
||||
#define ISC_SPI_MOSI_PORT (GPIOB)
|
||||
#define ISC_SPI_SSEL_PORT (GPIOA)
|
||||
|
||||
// The IMU sensor is on the same SPI bus pins as the camera module interface
|
||||
// SPI bus. While the buses overlap both devices will never be in-use at once.
|
||||
|
||||
@ -330,39 +330,39 @@
|
||||
|
||||
#define SOFT_I2C_SPIN_DELAY 64
|
||||
|
||||
#define LEPTON_SPI (SPI3)
|
||||
#define ISC_SPI (SPI3)
|
||||
// SPI1/2/3 clock source is PLL3 (160MHz/8 == 20MHz) - Minimum (164*240*8*27 = 8,501,760Hz)
|
||||
#define LEPTON_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_8)
|
||||
#define ISC_SPI_PRESCALER (SPI_BAUDRATEPRESCALER_8)
|
||||
|
||||
#define LEPTON_SPI_IRQn (SPI3_IRQn)
|
||||
#define LEPTON_SPI_IRQHandler (SPI3_IRQHandler)
|
||||
#define ISC_SPI_IRQn (SPI3_IRQn)
|
||||
#define ISC_SPI_IRQHandler (SPI3_IRQHandler)
|
||||
|
||||
#define LEPTON_SPI_DMA_IRQn (DMA1_Stream0_IRQn)
|
||||
#define LEPTON_SPI_DMA_STREAM (DMA1_Stream0)
|
||||
#define ISC_SPI_DMA_IRQn (DMA1_Stream0_IRQn)
|
||||
#define ISC_SPI_DMA_STREAM (DMA1_Stream0)
|
||||
|
||||
#define LEPTON_SPI_DMA_REQUEST (DMA_REQUEST_SPI3_RX)
|
||||
#define LEPTON_SPI_DMA_IRQHandler (DMA1_Stream0_IRQHandler)
|
||||
#define ISC_SPI_DMA_REQUEST (DMA_REQUEST_SPI3_RX)
|
||||
#define ISC_SPI_DMA_IRQHandler (DMA1_Stream0_IRQHandler)
|
||||
|
||||
#define LEPTON_SPI_RESET() __HAL_RCC_SPI3_FORCE_RESET()
|
||||
#define LEPTON_SPI_RELEASE() __HAL_RCC_SPI3_RELEASE_RESET()
|
||||
#define ISC_SPI_RESET() __HAL_RCC_SPI3_FORCE_RESET()
|
||||
#define ISC_SPI_RELEASE() __HAL_RCC_SPI3_RELEASE_RESET()
|
||||
|
||||
#define LEPTON_SPI_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
|
||||
#define LEPTON_SPI_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
|
||||
#define ISC_SPI_CLK_ENABLE() __HAL_RCC_SPI3_CLK_ENABLE()
|
||||
#define ISC_SPI_CLK_DISABLE() __HAL_RCC_SPI3_CLK_DISABLE()
|
||||
|
||||
#define LEPTON_SPI_SCLK_AF (GPIO_AF6_SPI3)
|
||||
#define LEPTON_SPI_MISO_AF (GPIO_AF6_SPI3)
|
||||
#define LEPTON_SPI_MOSI_AF (GPIO_AF7_SPI3)
|
||||
#define LEPTON_SPI_SSEL_AF (GPIO_AF6_SPI3)
|
||||
#define ISC_SPI_SCLK_AF (GPIO_AF6_SPI3)
|
||||
#define ISC_SPI_MISO_AF (GPIO_AF6_SPI3)
|
||||
#define ISC_SPI_MOSI_AF (GPIO_AF7_SPI3)
|
||||
#define ISC_SPI_SSEL_AF (GPIO_AF6_SPI3)
|
||||
|
||||
#define LEPTON_SPI_SCLK_PIN (GPIO_PIN_3)
|
||||
#define LEPTON_SPI_MISO_PIN (GPIO_PIN_4)
|
||||
#define LEPTON_SPI_MOSI_PIN (GPIO_PIN_5)
|
||||
#define LEPTON_SPI_SSEL_PIN (GPIO_PIN_15)
|
||||
#define ISC_SPI_SCLK_PIN (GPIO_PIN_3)
|
||||
#define ISC_SPI_MISO_PIN (GPIO_PIN_4)
|
||||
#define ISC_SPI_MOSI_PIN (GPIO_PIN_5)
|
||||
#define ISC_SPI_SSEL_PIN (GPIO_PIN_15)
|
||||
|
||||
#define LEPTON_SPI_SCLK_PORT (GPIOB)
|
||||
#define LEPTON_SPI_MISO_PORT (GPIOB)
|
||||
#define LEPTON_SPI_MOSI_PORT (GPIOB)
|
||||
#define LEPTON_SPI_SSEL_PORT (GPIOA)
|
||||
#define ISC_SPI_SCLK_PORT (GPIOB)
|
||||
#define ISC_SPI_MISO_PORT (GPIOB)
|
||||
#define ISC_SPI_MOSI_PORT (GPIOB)
|
||||
#define ISC_SPI_SSEL_PORT (GPIOA)
|
||||
|
||||
// QSPI flash configuration for the bootloader.
|
||||
#define QSPIF_SIZE_BITS (25) // 2**25 == 32MBytes.
|
||||
|
||||
@ -50,6 +50,11 @@ static DCMI_HandleTypeDef DCMIHandle = {.Instance = DCMI};
|
||||
static MDMA_HandleTypeDef DCMI_MDMA_Handle0 = {.Instance = MDMA_Channel0};
|
||||
static MDMA_HandleTypeDef DCMI_MDMA_Handle1 = {.Instance = MDMA_Channel1};
|
||||
#endif
|
||||
// SPI on image sensor connector.
|
||||
#ifdef ISC_SPI
|
||||
SPI_HandleTypeDef ISC_SPIHandle = {.Instance = ISC_SPI};
|
||||
#endif // ISC_SPI
|
||||
|
||||
static bool first_line = false;
|
||||
static bool drop_frame = false;
|
||||
|
||||
@ -108,6 +113,18 @@ void DMA2_Stream1_IRQHandler(void) {
|
||||
HAL_DMA_IRQHandler(DCMIHandle.DMA_Handle);
|
||||
}
|
||||
|
||||
#ifdef ISC_SPI
|
||||
void ISC_SPI_IRQHandler(void)
|
||||
{
|
||||
HAL_SPI_IRQHandler(&ISC_SPIHandle);
|
||||
}
|
||||
|
||||
void ISC_SPI_DMA_IRQHandler(void)
|
||||
{
|
||||
HAL_DMA_IRQHandler(ISC_SPIHandle.hdmarx);
|
||||
}
|
||||
#endif // ISC_SPI
|
||||
|
||||
static int extclk_config(int frequency)
|
||||
{
|
||||
#if (OMV_XCLK_SOURCE == OMV_XCLK_TIM)
|
||||
|
||||
@ -418,30 +418,30 @@ void HAL_SPI_MspInit(SPI_HandleTypeDef *hspi)
|
||||
}
|
||||
#endif
|
||||
|
||||
#if defined(LEPTON_SPI)
|
||||
if (hspi->Instance == LEPTON_SPI) {
|
||||
LEPTON_SPI_CLK_ENABLE();
|
||||
#if defined(ISC_SPI)
|
||||
if (hspi->Instance == ISC_SPI) {
|
||||
ISC_SPI_CLK_ENABLE();
|
||||
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
GPIO_InitStructure.Pull = GPIO_PULLUP;
|
||||
GPIO_InitStructure.Mode = GPIO_MODE_AF_PP;
|
||||
GPIO_InitStructure.Speed = GPIO_SPEED_FREQ_LOW;
|
||||
|
||||
GPIO_InitStructure.Alternate = LEPTON_SPI_SCLK_AF;
|
||||
GPIO_InitStructure.Pin = LEPTON_SPI_SCLK_PIN;
|
||||
HAL_GPIO_Init(LEPTON_SPI_SCLK_PORT, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.Alternate = ISC_SPI_SCLK_AF;
|
||||
GPIO_InitStructure.Pin = ISC_SPI_SCLK_PIN;
|
||||
HAL_GPIO_Init(ISC_SPI_SCLK_PORT, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.Alternate = LEPTON_SPI_MISO_AF;
|
||||
GPIO_InitStructure.Pin = LEPTON_SPI_MISO_PIN;
|
||||
HAL_GPIO_Init(LEPTON_SPI_MISO_PORT, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.Alternate = ISC_SPI_MISO_AF;
|
||||
GPIO_InitStructure.Pin = ISC_SPI_MISO_PIN;
|
||||
HAL_GPIO_Init(ISC_SPI_MISO_PORT, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.Alternate = LEPTON_SPI_MOSI_AF;
|
||||
GPIO_InitStructure.Pin = LEPTON_SPI_MOSI_PIN;
|
||||
HAL_GPIO_Init(LEPTON_SPI_MOSI_PORT, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.Alternate = ISC_SPI_MOSI_AF;
|
||||
GPIO_InitStructure.Pin = ISC_SPI_MOSI_PIN;
|
||||
HAL_GPIO_Init(ISC_SPI_MOSI_PORT, &GPIO_InitStructure);
|
||||
|
||||
GPIO_InitStructure.Alternate = LEPTON_SPI_SSEL_AF;
|
||||
GPIO_InitStructure.Pin = LEPTON_SPI_SSEL_PIN;
|
||||
HAL_GPIO_Init(LEPTON_SPI_SSEL_PORT, &GPIO_InitStructure);
|
||||
GPIO_InitStructure.Alternate = ISC_SPI_SSEL_AF;
|
||||
GPIO_InitStructure.Pin = ISC_SPI_SSEL_PIN;
|
||||
HAL_GPIO_Init(ISC_SPI_SSEL_PORT, &GPIO_InitStructure);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
@ -52,7 +52,7 @@ static bool measurement_mode = false;
|
||||
static float min_temp = DEFAULT_MIN_TEMP;
|
||||
static float max_temp = DEFAULT_MAX_TEMP;
|
||||
|
||||
static SPI_HandleTypeDef SPIHandle;
|
||||
extern SPI_HandleTypeDef ISC_SPIHandle;
|
||||
static DMA_HandleTypeDef DMAHandle;
|
||||
LEP_CAMERA_PORT_DESC_T LEPHandle;
|
||||
extern uint8_t _line_buf[];
|
||||
@ -66,22 +66,12 @@ static volatile uint32_t vospi_seg = 1;
|
||||
static uint32_t vospi_packets = 60;
|
||||
static int lepton_reset(sensor_t *sensor, bool measurement_mode);
|
||||
|
||||
void LEPTON_SPI_IRQHandler(void)
|
||||
{
|
||||
HAL_SPI_IRQHandler(&SPIHandle);
|
||||
}
|
||||
|
||||
void LEPTON_SPI_DMA_IRQHandler(void)
|
||||
{
|
||||
HAL_DMA_IRQHandler(SPIHandle.hdmarx);
|
||||
}
|
||||
|
||||
static void lepton_sync()
|
||||
{
|
||||
HAL_SPI_Abort(&SPIHandle);
|
||||
HAL_SPI_Abort(&ISC_SPIHandle);
|
||||
|
||||
// Disable DMA IRQ
|
||||
HAL_NVIC_DisableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
HAL_NVIC_DisableIRQ(ISC_SPI_DMA_IRQn);
|
||||
|
||||
debug_printf("resync...\n");
|
||||
mp_hal_delay_ms(200);
|
||||
@ -90,8 +80,8 @@ static void lepton_sync()
|
||||
vospi_pid = VOSPI_FIRST_PACKET;
|
||||
vospi_seg = VOSPI_FIRST_SEGMENT;
|
||||
|
||||
HAL_NVIC_EnableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
HAL_SPI_Receive_DMA(&SPIHandle, vospi_packet, VOSPI_PACKET_SIZE);
|
||||
HAL_NVIC_EnableIRQ(ISC_SPI_DMA_IRQn);
|
||||
HAL_SPI_Receive_DMA(&ISC_SPIHandle, vospi_packet, VOSPI_PACKET_SIZE);
|
||||
}
|
||||
|
||||
static uint16_t lepton_calc_crc(uint8_t *buf)
|
||||
@ -510,10 +500,10 @@ static int snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
|
||||
// If we need to re-sync we do it. Otherwise, after we finish pulling data
|
||||
// in we exit and let the SPI bus keep running. Then on the next call to
|
||||
// snapshot we read in more data and pull in the next frame.
|
||||
HAL_NVIC_DisableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
HAL_NVIC_DisableIRQ(ISC_SPI_DMA_IRQn);
|
||||
vospi_pid = VOSPI_FIRST_PACKET;
|
||||
vospi_seg = VOSPI_FIRST_SEGMENT;
|
||||
HAL_NVIC_EnableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
HAL_NVIC_EnableIRQ(ISC_SPI_DMA_IRQn);
|
||||
|
||||
// Snapshot start tick
|
||||
mp_uint_t tick_start = mp_hal_ticks_ms();
|
||||
@ -546,10 +536,10 @@ static int snapshot(sensor_t *sensor, image_t *image, uint32_t flags)
|
||||
}
|
||||
|
||||
// Reset the VOSPI interface again.
|
||||
HAL_NVIC_DisableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
HAL_NVIC_DisableIRQ(ISC_SPI_DMA_IRQn);
|
||||
vospi_pid = VOSPI_FIRST_PACKET;
|
||||
vospi_seg = VOSPI_FIRST_SEGMENT;
|
||||
HAL_NVIC_EnableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
HAL_NVIC_EnableIRQ(ISC_SPI_DMA_IRQn);
|
||||
}
|
||||
} while (vospi_pid < vospi_packets); // only checking one volatile var so atomic.
|
||||
|
||||
@ -675,8 +665,8 @@ int lepton_init(sensor_t *sensor)
|
||||
SENSOR_HW_FLAGS_SET(sensor, SENSOR_HW_FLAGS_JPEGE, 0);
|
||||
|
||||
// Configure the DMA handler for Transmission process
|
||||
DMAHandle.Instance = LEPTON_SPI_DMA_STREAM;
|
||||
DMAHandle.Init.Request = LEPTON_SPI_DMA_REQUEST;
|
||||
DMAHandle.Instance = ISC_SPI_DMA_STREAM;
|
||||
DMAHandle.Init.Request = ISC_SPI_DMA_REQUEST;
|
||||
DMAHandle.Init.Mode = DMA_CIRCULAR;
|
||||
DMAHandle.Init.Priority = DMA_PRIORITY_HIGH;
|
||||
DMAHandle.Init.Direction = DMA_PERIPH_TO_MEMORY;
|
||||
@ -694,8 +684,8 @@ int lepton_init(sensor_t *sensor)
|
||||
DMAHandle.Init.PeriphInc = DMA_PINC_DISABLE;
|
||||
|
||||
// NVIC configuration for DMA transfer complete interrupt
|
||||
NVIC_SetPriority(LEPTON_SPI_DMA_IRQn, IRQ_PRI_DMA21);
|
||||
HAL_NVIC_DisableIRQ(LEPTON_SPI_DMA_IRQn);
|
||||
NVIC_SetPriority(ISC_SPI_DMA_IRQn, IRQ_PRI_DMA21);
|
||||
HAL_NVIC_DisableIRQ(ISC_SPI_DMA_IRQn);
|
||||
|
||||
HAL_DMA_DeInit(&DMAHandle);
|
||||
if (HAL_DMA_Init(&DMAHandle) != HAL_OK) {
|
||||
@ -703,36 +693,36 @@ int lepton_init(sensor_t *sensor)
|
||||
return -1;
|
||||
}
|
||||
|
||||
memset(&SPIHandle, 0, sizeof(SPIHandle));
|
||||
SPIHandle.Instance = LEPTON_SPI;
|
||||
SPIHandle.Init.NSS = SPI_NSS_HARD_OUTPUT;
|
||||
SPIHandle.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
|
||||
SPIHandle.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
|
||||
SPIHandle.Init.Mode = SPI_MODE_MASTER;
|
||||
SPIHandle.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||
SPIHandle.Init.Direction = SPI_DIRECTION_2LINES_RXONLY;
|
||||
SPIHandle.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||
SPIHandle.Init.FifoThreshold = SPI_FIFO_THRESHOLD_04DATA;
|
||||
SPIHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||
SPIHandle.Init.CLKPhase = SPI_PHASE_2EDGE;
|
||||
SPIHandle.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
||||
SPIHandle.Init.BaudRatePrescaler = LEPTON_SPI_PRESCALER;
|
||||
memset(&ISC_SPIHandle, 0, sizeof(ISC_SPIHandle));
|
||||
ISC_SPIHandle.Instance = ISC_SPI;
|
||||
ISC_SPIHandle.Init.NSS = SPI_NSS_HARD_OUTPUT;
|
||||
ISC_SPIHandle.Init.NSSPMode = SPI_NSS_PULSE_DISABLE;
|
||||
ISC_SPIHandle.Init.NSSPolarity = SPI_NSS_POLARITY_LOW;
|
||||
ISC_SPIHandle.Init.Mode = SPI_MODE_MASTER;
|
||||
ISC_SPIHandle.Init.TIMode = SPI_TIMODE_DISABLE;
|
||||
ISC_SPIHandle.Init.Direction = SPI_DIRECTION_2LINES_RXONLY;
|
||||
ISC_SPIHandle.Init.DataSize = SPI_DATASIZE_8BIT;
|
||||
ISC_SPIHandle.Init.FifoThreshold = SPI_FIFO_THRESHOLD_04DATA;
|
||||
ISC_SPIHandle.Init.FirstBit = SPI_FIRSTBIT_MSB;
|
||||
ISC_SPIHandle.Init.CLKPhase = SPI_PHASE_2EDGE;
|
||||
ISC_SPIHandle.Init.CLKPolarity = SPI_POLARITY_HIGH;
|
||||
ISC_SPIHandle.Init.BaudRatePrescaler = ISC_SPI_PRESCALER;
|
||||
// Recommanded setting to avoid glitches
|
||||
SPIHandle.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
|
||||
ISC_SPIHandle.Init.MasterKeepIOState = SPI_MASTER_KEEP_IO_STATE_ENABLE;
|
||||
|
||||
if (HAL_SPI_Init(&SPIHandle) != HAL_OK) {
|
||||
LEPTON_SPI_RESET();
|
||||
LEPTON_SPI_RELEASE();
|
||||
LEPTON_SPI_CLK_DISABLE();
|
||||
if (HAL_SPI_Init(&ISC_SPIHandle) != HAL_OK) {
|
||||
ISC_SPI_RESET();
|
||||
ISC_SPI_RELEASE();
|
||||
ISC_SPI_CLK_DISABLE();
|
||||
return -1;
|
||||
}
|
||||
|
||||
// Associate the initialized DMA handle to the the SPI handle
|
||||
__HAL_LINKDMA(&SPIHandle, hdmarx, DMAHandle);
|
||||
__HAL_LINKDMA(&ISC_SPIHandle, hdmarx, DMAHandle);
|
||||
|
||||
// NVIC configuration for SPI transfer complete interrupt
|
||||
NVIC_SetPriority(LEPTON_SPI_IRQn, IRQ_PRI_DCMI);
|
||||
HAL_NVIC_EnableIRQ(LEPTON_SPI_IRQn);
|
||||
NVIC_SetPriority(ISC_SPI_IRQn, IRQ_PRI_DCMI);
|
||||
HAL_NVIC_EnableIRQ(ISC_SPI_IRQn);
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user