你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

关于U575RI的GPDMA_LINKED_list模式的求助

[复制链接]
szyang 提问时间:2025-2-13 19:54 / 已解决
使用HAL_DCMI_Start_DMA(&g_dcmi_handle, DCMI_MODE_CONTINUOUS, (uint32_t)p_jpeg_data_buf, 15*1024*4);
启动后,只有链表1、2生效,链表3无报错但是无效

/**

* @brief  DMA Linked-list DCMIQueue configuration
* @param  None
* @retval None
  */
  HAL_StatusTypeDef MX_DCMIQueue_Config(void)
  {
  HAL_StatusTypeDef ret = HAL_OK;
  /* DMA node configuration declaration */
  DMA_NodeConfTypeDef pNodeConfig;

/* Set node configuration */
pNodeConfig.NodeType = DMA_GPDMA_LINEAR_NODE;//DMA_GPDMA_2D_NODE;//GPDMA二维寻址
pNodeConfig.Init.Request = GPDMA1_REQUEST_DCMI;
pNodeConfig.Init.BlkHWRequest = DMA_BREQ_SINGLE_BURST;//DMA传输硬件协议,单个传输或者块传输
pNodeConfig.Init.Direction = DMA_PERIPH_TO_MEMORY;//数据搬运方向,外设到内存
pNodeConfig.Init.SrcInc = DMA_SINC_FIXED;//外设地址非自增
pNodeConfig.Init.DestInc = DMA_DINC_INCREMENTED;//内存地址自增
pNodeConfig.Init.SrcDataWidth = DMA_SRC_DATAWIDTH_WORD;//32位
pNodeConfig.Init.DestDataWidth = DMA_DEST_DATAWIDTH_WORD;
pNodeConfig.Init.SrcBurstLength = 1;
pNodeConfig.Init.DestBurstLength = 1;
pNodeConfig.Init.TransferAllocatedPort = DMA_SRC_ALLOCATED_PORT0|DMA_DEST_ALLOCATED_PORT0;
pNodeConfig.Init.TransferEventMode = DMA_TCEM_EACH_LL_ITEM_TRANSFER;//DMA_TCEM_BLOCK_TRANSFER;//传输完成事件产生方式
pNodeConfig.RepeatBlockConfig.RepeatCount = 1;//通道重复次数
pNodeConfig.RepeatBlockConfig.SrcAddrOffset = 0;
pNodeConfig.RepeatBlockConfig.DestAddrOffset = 0;
pNodeConfig.RepeatBlockConfig.BlkSrcAddrOffset = 0;
pNodeConfig.RepeatBlockConfig.BlkDestAddrOffset = 0;
pNodeConfig.TriggerConfig.TriggerPolarity = DMA_TRIG_POLARITY_MASKED;//电平边沿,无
pNodeConfig.DataHandlingConfig.DataExchange = DMA_EXCHANGE_NONE;//不开启,字节序交换
pNodeConfig.DataHandlingConfig.DataAlignment = DMA_DATA_RIGHTALIGN_ZEROPADDED;//如果源的数据和目标内存数据宽度不一致,字节对齐的方式
pNodeConfig.SrcAddress = 0;
pNodeConfig.DstAddress = 0;
pNodeConfig.DataSize = 0;

/* Build DCMINode1 Node */
ret |= HAL_DMAEx_List_BuildNode(&pNodeConfig, &DCMINode1);
/* Insert DCMINode1 to Queue */
ret |= HAL_DMAEx_List_InsertNode_Tail(&DCMIQueue, &DCMINode1);

//        printf("DCMIQueue.State = %u \r\n", DCMIQueue.State);
//        printf("DCMIQueue.ErrorCode = %u \r\n", DCMIQueue.ErrorCode);
//        printf("DCMIQueue.NodeNumber = %u \r\n", DCMIQueue.NodeNumber);
/******************************************************************/
pNodeConfig.SrcAddress = (uint32_t)p_jpeg_data_buf + 15*1024*4*1;
pNodeConfig.DstAddress = (uint32_t)&g_dcmi_handle.Instance->DR;
pNodeConfig.DataSize = 15*1024*4;

/* Build DCMINode2 Node */
ret |= HAL_DMAEx_List_BuildNode(&pNodeConfig, &DCMINode2);
/* Insert DCMINode2 to Queue */
ret |= HAL_DMAEx_List_InsertNode_Tail(&DCMIQueue, &DCMINode2);
/******************************************************************/
pNodeConfig.SrcAddress = (uint32_t)p_jpeg_data_buf + 15*1024*4*2;
pNodeConfig.DstAddress = (uint32_t)&g_dcmi_handle.Instance->DR;
pNodeConfig.DataSize = 15*1024*4;

/* Build DCMINode3 Node */
ret |= HAL_DMAEx_List_BuildNode(&pNodeConfig, &DCMINode3);
/* Insert DCMINode3 to Queue */
ret |= HAL_DMAEx_List_InsertNode_Tail(&DCMIQueue, &DCMINode3);

ret |= HAL_DMAEx_List_SetCircularModeConfig(&DCMIQueue, &DCMINode1);//GPDMA链表开启循环模式
//printf("ret2 = %d \r\n", ret);//返回值是0,hal_ok
return ret;
}
收藏 评论3 发布时间:2025-2-13 19:54

举报

3个回答
xmshao 回答时间:2025-2-14 10:18:01
我看你用的gpdma的2D 模式和链表模式,之前有碰到类似问题,即1个链表中多个节点,后面节点不工作的情况。


最终发现是配置方面的疏忽导致的。此刻没法一眼指出你的问题在哪。


这里给你分享两篇有关GPDMA 2D模式和链表应用的文章,供参考。其中一篇分享文章是
基于STM32H5的,这个地方H5和U5是一样的。

STM32U5 ADC+TIM+DMA 2D传输应用演示
基于STM32H563 USART演示DMA链表功能
szyang 回答时间:2025-2-25 16:49:10

xmshao 发表于 2025-2-14 10:18
我看你用的gpdma的2D 模式和链表模式,之前有碰到类似问题,即1个链表中多个节点,后面节点不工作的情况。
...

感谢,已经解决了。确实是配置上的问题。HAL_DCMI_Start_DMA的第三个参数会影响到链表链接,如果大于65535,会自动控制链表。

xmshao 回答时间:2025-2-26 08:00:23

szyang 发表于 2025-2-25 16:49</p>
<p>感谢,已经解决了。确实是配置上的问题。HAL_DCMI_Start_DMA的第三个参数会影响到链表链接,如果大于 ...

[md]解决就好~!

谢谢反馈~

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版