From 6623f9d6767136e9b217888fa79985c3ee950d91 Mon Sep 17 00:00:00 2001 From: cfif Date: Tue, 9 Dec 2025 13:08:53 +0300 Subject: [PATCH] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Inc/SerialPortFlagchip.h | 6 +++++- Src/SerialPortFlagchip.c | 13 +++++++++---- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/Inc/SerialPortFlagchip.h b/Inc/SerialPortFlagchip.h index 02b3a6f..4c4dd97 100644 --- a/Inc/SerialPortFlagchip.h +++ b/Inc/SerialPortFlagchip.h @@ -36,7 +36,8 @@ typedef struct { DMA_ChannelCfgType chnCfg; DMA_InterruptCfgType interruptCfg; - uint8_t dataBufTransmit[512]; + uint8_t *dataBufTransmit; + uint32_t dataBufTransmitLen; osMessageQueueId_t txAccessQueue; osMessageQueueId_t rxDataQueue; @@ -55,6 +56,9 @@ void vSerialPortInitDMA( IRQn_Type IRQ_UART, // FCUART0_IRQn ... FCUART7_IRQn uint8 UART_PRIORITY, + uint8_t *dataBufTransmit, + uint32_t dataBufTransmitLen, + DMA_ChannelType RX_DMA_CHANNEL, DMA_RequestSourceType RX_DMA_CHANNEL_REQ, diff --git a/Src/SerialPortFlagchip.c b/Src/SerialPortFlagchip.c index c7f8172..a07d58d 100644 --- a/Src/SerialPortFlagchip.c +++ b/Src/SerialPortFlagchip.c @@ -28,6 +28,9 @@ void vSerialPortInitDMA( IRQn_Type IRQ_UART, // FCUART0_IRQn ... FCUART7_IRQn uint8 UART_PRIORITY, + uint8_t *dataBufTransmit, + uint32_t dataBufTransmitLen, + DMA_ChannelType RX_DMA_CHANNEL, DMA_RequestSourceType RX_DMA_CHANNEL_REQ, @@ -59,6 +62,9 @@ void vSerialPortInitDMA( env->UART_DMA_RECEIVED_LEN_BUF = 0; + env->dataBufTransmit = dataBufTransmit; + env->dataBufTransmitLen = dataBufTransmitLen; + env->txAccessQueue = osMessageQueueNew(1, 1, NULL); env->rxDataQueue = osMessageQueueNew(rxBufferLength, 1, NULL); @@ -69,7 +75,6 @@ void vSerialPortInitDMA( } - FCUART_InitMemory(UART_INDEX); env->dmaInitCfg.eArbitrationAlgorithm = DMA_ARBITRATION_ALGORITHM_FIXED_PRIORITY; @@ -231,7 +236,7 @@ vSerialPortTransmitOverCore(tSerialPortFlagchip *env, uint8_t *data, uint16_t si FCUART_ErrorType tRetVal; - memcpy(env->dataBufTransmit, data, size); +// memcpy(env->dataBufTransmit, data, size); tRetVal = FCUART_AssignTxInterruptData(env->UART_INDEX, env->dataBufTransmit, size); tRetVal = FCUART_StartTransmit(env->UART_INDEX); @@ -252,9 +257,9 @@ void SerialPort_TxEndTransmitted(tSerialPortFlagchip *env, uint8_t data) { void SerialPort_RxDmaBufToQueue(tSerialPortFlagchip *env, const void *pSrcBuffer) { for (uint32_t i = 0; i < env->UART_DMA_RECEIVED_LEN_BUF; ++i) { - osMessageQueuePut(env->rxDataQueue, &((uint8 *)pSrcBuffer)[i], 0x0, 0U); + osMessageQueuePut(env->rxDataQueue, &((uint8 *) pSrcBuffer)[i], 0x0, 0U); if (env->rxDataSnifferQueue) { - osMessageQueuePut(env->rxDataSnifferQueue, &((uint8 *)pSrcBuffer)[i], 0x0, 0U); + osMessageQueuePut(env->rxDataSnifferQueue, &((uint8 *) pSrcBuffer)[i], 0x0, 0U); } }