打印
[方案相关]

HC32F4A0+DVP+SDRAM数据搬运问题

[复制链接]
956|9
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
可以么|  楼主 | 2025-7-24 14:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 可以么 于 2025-7-24 14:34 编辑

在使用HC32F4A0的DVP外设做图传时,发现使用DMA搬运图像数据至SDRAM上数据会丢失。
图像数据320*240则不会,一旦图像数据超出了某个阈值则会出现数据丢失。
后续使用双路DMA模拟双缓冲解决了该问题,但不完美。
暂定解决方案:
1.DMA1搬运图像数据至MCU内部sram缓冲区A->半满中断设置aos使能DMA2搬运缓冲区A的数据至SRAM内(注HC32的AOS次数只能单次,所以搬运将分成大数据块传输,避免多次中断的占用CPU的处理时间)
2.DMA1搬运图像数据至MCU内部sram缓冲区B->全满中断设置aos使能DMA2搬运缓冲区B的数据至SRAM内(注HC32的AOS次数只能单次,所以搬运将分大数据成块传输,避免多次中断的占用CPU的处理时间)
如此往复;
该解决方案带来的问题:
①占用了DMA1、DMA2,将导致其余需要使用DMA的外设将出现阻塞、dma错误等异常问题
②如一,当全速搬运图片数据时,其余通信外设(如串口、spi等使用dma的外设),因数据传输的不连续性将给应用层带来很多额外的问题

有没有哪位前辈也有过DVP+SDRAM类似经历,是否有更加完美的方案分享,万分感谢
SDRAM时序如下:
    stcDmcInit.stcTimingConfig.u8CASL = 2U;
    stcDmcInit.stcTimingConfig.u8DQSS = 0U;
    stcDmcInit.stcTimingConfig.u8MRD = 2U;      /* tMRD: 2CLK */
    stcDmcInit.stcTimingConfig.u8RAS = 2U;      /* tRAS: min=42ns */
    stcDmcInit.stcTimingConfig.u8RC = 2U;       /* tRC:  min=63ns */
    stcDmcInit.stcTimingConfig.u8RCD_B = 3U;    /* tRCD: min=15ns */
    stcDmcInit.stcTimingConfig.u8RCD_P = 0U;
    stcDmcInit.stcTimingConfig.u8RFC_B = 3U;    /* tRFC: min=63ns */
    stcDmcInit.stcTimingConfig.u8RFC_P = 0U;
    stcDmcInit.stcTimingConfig.u8RP_B = 3U;     /* tRP:  min=15ns */
    stcDmcInit.stcTimingConfig.u8RP_P = 0U;
    stcDmcInit.stcTimingConfig.u8RRD = 1U;      /* tRRD: min=14ns */
    stcDmcInit.stcTimingConfig.u8WR = 2U;       /* tWR:  2CLK */
    stcDmcInit.stcTimingConfig.u8WTR = 1U;
    stcDmcInit.stcTimingConfig.u8XP = 1U;
    stcDmcInit.stcTimingConfig.u8XSR = 3U;      /* tXSR: min=70ns */
    stcDmcInit.stcTimingConfig.u8ESR = 3U;


使用特权

评论回复
沙发
可以么|  楼主 | 2025-7-24 14:37 | 只看该作者
补充:使用单路DMA双缓冲机制可以做到比DVP DMA搬运至SDRAM更高的数据完整性,但分辨率上去了仍然会丢数据,目前所试方案 最完美的就是双路DMA,图像搬运可以做到ov5640的最高分辨率

使用特权

评论回复
板凳
内政奇才| | 2025-7-31 15:58 | 只看该作者
HC32F4A0的DMA在传输大数据量时可能存在性能瓶颈,特别是当数据量超过某个阈值时,DMA可能无法及时完成传输,导致数据丢失。

使用特权

评论回复
地板
classroom| | 2025-7-31 16:04 | 只看该作者
增大内部SRAM缓冲区,如果内部SRAM缓冲区有限,可以考虑采用分块传输的方式,将图像数据分成多个小块进行传输,减少单次传输的数据量。

使用特权

评论回复
5
jcky001| | 2025-7-31 16:04 | 只看该作者
考虑降低图像分辨率或帧率以减少数据量。

使用特权

评论回复
6
jf101| | 2025-7-31 16:50 | 只看该作者
使用HC32F4A0的DVP外设做图传时,发现使用DMA搬运图像数据至SDRAM上数据会丢失。

使用特权

评论回复
7
powerantone| | 2025-7-31 16:59 | 只看该作者
如果内部SRAM缓冲区设置过小,无法容纳大分辨率图像数据,也会导致数据丢失。

使用特权

评论回复
8
stormwind123| | 2025-7-31 17:59 | 只看该作者
DMA通道冲突?

使用特权

评论回复
9
probedog| | 2025-7-31 18:00 | 只看该作者
SDRAM的时序配置如果与DMA传输不匹配,可能导致数据丢失。

使用特权

评论回复
10
cr315| | 2025-7-31 18:05 | 只看该作者
为高速总线分配独立的DMA通道。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

3

帖子

0

粉丝