OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3220|回复: 5

问题求助:STM32 H7 DMA Transfer Error

[复制链接]

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2018-10-26
在线时间
8 小时
发表于 2018-10-26 11:47:13 | 显示全部楼层 |阅读模式
1金钱
串口dma发送,cubemx生成程序,HAL(1.3版本)

串口一发送就会进入错误管理中断,然后自己好像确实不会分析dma出错的原因,所以来求助。

我确定触发的中断标志位:DMA_FLAG_TEIF3_7

dma传输错误中断

dma传输错误中断

cubemx dma

cubemx dma

时钟树配置

时钟树配置

最佳答案

查看完整内容[请看2#楼]

因为STM32H7的总线变得复杂了,然后dma传输方式从内存到外设的时候没有注意到发送缓存是分配到了DTCM(mapped at address 0x2000 0000),然后在.map文件当中找到的变量地址确实是分配到了这个储存区域,然后dma发送移植是transfer error。需要使用绝对定位指令分配到D2 domain区域,dma发送功能正常。 也是因为STM32H7的dma不能够访问DTCM造成的。这个提供了一个DMA传输错误解决的思路就是首先确定变量地址DMA是否能够到达,若是 ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2018-10-26
在线时间
8 小时
 楼主| 发表于 2018-10-26 11:47:14 | 显示全部楼层
因为STM32H7的总线变得复杂了,然后dma传输方式从内存到外设的时候没有注意到发送缓存是分配到了DTCM(mapped at address 0x2000 0000),然后在.map文件当中找到的变量地址确实是分配到了这个储存区域,然后dma发送移植是transfer error。需要使用绝对定位指令分配到D2 domain区域,dma发送功能正常。

也是因为STM32H7的dma不能够访问DTCM造成的。这个提供了一个DMA传输错误解决的思路就是首先确定变量地址DMA是否能够到达,若是不能够,需要使用绝对定位将变量分配至能够到达的储存区域。

__attribute__ ((at(0x30000000)));//D2 domain 区域从0x30000000 开始。修改之后功能正常


/**
  * @brief  USART1串口打印(结合HAL_UART_Transmit_DMA的重定义)
  * @param  *fmt,...   要打印的数据内容,用法类似printf
  * @retval void
  */
void u1_printf(char* fmt,...)
{  
     
    static __align(8) uint8_t USART1_TX_BUF[512] __attribute__ ((at(0x30000000)));
    va_list ap;
    va_start(ap,fmt);
    vsnprintf((char*)USART1_TX_BUF,512,fmt,ap);
    va_end(ap);
    if(HAL_UART_Transmit_DMA(&huart1,USART1_TX_BUF,strlen((const char*)USART1_TX_BUF)) == HAL_OK)usart1dma_tx_flag = 0;
}
41b94d0b797a30ce4f79621540dc128a_image2018-10-30_17-1-8_version=1&modification.png
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2018-10-26
在线时间
8 小时
 楼主| 发表于 2018-10-26 11:48:27 | 显示全部楼层
请各位前辈,提供一些分析dma错误的思路,感激
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2018-10-27 02:39:06 | 显示全部楼层
帮顶
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2018-10-26
在线时间
8 小时
 楼主| 发表于 2018-10-30 10:17:28 | 显示全部楼层
不知道这个是不是相对应的解决方法:https://community.st.com/s/question/0D50X00009XkeWdSAJ/stm32h743-nucleo-dma-transfer-error
回复

使用道具 举报

1

主题

5

帖子

0

精华

新手上路

积分
40
金钱
40
注册时间
2018-10-26
在线时间
8 小时
 楼主| 发表于 2018-10-30 17:13:31 | 显示全部楼层
因为对于STM32储存器组织还不是很熟悉,还需要继续深入学习。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-21 10:07

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表