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); } }