Обновление
This commit is contained in:
parent
82840cff76
commit
983966f58c
|
|
@ -27,8 +27,6 @@ typedef struct {
|
||||||
|
|
||||||
uint32_t UART_DMA_RECEIVED_LEN_BUF;
|
uint32_t UART_DMA_RECEIVED_LEN_BUF;
|
||||||
|
|
||||||
uint8 s_SampleTmp[4];
|
|
||||||
|
|
||||||
FCUART_DataType s_tFCUART_TxMsg;
|
FCUART_DataType s_tFCUART_TxMsg;
|
||||||
|
|
||||||
FCUART_InitType tInitCfg;
|
FCUART_InitType tInitCfg;
|
||||||
|
|
@ -38,6 +36,8 @@ typedef struct {
|
||||||
DMA_ChannelCfgType chnCfg;
|
DMA_ChannelCfgType chnCfg;
|
||||||
DMA_InterruptCfgType interruptCfg;
|
DMA_InterruptCfgType interruptCfg;
|
||||||
|
|
||||||
|
uint8_t dataBufTransmit[512];
|
||||||
|
|
||||||
osMessageQueueId_t txAccessQueue;
|
osMessageQueueId_t txAccessQueue;
|
||||||
osMessageQueueId_t rxDataQueue;
|
osMessageQueueId_t rxDataQueue;
|
||||||
osMessageQueueId_t rxDataSnifferQueue;
|
osMessageQueueId_t rxDataSnifferQueue;
|
||||||
|
|
@ -82,6 +82,7 @@ tSerialPortIO vSerialPortGetIo(tSerialPortFlagchip *env);
|
||||||
|
|
||||||
void SerialPort_RxDmaBufToQueue(tSerialPortFlagchip *env, const void *pSrcBuffer);
|
void SerialPort_RxDmaBufToQueue(tSerialPortFlagchip *env, const void *pSrcBuffer);
|
||||||
|
|
||||||
|
void SerialPort_TxEndTransmitted(tSerialPortFlagchip *env, uint8_t data);
|
||||||
/*
|
/*
|
||||||
#define vSerialPortInitDMAName(ENV, NAME, DMA, RX_DMA_CHANNEL, RX_DMA_CHANNEL_MUX, RX_DMAMUX_DMAREQ_ID, RX_DMA_Channel_IRQ, RX_DMA_FDT_FLAG, DMA_BUF, DMA_BUF_LEN, TX_DMA_CHANNEL, TX_DMA_CHANNEL_MUX, TX_DMAMUX_DMAREQ_ID, TX_DMA_Channel_IRQ, TX_DMA_FDT_FLAG, SWAP, BOUND_RATE, PRIORITY, LEN) \
|
#define vSerialPortInitDMAName(ENV, NAME, DMA, RX_DMA_CHANNEL, RX_DMA_CHANNEL_MUX, RX_DMAMUX_DMAREQ_ID, RX_DMA_Channel_IRQ, RX_DMA_FDT_FLAG, DMA_BUF, DMA_BUF_LEN, TX_DMA_CHANNEL, TX_DMA_CHANNEL_MUX, TX_DMAMUX_DMAREQ_ID, TX_DMA_Channel_IRQ, TX_DMA_FDT_FLAG, SWAP, BOUND_RATE, PRIORITY, LEN) \
|
||||||
vSerialPortInitDMA(ENV, NAME, DMA, RX_DMA_CHANNEL, RX_DMA_CHANNEL_MUX, RX_DMAMUX_DMAREQ_ID, RX_DMA_Channel_IRQ, RX_DMA_FDT_FLAG, DMA_BUF, DMA_BUF_LEN, TX_DMA_CHANNEL, TX_DMA_CHANNEL_MUX, TX_DMAMUX_DMAREQ_ID, TX_DMA_Channel_IRQ, TX_DMA_FDT_FLAG, SWAP, BOUND_RATE, NAME##_IRQn, CRM_##NAME##_PERIPH_CLOCK, PRIORITY, LEN, 0)
|
vSerialPortInitDMA(ENV, NAME, DMA, RX_DMA_CHANNEL, RX_DMA_CHANNEL_MUX, RX_DMAMUX_DMAREQ_ID, RX_DMA_Channel_IRQ, RX_DMA_FDT_FLAG, DMA_BUF, DMA_BUF_LEN, TX_DMA_CHANNEL, TX_DMA_CHANNEL_MUX, TX_DMAMUX_DMAREQ_ID, TX_DMA_Channel_IRQ, TX_DMA_FDT_FLAG, SWAP, BOUND_RATE, NAME##_IRQn, CRM_##NAME##_PERIPH_CLOCK, PRIORITY, LEN, 0)
|
||||||
|
|
|
||||||
|
|
@ -68,9 +68,10 @@ void vSerialPortInitDMA(
|
||||||
env->rxDataSnifferQueue = 0;
|
env->rxDataSnifferQueue = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
FCUART_InitMemory(UART_INDEX);
|
|
||||||
|
|
||||||
|
|
||||||
|
FCUART_InitMemory(UART_INDEX);
|
||||||
|
|
||||||
env->dmaInitCfg.eArbitrationAlgorithm = DMA_ARBITRATION_ALGORITHM_FIXED_PRIORITY;
|
env->dmaInitCfg.eArbitrationAlgorithm = DMA_ARBITRATION_ALGORITHM_FIXED_PRIORITY;
|
||||||
env->dmaInitCfg.bHaltOnError = false;
|
env->dmaInitCfg.bHaltOnError = false;
|
||||||
DMA_Init(DMA_INSTANCE_0, &env->dmaInitCfg);
|
DMA_Init(DMA_INSTANCE_0, &env->dmaInitCfg);
|
||||||
|
|
@ -107,10 +108,9 @@ void vSerialPortInitDMA(
|
||||||
|
|
||||||
//NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4);
|
//NVIC_SetPriorityGrouping(NVIC_PRIORITY_GROUP_4);
|
||||||
|
|
||||||
NVIC_EnableIRQ(IRQ_DMA);
|
|
||||||
NVIC_SetPriority(DMA_Error_IRQn, IRQ_DMA_PRIORITY);
|
NVIC_SetPriority(DMA_Error_IRQn, IRQ_DMA_PRIORITY);
|
||||||
NVIC_SetPriority(IRQ_DMA, IRQ_DMA_PRIORITY);
|
NVIC_SetPriority(IRQ_DMA, IRQ_DMA_PRIORITY);
|
||||||
|
NVIC_EnableIRQ(IRQ_DMA);
|
||||||
|
|
||||||
FCUART_ErrorType tRetVal;
|
FCUART_ErrorType tRetVal;
|
||||||
uint32_t u32PccFuncClk;
|
uint32_t u32PccFuncClk;
|
||||||
|
|
@ -138,7 +138,7 @@ void vSerialPortInitDMA(
|
||||||
|
|
||||||
if (tRetVal == FCUART_ERROR_OK) {
|
if (tRetVal == FCUART_ERROR_OK) {
|
||||||
|
|
||||||
env->s_tFCUART_TxMsg.pDatas = (uint8_t *) env->s_SampleTmp; // data buffer must set an array address
|
env->s_tFCUART_TxMsg.pDatas = (uint8_t *) env->dataBufTransmit; // data buffer must set an array address
|
||||||
env->s_tFCUART_TxMsg.u32DataLen = 0;
|
env->s_tFCUART_TxMsg.u32DataLen = 0;
|
||||||
env->tInterruptCfg.pTxBuf = &env->s_tFCUART_TxMsg;
|
env->tInterruptCfg.pTxBuf = &env->s_tFCUART_TxMsg;
|
||||||
|
|
||||||
|
|
@ -149,17 +149,19 @@ void vSerialPortInitDMA(
|
||||||
env->tInterruptCfg.bEnRxInterrupt = false;
|
env->tInterruptCfg.bEnRxInterrupt = false;
|
||||||
env->tInterruptCfg.pRxNotify = NULL;
|
env->tInterruptCfg.pRxNotify = NULL;
|
||||||
|
|
||||||
env->tInterruptCfg.bEnTxInterrupt = true;
|
env->tInterruptCfg.bEnTxInterrupt = false;
|
||||||
env->tInterruptCfg.pTxEmptyNotify = FCUART_TxEmptyInterrupt_CallBack;
|
env->tInterruptCfg.pTxEmptyNotify = FCUART_TxEmptyInterrupt_CallBack;
|
||||||
env->tInterruptCfg.pTxCompleteNotify = FCUART_TxCompleteInterrupt_CallBack;
|
env->tInterruptCfg.pTxCompleteNotify = FCUART_TxCompleteInterrupt_CallBack;
|
||||||
|
|
||||||
|
tRetVal = FCUART_BufTransmitted(UART_INDEX, &env->tInterruptCfg);
|
||||||
|
|
||||||
tRetVal = FCUART_SetInterrupt(UART_INDEX, &env->tInterruptCfg);
|
tRetVal = FCUART_SetInterrupt(UART_INDEX, &env->tInterruptCfg);
|
||||||
|
|
||||||
NVIC_EnableIRQ(IRQ_UART);
|
|
||||||
NVIC_SetPriority(IRQ_UART, UART_PRIORITY);
|
|
||||||
|
|
||||||
tRetVal = FCUART_StartReceive(UART_INDEX);
|
tRetVal = FCUART_StartReceive(UART_INDEX);
|
||||||
|
|
||||||
|
NVIC_SetPriority(IRQ_UART, UART_PRIORITY);
|
||||||
|
NVIC_EnableIRQ(IRQ_UART);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -229,7 +231,8 @@ vSerialPortTransmitOverCore(tSerialPortFlagchip *env, uint8_t *data, uint16_t si
|
||||||
|
|
||||||
FCUART_ErrorType tRetVal;
|
FCUART_ErrorType tRetVal;
|
||||||
|
|
||||||
tRetVal = FCUART_AssignTxInterruptData(env->UART_INDEX, (uint8 *) data, size);
|
memcpy(env->dataBufTransmit, data, size);
|
||||||
|
tRetVal = FCUART_AssignTxInterruptData(env->UART_INDEX, env->dataBufTransmit, size);
|
||||||
|
|
||||||
tRetVal = FCUART_StartTransmit(env->UART_INDEX);
|
tRetVal = FCUART_StartTransmit(env->UART_INDEX);
|
||||||
|
|
||||||
|
|
@ -242,6 +245,10 @@ vSerialPortTransmitOverCore(tSerialPortFlagchip *env, uint8_t *data, uint16_t si
|
||||||
return sent;
|
return sent;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SerialPort_TxEndTransmitted(tSerialPortFlagchip *env, uint8_t data) {
|
||||||
|
osMessageQueuePut(env->txAccessQueue, &data, 0x0, 0U);
|
||||||
|
}
|
||||||
|
|
||||||
void SerialPort_RxDmaBufToQueue(tSerialPortFlagchip *env, const void *pSrcBuffer) {
|
void SerialPort_RxDmaBufToQueue(tSerialPortFlagchip *env, const void *pSrcBuffer) {
|
||||||
|
|
||||||
for (uint32_t i = 0; i < env->UART_DMA_RECEIVED_LEN_BUF; ++i) {
|
for (uint32_t i = 0; i < env->UART_DMA_RECEIVED_LEN_BUF; ++i) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue