Обновление

This commit is contained in:
cfif 2025-12-09 13:08:53 +03:00
parent 983966f58c
commit 6623f9d676
2 changed files with 14 additions and 5 deletions

View File

@ -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,

View File

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