commit 3ff205d43d6ae137c90b4f883ada0e7176493328 Author: cfif Date: Tue Feb 25 14:34:42 2025 +0300 Перенос на новую организацию GONEC diff --git a/SerialPorts.c b/SerialPorts.c new file mode 100644 index 0000000..d63dfa9 --- /dev/null +++ b/SerialPorts.c @@ -0,0 +1,122 @@ +// +// Created by cfif on 15.11.22. +// +#include "SerialPorts.h" +#include "at32f435_437.h" + +tSerialPorts SERIAL_PORTS; + +//начало------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ +//начало------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ +//начало------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ + +// GONEC1 +//void UART7_IRQHandler() { +// vSerialPortIrqProcessing(&SERIAL_PORTS.GONEC1); +//} + +uint8_t buf_UART7_DMA[3200]; + +//volatile uint32_t timeModemStuckGetMs = 0; + +// IDLE прерывание +void UART7_IRQHandler() { + +// timeModemStuckGetMs = SystemGetMs(); + + SerialPort_IrqProcessing_UartIdle(&SERIAL_PORTS.GONEC1); + // Смотрим idle прерывание +// if (usart_flag_get(SERIAL_PORTS.GONEC1.uart, USART_IDLEF_FLAG)) { +// // Сброс прерывания +// usart_data_receive(SERIAL_PORTS.GONEC1.uart); +// +// vSerialPortIrqProcessingDMAloop(&SERIAL_PORTS.GONEC1, SERIAL_PORTS.GONEC1.dma_rx_init_struct.buffer_size - +// SERIAL_PORTS.GONEC1.dma_channel->dtcnt); +// +// } +} + +// RX +void DMA1_Channel3_IRQHandler(void) { + + SerialPort_IrqProcessing_DmaRxLoop(&SERIAL_PORTS.GONEC1); + +// if (dma_flag_get(DMA1_FDT3_FLAG)) { +// +// timeModemStuckGetMs = SystemGetMs(); +// +// vSerialPortIrqProcessingDMAloop(&SERIAL_PORTS.GONEC1, +// SERIAL_PORTS.GONEC1.dma_rx_init_struct.buffer_size); +// SERIAL_PORTS.GONEC1.offset = 0; +// dma_flag_clear(DMA1_FDT3_FLAG); +// } +} + +// TX +void DMA1_Channel4_IRQHandler(void) { + + SerialPort_IrqProcessing_DmaTx(&SERIAL_PORTS.GONEC1); + +// if (dma_flag_get(DMA1_FDT4_FLAG)) { +// dma_flag_clear(DMA1_FDT4_FLAG); +// osMutexRelease(SERIAL_PORTS.GONEC1.dmaAccess); +// } +} + +// Настройка порта мезонин ГОНЕЦ UART1 +static void vSerialPort_InitUART7(tSerialPortArtery *env) { + gpio_init_type GPIO_InitStruct; + + gpio_default_para_init(&GPIO_InitStruct); + + GPIO_InitStruct.gpio_drive_strength = GPIO_DRIVE_STRENGTH_STRONGER; + GPIO_InitStruct.gpio_out_type = GPIO_OUTPUT_PUSH_PULL; + GPIO_InitStruct.gpio_mode = GPIO_MODE_MUX; + GPIO_InitStruct.gpio_pins = GPIO_PINS_6 | GPIO_PINS_7; + GPIO_InitStruct.gpio_pull = GPIO_PULL_NONE; + gpio_init(GPIOF, &GPIO_InitStruct); + + gpio_pin_mux_config(GPIOF, GPIO_PINS_SOURCE6, GPIO_MUX_8); + gpio_pin_mux_config(GPIOF, GPIO_PINS_SOURCE7, GPIO_MUX_8); + +// vSerialPortInitNameWithSniffer(env, UART7, true, 115200, 0x55, 1024, 1024); + + +// vSerialPortInitDMANameWithSniffer(env, UART7, DMA1, +// DMA1_CHANNEL3, DMA1MUX_CHANNEL3, DMAMUX_DMAREQ_ID_UART7_RX, DMA1_Channel3_IRQn, +// DMA1_FDT3_FLAG, +// buf_UART7_DMA, sizeof(buf_UART7_DMA), +// DMA1_CHANNEL4, DMA1MUX_CHANNEL4, DMAMUX_DMAREQ_ID_UART7_TX, DMA1_Channel4_IRQn, +// DMA1_FDT4_FLAG, +// true, 921600, 0xFF, 3200, 3200); +// +// vSerialPortInitDMAName(env, UART7, DMA1, +// DMA1_CHANNEL3, DMA1MUX_CHANNEL3, DMAMUX_DMAREQ_ID_UART7_RX, DMA1_Channel3_IRQn, +// DMA1_FDT3_FLAG, +// buf_UART7_DMA, sizeof(buf_UART7_DMA), +// DMA1_CHANNEL4, DMA1MUX_CHANNEL4, DMAMUX_DMAREQ_ID_UART7_TX, DMA1_Channel4_IRQn, +// DMA1_FDT4_FLAG, +// true, 921600, 0xFF, 3200); + + vSerialPortInitDmaWithNameAndSniffer( + env, UART7, 921600, + 1, 3, 1, 4, + true, 0xFF, + buf_UART7_DMA, sizeof(buf_UART7_DMA), + 3200, 3200 + ); + +} + +//конец-------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ +//конец-------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ +//конец-------------------------------------GONEC1 связь с модемом ГОНЕЦ------------------------------------------------ + + +void SerialPorts_Init() { + tSerialPorts *env = &SERIAL_PORTS; + + vSerialPort_InitUART7(&env->GONEC1); + SERIAL_PORTS.GONEC1IO = vSerialPortGetIo(&SERIAL_PORTS.GONEC1); + +} diff --git a/SerialPorts.h b/SerialPorts.h new file mode 100644 index 0000000..0b9452d --- /dev/null +++ b/SerialPorts.h @@ -0,0 +1,24 @@ +// +// Created by cfif on 15.11.22. +// + +#ifndef SERIALPORTS_H +#define SERIALPORTS_H + +#include "SerialPortArtery.h" +//#include "SerialPortHalfDuplexIO.h" +//#include "GpioPin.h" +//#include "SerialPortP2p.h" + + + +typedef struct { + tSerialPortArtery GONEC1; + tSerialPortIO GONEC1IO; +} tSerialPorts; + +extern tSerialPorts SERIAL_PORTS; + +void SerialPorts_Init(); + +#endif //SERIALPORTS_H diff --git a/modular.json b/modular.json new file mode 100644 index 0000000..0dd1901 --- /dev/null +++ b/modular.json @@ -0,0 +1,10 @@ +{ + "cmake": { + "inc_dirs": [ + "./" + ], + "srcs": [ + "./**.c" + ] + } +} \ No newline at end of file