硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4351|回复: 5
收起左侧

[DMA] STM32H7 DCMI DMA传输错误

[复制链接]

2

主题

3

回帖

38

积分

新手上路

积分
38
发表于 2018-8-14 05:03:48 | 显示全部楼层 |阅读模式
最近在尝试用NUCLEO板子读取DCMI的数据,现在DCMI的HSYNC和VSYNC中断都能正常进入,但是DMA传输会出错。 调试发现DMA的NDTR减少了1,然后TEIF被置1了,也就是在传输第一个数据的时候就出现了传输错误。

工程文件是用CubeMX生成的,MCO2设置成了10MHz的XCLK输出,PCLK和HSYNC,VSYNC似乎都没有问题。程序也没有使用缓存,缓冲区对齐也尝试过了,还是会有同样的问题。看手册说DMA传输错误是下面这几种情况,但还是找不到问题在哪。

The transfer error interrupt flag (TEIF) is set when:
• A bus error occurs during a MDMA read or a write access
• The address alignment does not correspond to the data size
• The block size is not a multiple of the data size (for source and/or destination): this error is activated on the last transfer and the error address points to the last transfer (which cannot be done)

各位有遇到过这种错误吗?

DCMI_DMA.zip (1.73 MB, 下载次数: 106)
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2018-8-14 09:37:28 | 显示全部楼层
H7的摄像头接口我还没有测试过,帮你看了下你的现在的工程。

先把你的DCMI的目标地址空间改下,改成使用D2域SRAM1,SRAM2等。你现在的定义是用的TCM。使用DMA1和DMA2是无法到这个空间的,当前MDMA可以使用TCM空间。

看了你的程序里面有个这种方式的定义
ALIGN_32BYTES(__attribute__((section(".RAM_D2"))) uint32_t buff[512]);

这个是建立在你设置了xxx.SCT分散加载文件,指定RAM_D2的地址空间。
回复

使用道具 举报

2

主题

3

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2018-8-15 03:15:35 | 显示全部楼层
感谢指点!问题已经解决了。找到了一份STM32H7的DMA传输错误相关的FAQ,希望对大家有帮助。
https://st-microelectronics.jive ... ing-stm32h7-devices
回复

使用道具 举报

2

主题

3

回帖

38

积分

新手上路

积分
38
 楼主| 发表于 2018-8-15 03:29:06 | 显示全部楼层
本帖最后由 b3377871 于 2018-8-15 03:32 编辑

另外还有一个关于MCO的坑要提醒一下大家,用PLL2或者PLL3输出到MCO的时候只有打开其他用到这些PLL的外设PLL才会被激活,在这个工程里用了PLL2输出到MCO2,所以加入了
  1.   PeriphClkInitStruct.PeriphClockSelection = RCC_PERIPHCLK_SAI1;
  2.   PeriphClkInitStruct.Sai1ClockSelection = RCC_SAI1CLKSOURCE_PLL2;
复制代码

来激活PLL2。
这个是目前CubeMX的bug,以后的版本应该会修复这个问题。
https://st-microelectronics.jive ... n-1-output-on-pll23
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2018-8-15 09:24:14 | 显示全部楼层
b3377871 发表于 2018-8-15 03:15
感谢指点!问题已经解决了。找到了一份STM32H7的DMA传输错误相关的FAQ,希望对大家有帮助。
https://st-mi ...

回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106978
QQ
发表于 2018-8-15 09:24:31 | 显示全部楼层
b3377871 发表于 2018-8-15 03:29
另外还有一个关于MCO的坑要提醒一下大家,用PLL2或者PLL3输出到MCO的时候只有打开其他用到这些PLL的外设PLL ...

非常感谢告知这个情况
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-12 22:19 , Processed in 0.197015 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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