2025-09-28 11:29 PM
Hi~
NUCLEO H563ZI USART GPDMA channel6 not received buffer.
static void MX_USART6_UART_Init(void)
/* GPDMA2_REQUEST_USART6_RX Init */
NodeConfig.DestAllocatedPort = LL_DMA_DEST_ALLOCATED_PORT1;
NodeConfig.DestHWordExchange = LL_DMA_DEST_HALFWORD_PRESERVE;
NodeConfig.DestByteExchange = LL_DMA_DEST_BYTE_PRESERVE;
NodeConfig.DestBurstLength = 1;
NodeConfig.DestIncMode = LL_DMA_DEST_INCREMENT;
NodeConfig.DestDataWidth = LL_DMA_DEST_DATAWIDTH_BYTE;
NodeConfig.SrcAllocatedPort = LL_DMA_SRC_ALLOCATED_PORT0;
NodeConfig.SrcByteExchange = LL_DMA_SRC_BYTE_PRESERVE;
NodeConfig.DataAlignment = LL_DMA_DATA_ALIGN_ZEROPADD;
NodeConfig.SrcBurstLength = 1;
NodeConfig.SrcIncMode = LL_DMA_SRC_FIXED;
NodeConfig.SrcDataWidth = LL_DMA_SRC_DATAWIDTH_BYTE;
NodeConfig.TransferEventMode = LL_DMA_TCEM_LAST_LLITEM_TRANSFER;
NodeConfig.Mode = LL_DMA_NORMAL;
NodeConfig.TriggerPolarity = LL_DMA_TRIG_POLARITY_MASKED;
NodeConfig.BlkHWRequest = LL_DMA_HWREQUEST_SINGLEBURST;
NodeConfig.Direction = LL_DMA_DIRECTION_PERIPH_TO_MEMORY;
NodeConfig.Request = LL_GPDMA2_REQUEST_USART6_RX;
NodeConfig.BlkRptCount = 1;
NodeConfig.UpdateRegisters = (LL_DMA_UPDATE_CTR1 | LL_DMA_UPDATE_CTR2 | LL_DMA_UPDATE_CBR1 | LL_DMA_UPDATE_CSAR | LL_DMA_UPDATE_CDAR | LL_DMA_UPDATE_CTR3 | LL_DMA_UPDATE_CBR2 | LL_DMA_UPDATE_CLLR);
NodeConfig.NodeType = LL_DMA_GPDMA_LINEAR_NODE;
NodeConfig.SrcAddress = LL_USART_DMA_GetRegAddr(USART6, LL_USART_DMA_REG_DATA_RECEIVE);
NodeConfig.DestAddress = (uint32_t)usart_rx_dma_buffer;
/* Size is always in bytes! Width is determined by source and destination numbers */
NodeConfig.BlkDataLength = sizeof(usart_rx_dma_buffer);
LL_DMA_CreateLinkNode(&NodeConfig, &Node_GPDMA2_Channel6);
LL_DMA_ConnectLinkNode(&Node_GPDMA2_Channel6, LL_DMA_CLLR_OFFSET5, &Node_GPDMA2_Channel6, LL_DMA_CLLR_OFFSET5);
/* Next function call is commented because it will not compile as is. The Node structure address has to be cast to an unsigned int (uint32_t)pNode_DMAxCHy */
/*
*/
LL_DMA_SetLinkedListBaseAddr(GPDMA2, LL_DMA_CHANNEL_6, (uint32_t)&Node_GPDMA2_Channel6);
LL_DMA_ConfigLinkUpdate(GPDMA2, LL_DMA_CHANNEL_6,
(LL_DMA_UPDATE_CTR1 | LL_DMA_UPDATE_CTR2 | LL_DMA_UPDATE_CBR1 | LL_DMA_UPDATE_CSAR
| LL_DMA_UPDATE_CDAR | LL_DMA_UPDATE_CTR3 | LL_DMA_UPDATE_CBR2 | LL_DMA_UPDATE_CLLR),
(uint32_t)&Node_GPDMA2_Channel6);
DMA_InitLinkedListStruct.Priority = LL_DMA_LOW_PRIORITY_LOW_WEIGHT;
DMA_InitLinkedListStruct.LinkStepMode = LL_DMA_LSM_FULL_EXECUTION;
DMA_InitLinkedListStruct.LinkAllocatedPort = LL_DMA_LINK_ALLOCATED_PORT0;
DMA_InitLinkedListStruct.TransferEventMode = LL_DMA_TCEM_LAST_LLITEM_TRANSFER;
LL_DMA_List_Init(GPDMA2, LL_DMA_CHANNEL_6, &DMA_InitLinkedListStruct);
LL_DMA_EnableIT_HT(GPDMA2, LL_DMA_CHANNEL_6);
LL_DMA_EnableIT_TC(GPDMA2, LL_DMA_CHANNEL_6);
/* USART6 interrupt Init */
NVIC_SetPriority(USART6_IRQn, NVIC_EncodePriority(NVIC_GetPriorityGrouping(),5, 0));
NVIC_EnableIRQ(USART6_IRQn);
/* USER CODE BEGIN USART6_Init 1 */
/* Configure the DMA functional parameters for transmission */
/* USER CODE END USART6_Init 1 */
USART_InitStruct.PrescalerValue = LL_USART_PRESCALER_DIV1;
USART_InitStruct.BaudRate = 115200;
USART_InitStruct.DataWidth = LL_USART_DATAWIDTH_8B;
USART_InitStruct.StopBits = LL_USART_STOPBITS_1;
USART_InitStruct.Parity = LL_USART_PARITY_NONE;
USART_InitStruct.TransferDirection = LL_USART_DIRECTION_TX_RX;
USART_InitStruct.HardwareFlowControl = LL_USART_HWCONTROL_NONE;
USART_InitStruct.OverSampling = LL_USART_OVERSAMPLING_16;
LL_USART_Init(USART6, &USART_InitStruct);
LL_USART_SetTXFIFOThreshold(USART6, LL_USART_FIFOTHRESHOLD_1_8);
LL_USART_SetRXFIFOThreshold(USART6, LL_USART_FIFOTHRESHOLD_1_8);
LL_USART_DisableFIFO(USART6);
LL_USART_ConfigAsyncMode(USART6);
LL_USART_EnableDMAReq_RX(USART6);
LL_USART_EnableIT_IDLE(USART6);
LL_USART_Enable(USART6);
/* USER CODE BEGIN USART6_Init 2 */
LL_DMA_EnableChannel(GPDMA2, LL_DMA_CHANNEL_6);
/* USER CODE END USART6_Init 2 */
========================================================================================
usart_rx_dma_buffer
Only one comes into the buffer and the rest is not filled
plese check config.