Обновление
This commit is contained in:
parent
13238d061a
commit
e8822526ac
|
|
@ -36,9 +36,9 @@ typedef struct {
|
|||
FCUART_InitType tInitCfg;
|
||||
FCUART_InterruptType tInterruptCfg;
|
||||
|
||||
DMA_InitType dmaInitCfg;
|
||||
DMA_ChannelCfgType chnCfg;
|
||||
DMA_InterruptCfgType interruptCfg;
|
||||
DMA_InitType dmaInitCfg_RX;
|
||||
DMA_ChannelCfgType chnCfg_RX;
|
||||
DMA_InterruptCfgType interruptCfg_RX;
|
||||
|
||||
uint8_t *dataBufTransmit;
|
||||
uint32_t dataBufTransmitLen;
|
||||
|
|
@ -55,7 +55,6 @@ void vSerialPortInitDMA(
|
|||
|
||||
FCUART_Type *uart,
|
||||
uint32_t BoundRate,
|
||||
|
||||
uint8 UART_INDEX, // UART0 = 0 ... UART7 = 7
|
||||
IRQn_Type IRQ_UART, // FCUART0_IRQn ... FCUART7_IRQn
|
||||
uint8 UART_PRIORITY,
|
||||
|
|
@ -63,15 +62,13 @@ void vSerialPortInitDMA(
|
|||
uint8_t *dataBufTransmit,
|
||||
uint32_t dataBufTransmitLen,
|
||||
|
||||
DMA_ChannelType RX_DMA_CHANNEL,
|
||||
DMA_RequestSourceType RX_DMA_CHANNEL_REQ,
|
||||
|
||||
uint8_t *DMA_BUF,
|
||||
uint16_t DMA_BUF_LEN,
|
||||
|
||||
IRQn_Type IRQ_DMA,
|
||||
uint8_t IRQ_DMA_PRIORITY,
|
||||
uint8_t IRQ_DMA_CHANNEL_PRIORITY,
|
||||
DMA_ChannelType DMA_CHANNEL_RX,
|
||||
DMA_RequestSourceType DMA_CHANNEL_REQ_RX,
|
||||
uint8_t *DMA_BUF_RX,
|
||||
uint16_t DMA_BUF_LEN_RX,
|
||||
IRQn_Type IRQ_DMA_RX,
|
||||
uint8_t IRQ_DMA_PRIORITY_RX,
|
||||
uint8_t IRQ_DMA_CHANNEL_PRIORITY_RX,
|
||||
|
||||
uint32_t rxBufferLength,
|
||||
uint32_t rxSnifferLength,
|
||||
|
|
@ -82,8 +79,8 @@ void vSerialPortInitDMA(
|
|||
FCUART_IdleInterrupt_CallBackType FCUART_IldeInterrupt_CallBack,
|
||||
FCUART_ErrorInterrupt_CallBackType FCUART_ErrorInterrupt_CallBack,
|
||||
|
||||
FCUART_TxRxInterrupt_CallBackType FCUART_TxEmptyInterrupt_CallBack,
|
||||
FCUART_TxRxInterrupt_CallBackType FCUART_TxCompleteInterrupt_CallBack
|
||||
FCUART_TxRxInterrupt_CallBackType FCUART_TxEmptyInterrupt_CallBack,
|
||||
FCUART_TxRxInterrupt_CallBackType FCUART_TxCompleteInterrupt_CallBack
|
||||
);
|
||||
|
||||
tSerialPortIO vSerialPortGetIo(tSerialPortFlagchip *env);
|
||||
|
|
|
|||
|
|
@ -23,7 +23,6 @@ void vSerialPortInitDMA(
|
|||
|
||||
FCUART_Type *uart,
|
||||
uint32_t BoundRate,
|
||||
|
||||
uint8 UART_INDEX, // UART0 = 0 ... UART7 = 7
|
||||
IRQn_Type IRQ_UART, // FCUART0_IRQn ... FCUART7_IRQn
|
||||
uint8 UART_PRIORITY,
|
||||
|
|
@ -31,15 +30,13 @@ void vSerialPortInitDMA(
|
|||
uint8_t *dataBufTransmit,
|
||||
uint32_t dataBufTransmitLen,
|
||||
|
||||
DMA_ChannelType RX_DMA_CHANNEL,
|
||||
DMA_RequestSourceType RX_DMA_CHANNEL_REQ,
|
||||
|
||||
uint8_t *DMA_BUF,
|
||||
uint16_t DMA_BUF_LEN,
|
||||
|
||||
IRQn_Type IRQ_DMA,
|
||||
uint8_t IRQ_DMA_PRIORITY,
|
||||
uint8_t IRQ_DMA_CHANNEL_PRIORITY,
|
||||
DMA_ChannelType DMA_CHANNEL_RX,
|
||||
DMA_RequestSourceType DMA_CHANNEL_REQ_RX,
|
||||
uint8_t *DMA_BUF_RX,
|
||||
uint16_t DMA_BUF_LEN_RX,
|
||||
IRQn_Type IRQ_DMA_RX,
|
||||
uint8_t IRQ_DMA_PRIORITY_RX,
|
||||
uint8_t IRQ_DMA_CHANNEL_PRIORITY_RX,
|
||||
|
||||
uint32_t rxBufferLength,
|
||||
uint32_t rxSnifferLength,
|
||||
|
|
@ -56,15 +53,12 @@ void vSerialPortInitDMA(
|
|||
|
||||
) {
|
||||
env->UART_INDEX = UART_INDEX;
|
||||
env->RX_DMA_CHANNEL = RX_DMA_CHANNEL;
|
||||
env->RX_DMA_CHANNEL = DMA_CHANNEL_RX;
|
||||
env->UART = uart;
|
||||
env->DMA_BUF_LEN = DMA_BUF_LEN;
|
||||
|
||||
env->DMA_BUF_LEN = DMA_BUF_LEN_RX;
|
||||
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);
|
||||
|
||||
|
|
@ -74,46 +68,58 @@ void vSerialPortInitDMA(
|
|||
env->rxDataSnifferQueue = 0;
|
||||
}
|
||||
|
||||
env->dmaInitCfg.eArbitrationAlgorithm = DMA_ARBITRATION_ALGORITHM_FIXED_PRIORITY;
|
||||
env->dmaInitCfg.bHaltOnError = false;
|
||||
DMA_Init(DMA_INSTANCE_0, &env->dmaInitCfg);
|
||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||
//начало-----------------------------------DMA-RX-------------------------------------------------------------------
|
||||
|
||||
env->chnCfg.pSrcBuffer = &(uart->DATA);
|
||||
env->chnCfg.pDestBuffer = DMA_BUF;
|
||||
env->chnCfg.u32BlockSize = 1U;
|
||||
env->chnCfg.u16BlockCount = 1U;
|
||||
env->chnCfg.u8ChannelPriority = IRQ_DMA_CHANNEL_PRIORITY;
|
||||
env->chnCfg.eSrcDataSize = DMA_TRANSFER_SIZE_1B;
|
||||
env->chnCfg.eDestDataSize = DMA_TRANSFER_SIZE_1B;
|
||||
env->chnCfg.eSrcIncMode = DMA_INCREMENT_DISABLE;
|
||||
env->chnCfg.eDestIncMode = DMA_INCREMENT_DATA_SIZE;
|
||||
env->chnCfg.bSrcBlockOffsetEn = false;
|
||||
env->chnCfg.bDestBlockOffsetEn = false;
|
||||
env->chnCfg.s32BlockOffset = 0;
|
||||
env->chnCfg.bSrcAddrLoopbackEn = false;
|
||||
env->chnCfg.bDestAddrLoopbackEn = false;
|
||||
env->chnCfg.bAutoStop = false;
|
||||
env->dmaInitCfg_RX.eArbitrationAlgorithm = DMA_ARBITRATION_ALGORITHM_FIXED_PRIORITY;
|
||||
env->dmaInitCfg_RX.bHaltOnError = false;
|
||||
DMA_Init(DMA_INSTANCE_0, &env->dmaInitCfg_RX);
|
||||
|
||||
env->chnCfg.bSrcCircularBufferEn = false;
|
||||
env->chnCfg.u32SrcCircBufferSize = 0U;
|
||||
env->chnCfg.bDestCircularBufferEn = true;
|
||||
env->chnCfg.u32DestCircBufferSize = DMA_BUF_LEN;
|
||||
env->chnCfg_RX.pSrcBuffer = &(uart->DATA);
|
||||
env->chnCfg_RX.pDestBuffer = DMA_BUF_RX;
|
||||
env->chnCfg_RX.u32BlockSize = 1U;
|
||||
env->chnCfg_RX.u16BlockCount = 1U;
|
||||
env->chnCfg_RX.u8ChannelPriority = IRQ_DMA_CHANNEL_PRIORITY_RX;
|
||||
env->chnCfg_RX.eSrcDataSize = DMA_TRANSFER_SIZE_1B;
|
||||
env->chnCfg_RX.eDestDataSize = DMA_TRANSFER_SIZE_1B;
|
||||
env->chnCfg_RX.eSrcIncMode = DMA_INCREMENT_DISABLE;
|
||||
env->chnCfg_RX.eDestIncMode = DMA_INCREMENT_DATA_SIZE;
|
||||
env->chnCfg_RX.bSrcBlockOffsetEn = false;
|
||||
env->chnCfg_RX.bDestBlockOffsetEn = false;
|
||||
env->chnCfg_RX.s32BlockOffset = 0;
|
||||
env->chnCfg_RX.bSrcAddrLoopbackEn = false;
|
||||
env->chnCfg_RX.bDestAddrLoopbackEn = false;
|
||||
env->chnCfg_RX.bAutoStop = false;
|
||||
|
||||
env->chnCfg.eTriggerSrc = RX_DMA_CHANNEL_REQ;
|
||||
DMA_InitChannel(DMA_INSTANCE_0, RX_DMA_CHANNEL, &env->chnCfg);
|
||||
env->chnCfg_RX.bSrcCircularBufferEn = false;
|
||||
env->chnCfg_RX.u32SrcCircBufferSize = 0U;
|
||||
env->chnCfg_RX.bDestCircularBufferEn = true;
|
||||
env->chnCfg_RX.u32DestCircBufferSize = DMA_BUF_LEN_RX;
|
||||
|
||||
env->interruptCfg.bTransferCompleteIntEn = true;
|
||||
env->interruptCfg.pTransferCompleteNotify = pTransferCompleteNotify;
|
||||
env->interruptCfg.bTransferErrorIntEn = true;
|
||||
env->interruptCfg.pTransferErrorNotify = pTransferErrorNotify;
|
||||
DMA_InitChannelInterrupt(DMA_INSTANCE_0, RX_DMA_CHANNEL, &env->interruptCfg);
|
||||
env->chnCfg_RX.eTriggerSrc = DMA_CHANNEL_REQ_RX;
|
||||
DMA_InitChannel(DMA_INSTANCE_0, DMA_CHANNEL_RX, &env->chnCfg_RX);
|
||||
|
||||
DMA_StartChannel(DMA_INSTANCE_0, RX_DMA_CHANNEL);
|
||||
env->interruptCfg_RX.bTransferCompleteIntEn = true;
|
||||
env->interruptCfg_RX.pTransferCompleteNotify = pTransferCompleteNotify;
|
||||
env->interruptCfg_RX.bTransferErrorIntEn = true;
|
||||
env->interruptCfg_RX.pTransferErrorNotify = pTransferErrorNotify;
|
||||
DMA_InitChannelInterrupt(DMA_INSTANCE_0, DMA_CHANNEL_RX, &env->interruptCfg_RX);
|
||||
|
||||
NVIC_SetPriority(DMA_Error_IRQn, IRQ_DMA_PRIORITY);
|
||||
NVIC_SetPriority(IRQ_DMA, IRQ_DMA_PRIORITY);
|
||||
NVIC_EnableIRQ(IRQ_DMA);
|
||||
DMA_StartChannel(DMA_INSTANCE_0, DMA_CHANNEL_RX);
|
||||
|
||||
NVIC_SetPriority(DMA_Error_IRQn, IRQ_DMA_PRIORITY_RX);
|
||||
NVIC_SetPriority(IRQ_DMA_RX, IRQ_DMA_PRIORITY_RX);
|
||||
NVIC_EnableIRQ(IRQ_DMA_RX);
|
||||
|
||||
//конец-----------------------------------DMA-RX--------------------------------------------------------------------
|
||||
//конец-----------------------------------DMA-RX--------------------------------------------------------------------
|
||||
//конец-----------------------------------DMA-RX--------------------------------------------------------------------
|
||||
|
||||
|
||||
//начало------------------------------------UART--------------------------------------------------------------------
|
||||
//начало------------------------------------UART--------------------------------------------------------------------
|
||||
//начало------------------------------------UART--------------------------------------------------------------------
|
||||
|
||||
FCUART_ErrorType tRetVal;
|
||||
uint32_t u32PccFuncClk;
|
||||
|
|
@ -172,6 +178,10 @@ void vSerialPortInitDMA(
|
|||
}
|
||||
}
|
||||
|
||||
//конец------------------------------------UART---------------------------------------------------------------------
|
||||
//конец------------------------------------UART---------------------------------------------------------------------
|
||||
//конец------------------------------------UART---------------------------------------------------------------------
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue