#ifndef _LMCAL_SPI_CFG_H
#define _LMCAL_SPI_CFG_H

//******************************************** Включаемые файлы *********************************************


//******************************************* Локальные константы *******************************************

// Номера SPI в цифровом формате
#define LMCAL_SPI0                   (0U)
#define LMCAL_SPI1                   (1U)
#define LMCAL_SPI2                   (2U)
#define LMCAL_SPI3                   (3U)
#define LMCAL_SPI4                   (4U)
#define LMCAL_SPI5                   (5U)
#define LMCAL_SPI6                   (6U)
#define LMCAL_SPI7                   (7U)
#define LMCAL_SPI8                   (8U)
#define LMCAL_SPI9                   (9U)
#define LMCAL_SPI10                  (10U)

// Номера портов в буквенном формате
#define LMCAL_SPI_PORTA              (0U)
#define LMCAL_SPI_PORTB              (1U)
#define LMCAL_SPI_PORTC              (2U)
#define LMCAL_SPI_PORTD              (3U)
#define LMCAL_SPI_PORTE              (4U)
#define LMCAL_SPI_PORTF              (5U)
#define LMCAL_SPI_PORTG              (6U)
#define LMCAL_SPI_PORTH              (7U)
#define LMCAL_SPI_PORTI              (8U)

// Номера портов в цифровом формате
#define LMCAL_SPI_PORT0              (0U)
#define LMCAL_SPI_PORT1              (1U)
#define LMCAL_SPI_PORT2              (2U)
#define LMCAL_SPI_PORT3              (3U)
#define LMCAL_SPI_PORT4              (4U)
#define LMCAL_SPI_PORT5              (5U)
#define LMCAL_SPI_PORT6              (6U)
#define LMCAL_SPI_PORT7              (7U)
#define LMCAL_SPI_PORT8              (8U)
#define LMCAL_SPI_PORT_NONE          (0xFFFFFFFF)

// Номера пинов в цифровом формате
#define LMCAL_SPI_PIN0               (0U)
#define LMCAL_SPI_PIN1               (1U)
#define LMCAL_SPI_PIN2               (2U)
#define LMCAL_SPI_PIN3               (3U)
#define LMCAL_SPI_PIN4               (4U)
#define LMCAL_SPI_PIN5               (5U)
#define LMCAL_SPI_PIN6               (6U)
#define LMCAL_SPI_PIN7               (7U)
#define LMCAL_SPI_PIN8               (8U)
#define LMCAL_SPI_PIN9               (9U)
#define LMCAL_SPI_PIN10              (10U)
#define LMCAL_SPI_PIN11              (11U)
#define LMCAL_SPI_PIN12              (12U)
#define LMCAL_SPI_PIN13              (13U)
#define LMCAL_SPI_PIN14              (14U)
#define LMCAL_SPI_PIN15              (15U)
#define LMCAL_SPI_PIN16              (16U)
#define LMCAL_SPI_PIN17              (17U)
#define LMCAL_SPI_PIN18              (18U)
#define LMCAL_SPI_PIN19              (19U)
#define LMCAL_SPI_PIN20              (20U)
#define LMCAL_SPI_PIN21              (21U)
#define LMCAL_SPI_PIN22              (22U)
#define LMCAL_SPI_PIN23              (23U)
#define LMCAL_SPI_PIN24              (24U)
#define LMCAL_SPI_PIN25              (25U)
#define LMCAL_SPI_PIN26              (26U)
#define LMCAL_SPI_PIN27              (27U)
#define LMCAL_SPI_PIN28              (28U)
#define LMCAL_SPI_PIN29              (29U)
#define LMCAL_SPI_PIN30              (30U)
#define LMCAL_SPI_PIN31              (31U)
#define LMCAL_SPI_PIN_NONE           (0xFFFFFFFF)

// Режимы работы SPI
#define LMCAL_SPI_MODE_MASTER        (0U)
#define LMCAL_SPI_MODE_SLAVE         (1U)

// Размер слова в битах
#define LMCAL_SPI_FRAME_8BIT         (0U)
#define LMCAL_SPI_FRAME_16BIT        (1U)
#define LMCAL_SPI_FRAME_24BIT        (2U)
#define LMCAL_SPI_FRAME_32BIT        (3U)

// Порядок бит в слове
#define LMCAL_SPI_FIRST_BIT_MSB      (0U)
#define LMCAL_SPI_FIRST_BIT_LSB      (1U)

// Полярность линии CLK
#define LMCAL_SPI_CLK_POL_LOW        (0U)
#define LMCAL_SPI_CLK_POL_HIGH       (1U)

// Фаза линии CLK
#define LMCAL_SPI_CLK_PHA_1EDGE      (0U)
#define LMCAL_SPI_CLK_PHA_2EDGE      (1U)



//************************************ Глобальные (публичные) константы *************************************

//---------------------------------------------------------
// Канал 0
//---------------------------------------------------------

// Включить или отключить канал
// Доступные значения: ON\OFF, 1\0
#define LMCAL_SPI_CH0_ENABLE            (OFF)

// Включить или отключить асинхронный режим работы драйвера.
// Если выключен, то исползуются функции с блокированием.
// Доступные значения: ON\OFF, 1\0
#define LMCAL_SPI_CH0_ASYNC_MODE        (OFF)

// Режим работы SPI.
// Доступные значения: LMCAL_SPI_MODE_MASTER, LMCAL_SPI_MODE_SLAVE
#define LMCAL_SPI_CH0_MODE              (LMCAL_SPI_MODE_MASTER)

// Номер аппаратного SPI.
// Доступные значения: LMCAL_SPI0..LMCAL_SPI10
#define LMCAL_SPI_CH0_SPI_NUM           (LMCAL_SPI0)

// Скорость обмена в бод\с.
// Доступные значения: зависит от МК
#define LMCAL_SPI_CH0_BAUDRATE          (1000000U)

// Размер одного слова данных.
// Доступные значения: LMCAL_SPI_FRAME_8BIT, LMCAL_SPI_FRAME_16BIT
#define LMCAL_SPI_CH0_FRAME_SIZE        (LMCAL_SPI_FRAME_8BIT)

// Порядок бит в слове данных.
// Доступные значения: LMCAL_SPI_FIRST_BIT_MSB, LMCAL_SPI_FIRST_BIT_LSB
#define LMCAL_SPI_CH0_BIT_ORDER         (LMCAL_SPI_FIRST_BIT_MSB)

// Полярность линии CLK.
// Доступные значения: LMCAL_SPI_CLK_POL_LOW, LMCAL_SPI_CLK_POL_HIGH
#define LMCAL_SPI_CH0_CLK_POL           (LMCAL_SPI_CLK_POL_LOW)

// Фаза линии CLK.
// Доступные значения: LMCAL_SPI_CLK_PHA_1EDGE, LMCAL_SPI_CLK_PHA_2EDGE
#define LMCAL_SPI_CH0_CLK_PHA           (LMCAL_SPI_CLK_PHA_1EDGE)

// Номер порта MOSI.
// Доступные значения: LMCAL_SPI_PORTA..LMCAL_SPI_PORTH или LMCAL_SPI_PORT0..LMCAL_SPI_PORT7
#define LMCAL_SPI_CH0_MOSI_PORT         (LMCAL_SPI_PORT0)

// Номер ножки MOSI.
// Доступные значения: LMCAL_SPI_PIN0...LMCAL_SPI_PIN31
#define LMCAL_SPI_CH0_MOSI_PIN          (LMCAL_SPI_PIN0)

// Номер порта MISO.
// Доступные значения: LMCAL_SPI_PORTA..LMCAL_SPI_PORTH или LMCAL_SPI_PORT0..LMCAL_SPI_PORT7
#define LMCAL_SPI_CH0_MISO_PORT         (LMCAL_SPI_PORT0)

// Номер ножки MISO.
// Доступные значения: LMCAL_SPI_PIN0...LMCAL_SPI_PIN31
#define LMCAL_SPI_CH0_MISO_PIN          (LMCAL_SPI_PIN0)

// Номер порта CLK.
// Доступные значения: LMCAL_SPI_PORTA..LMCAL_SPI_PORTH или LMCAL_SPI_PORT0..LMCAL_SPI_PORT7
#define LMCAL_SPI_CH0_CLK_PORT          (LMCAL_SPI_PORT0)

// Номер ножки CLK.
// Доступные значения: LMCAL_SPI_PIN0...LMCAL_SPI_PIN31
#define LMCAL_SPI_CH0_CLK_PIN           (LMCAL_SPI_PIN0)

// Номер порта CS.
// Доступные значения: LMCAL_SPI_PORTA..LMCAL_SPI_PORTH или LMCAL_SPI_PORT0..LMCAL_SPI_PORT7
#define LMCAL_SPI_CH0_CS_PORT           (LMCAL_SPI_PORT0)

// Номер ножки CS.
// Доступные значения: LMCAL_SPI_PIN0...LMCAL_SPI_PIN31
#define LMCAL_SPI_CH0_CS_PIN            (LMCAL_SPI_PIN0)



//---------------------------------------------------------
// Канал 1
//---------------------------------------------------------
#define LMCAL_SPI_CH1_ENABLE             (OFF)
#define LMCAL_SPI_CH1_ASYNC_MODE         (OFF)
#define LMCAL_SPI_CH1_MODE               (LMCAL_SPI_MODE_MASTER)
#define LMCAL_SPI_CH1_SPI_NUM            (LMCAL_SPI0)
#define LMCAL_SPI_CH1_BAUDRATE           (1000000U)
#define LMCAL_SPI_CH1_FRAME_SIZE         (LMCAL_SPI_FRAME_8BIT)
#define LMCAL_SPI_CH1_BIT_ORDER          (LMCAL_SPI_FIRST_BIT_MSB)
#define LMCAL_SPI_CH1_CLK_POL            (LMCAL_SPI_CLK_POL_LOW)
#define LMCAL_SPI_CH1_CLK_PHA            (LMCAL_SPI_CLK_PHA_1EDGE)
#define LMCAL_SPI_CH1_MOSI_PORT          (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH1_MOSI_PIN           (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH1_MISO_PORT          (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH1_MISO_PIN           (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH1_CLK_PORT           (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH1_CLK_PIN            (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH1_CS_PORT            (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH1_CS_PIN             (LMCAL_SPI_PIN0)



//---------------------------------------------------------
// Канал 2
//---------------------------------------------------------
#define LMCAL_SPI_CH2_ENABLE             (OFF)
#define LMCAL_SPI_CH2_ASYNC_MODE         (OFF)
#define LMCAL_SPI_CH2_MODE               (LMCAL_SPI_MODE_MASTER)
#define LMCAL_SPI_CH2_SPI_NUM            (LMCAL_SPI0)
#define LMCAL_SPI_CH2_BAUDRATE           (1000000U)
#define LMCAL_SPI_CH2_FRAME_SIZE         (LMCAL_SPI_FRAME_8BIT)
#define LMCAL_SPI_CH2_BIT_ORDER          (LMCAL_SPI_FIRST_BIT_MSB)
#define LMCAL_SPI_CH2_CLK_POL            (LMCAL_SPI_CLK_POL_LOW)
#define LMCAL_SPI_CH2_CLK_PHA            (LMCAL_SPI_CLK_PHA_1EDGE)
#define LMCAL_SPI_CH2_MOSI_PORT          (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH2_MOSI_PIN           (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH2_MISO_PORT          (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH2_MISO_PIN           (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH2_CLK_PORT           (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH2_CLK_PIN            (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH2_CS_PORT            (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH2_CS_PIN             (LMCAL_SPI_PIN0)


//---------------------------------------------------------
// Канал 3
//---------------------------------------------------------
#define LMCAL_SPI_CH3_ENABLE             (OFF)
#define LMCAL_SPI_CH3_ASYNC_MODE         (OFF)
#define LMCAL_SPI_CH3_MODE               (LMCAL_SPI_MODE_MASTER)
#define LMCAL_SPI_CH3_SPI_NUM            (LMCAL_SPI0)
#define LMCAL_SPI_CH3_BAUDRATE           (1000000U)
#define LMCAL_SPI_CH3_FRAME_SIZE         (LMCAL_SPI_FRAME_8BIT)
#define LMCAL_SPI_CH3_BIT_ORDER          (LMCAL_SPI_FIRST_BIT_MSB)
#define LMCAL_SPI_CH3_CLK_POL            (LMCAL_SPI_CLK_POL_LOW)
#define LMCAL_SPI_CH3_CLK_PHA            (LMCAL_SPI_CLK_PHA_1EDGE)
#define LMCAL_SPI_CH3_MOSI_PORT          (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH3_MOSI_PIN           (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH3_MISO_PORT          (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH3_MISO_PIN           (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH3_CLK_PORT           (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH3_CLK_PIN            (LMCAL_SPI_PIN0)
#define LMCAL_SPI_CH3_CS_PORT            (LMCAL_SPI_PORT0)
#define LMCAL_SPI_CH3_CS_PIN             (LMCAL_SPI_PIN0)



#endif


//*********************************************** КОНЕЦ ФАЙЛА ***********************************************
