OpenEdv-开源电子网

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

请教-STM32F407+OV7670+DCMI+DMA 保存VGA(640*480) YUV的一帧图像到SRAM(外扩),我遇到的问题

[复制链接]

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
发表于 2014-3-24 22:36:09 | 显示全部楼层 |阅读模式

如题:我现在用STM32F407+OV7670+DCMI+DMA 要保存VGA(640*480) YUV的一帧图像到SRAM(外扩2M)。

我遇到的问题:

1.DMA传输的 DMA_BufferSize 最大65536个单位(65536*4 < 640*480*2),所以不能像320*240那样一次性就能保存到外扩的SRAM里

2.DCMI为了方便测试我用了DCMI_CaptureMode_SnapShot方式

3.我测试发现,当DCMI需要DMA传输640*480*2个字节,假设DMA的传输DMA_BufferSize=640个字节,那么DMA2_Stream1_IRQHandler 里的  DMA_IT_TCIF1中断就会发生480*2次。 也就是说DMA会按照DMA_BufferSize的大小把DCMI的数据全部传输完成,就是循环的覆盖DMA_Memory0BaseAddr里的数据,我想利用这点,在DMA2_Stream1_IRQHandler 中断里及时把数据copy出去

 

4.我采用DMA_BufferSize=320,(实际每次DMA传输数据时320*4字节),这正好是一行像素的数据,但是在DMA2_Stream1_IRQHandler 里的DMA_IT_TCIF1中断里

   读取这一行的数据时出错,经过我测试后发现:在中断里使用 memcpy函数把320*4=1280字节由DMA缓存区(DMA_Memory0BaseAddr )复制到其他SRAM  数据区时引起中断函数占用超时,使DMA停止工作。之所得到这个结论是因为我用memcpy复制数据量很少时,比如100个字节,这是DMA_IT_TCIF1的中断就能持续进行(当然数据没有读完整100<1280).

 

5.现在怎么把DMA的数据及时的copy出来这就是问题。

 

6.我发现设置DCMI_ITConfig(DCMI_IT_LINE, ENABLE);时,即使采用DCMI_CaptureMode_SnapShot方式,当一帧图像都传输完成时,DCMI_IRQHandler里仍然持续有DCMI_IT_LINE

  中断发生,这是这么回事?但是DCMI_IT_FRAME信号就一次(前提是开启了这个中断)。

7.我觉得DCMI的DCMI_IT_LINE中断和DMA没有关系,各是各的。DMA只是把数据都传输出来而已。

8.有人说DMA用双缓冲,这个好像很难哦,还有说在DCMI_IT_LINE中断里copy DMA的buffer,我没测试成功

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

11

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2015-7-30
在线时间
50 小时
发表于 2016-6-14 20:15:28 | 显示全部楼层
楼主代码能分享参考一下吗
回复 支持 1 反对 0

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-24 23:21:03 | 显示全部楼层

我测试了下,还是不行,

不明白为什么设置为1,设置为1不就是一直在那一个字节上循环覆盖吗?                                        

回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-24 23:03:02 | 显示全部楼层
将DMA的目标地址直接设置为你的外部SRAM地址,然后设置摄像头的DMA传输长度为1.
就搞定了。
//DCMI DMA配置
void DCMI_DMA_Init(void)

RCC->AHB1ENR|=1<<22; //DMA2时钟使能 
  while(DMA2_Stream1->CR&0X01);//等待DMA2_Stream1可配置 
DMA2->LIFCR|=0X3D<<6*1; //清空通道1上所有中断标志
DMA2_Stream1->FCR=0X0000021;//设置为默认值

DMA2_Stream1->AR=(u32)&DCMI->DR; //外设地址为CMI->DR
DMA2_Stream1->M0AR=(u32)&(LCD->LCD_RAM);//LCD_RAM 作为目标地址
DMA2_Stream1->NDTR=1; //传输长度为1
DMA2_Stream1->CR=0; //先全部复位CR寄存器值  
DMA2_Stream1->CR|=0<<6; //外设到存储器模式 
DMA2_Stream1->CR|=1<<8; //循环模式
DMA2_Stream1->CR|=0<<9; //外设非增量模式
DMA2_Stream1->CR|=0<<10; //存储器非增量模式
DMA2_Stream1->CR|=2<<11; //外设数据长度:32位
DMA2_Stream1->CR|=1<<13; //存储器数据长度:16位
DMA2_Stream1->CR|=2<<16; //高优先级
DMA2_Stream1->CR|=0<<21; //外设突发单次传输
DMA2_Stream1->CR|=0<<23; //存储器突发单次传输
DMA2_Stream1->CR|=1<<25; //通道1 DCMI通道 
DMA2_Stream1->FCR|=1<<2; //FIFO模式
DMA2_Stream1->FCR|=3<<0; //是用全FIFO 
}

把上面的LCD->LCD_RAM改为你的:外部SRAM存放摄像头数据的首地址就OK了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-24 23:11:37 | 显示全部楼层
哦,我试试,多谢!
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-24 23:13:09 | 显示全部楼层

                                             我的结构体的设置对不对?

DMA_DeInit(DMA2_Stream1);
DMA_InitStructure.DMA_Channel = DMA_Channel_1;  
DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;
DMA_InitStructure.DMA_Memory0BaseAddr = (uint32_t)DMA_BUF ;
DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
DMA_InitStructure.DMA_BufferSize = 1;//76800;(这里设置为1?)
DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;
DMA_InitStructure.DMA_Priority = DMA_Priority_High;
DMA_InitStructure.DMA_FIFOMode = DMA_FIFOMode_Enable;
DMA_InitStructure.DMA_FIFOThreshold = DMA_FIFOThreshold_Full;
DMA_InitStructure.DMA_MemoryBurst = DMA_MemoryBurst_Single;
DMA_InitStructure.DMA_PeripheralBurst = DMA_PeripheralBurst_Single;  
DMA_Init(DMA2_Stream1, &DMA_InitStructure);

DMA_ITConfig(DMA2_Stream1, DMA_IT_TC, ENABLE);

回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2014-3-25 00:53:58 | 显示全部楼层
回复【5楼】sfraim:
---------------------------------
这里DMA仅仅负责搬运。
不停的将DCMI->DR的数据,搬运到目标地址,一次搬运长度是1.
如果你用外部SRAM,确实应该用目标地址自增,这个忘记了。。。
LCD是可以自己地址自增的。。。SRAM得你设置地址自增才行。
然后传输完一帧要中断,重新设置传输量。
中断你可以采用DCMI的帧中断,到里面再次去设置DMA。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-25 07:59:01 | 显示全部楼层
回复【楼主位】sfraim:
---------------------------------
3.我测试发现,当DCMI需要DMA传输640*480*2个字节,假设DMA的传输DMA_BufferSize=640个字节,那么DMA2_Stream1_IRQHandler 里的  DMA_IT_TCIF1中断就会发生480*2次。 也就是说DMA会按照DMA_BufferSize的大小把DCMI的数据全部传输完成,就是循环的覆盖DMA_Memory0BaseAddr里的数据,我想利用这点,在DMA2_Stream1_IRQHandler 中断里及时把数据copy出去

DMA如果传输DMA_BufferSize=640个字节,只会在640字节全部完成的时候产生一次传输完成中断。DMA_BufferSize只是定义了一次需要传输的数据个数。
DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_HalfWord;
这三句似乎有问题,外设(DCMI)的数据接口是32位吗?外部SRAM数据接口是16位吗?
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-25 10:02:32 | 显示全部楼层
回复【7楼】ricefat:
---------------------------------
这三句没问题,经过测试数据正常
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-25 10:04:38 | 显示全部楼层

回复【6楼】正点原子:
---------------------------------
“中断采用DCMI的帧中断,到里面再次去设置DMA。 ”我觉得恐怕不行,

1.因为DCMI不会给我重新设置DMA的时间,它会一直以同样的速度持续发数据,我重新设置DMA会不会导致数据丢失呢

2.帧中断是一副图像完全传输完成的之后的中断,这个超出了DMA的最大传输数量,要选也至少要选DCMI_IT_LINE行中断 ,但是在DCMI_IT_LINE中断里复制数据也有问题,因为你复制的时候DMA也在不断的向缓存里  写数据呢      

还是没解决,发愁。。。。。。。。                               

回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-25 11:00:57 | 显示全部楼层
回复【8楼】sfraim:
---------------------------------
没出现问题应该也只是数据对齐的原因。我只是觉得你这么写不够严谨
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-25 11:02:27 | 显示全部楼层
回复【9楼】sfraim:
---------------------------------
双缓冲就可以了吧,一个缓冲DCIM数据的同时,另外一个缓冲取数据。
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-25 11:04:15 | 显示全部楼层
回复【9楼】sfraim:
---------------------------------
要不然在帧中断的时候多次DMA传输?每次传输的外设起始地址不同。
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-25 11:13:56 | 显示全部楼层
回复【11楼】ricefat:
---------------------------------
1、DMA双缓冲如何实现呢?
2、在LINE中断中多次传输,每次传输的地址不同,这个测试了,不成功
    这个这么实现的:
    我让DMA每次传输数据2行的像素,然后在DCMI的LINE中断中,每次复制1行,而且复制的起点是交替的,假设DMA正在传输奇数行时,我复制偶数行,如此这般,但是得到的数据是错误的,我不明白DCMI_IT_LINE中断到底是个什么意思?
我测试采用DCMI_CaptureMode_SnapShot方式的时候,DCMI_IT_FRAME信号就一次,而DCMI_IT_LINE中断持续的有。。。
回复 支持 反对

使用道具 举报

3

主题

2178

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
3323
金钱
3323
注册时间
2013-7-19
在线时间
195 小时
发表于 2014-3-25 13:44:33 | 显示全部楼层
回复【13楼】sfraim:
---------------------------------
原先在WAV播放里看过双缓冲。
从SD卡出来的数据填buffer1,填满后buffer1通过DMA到DAC的同时,把SD卡的数据填buffer2,填满后等待buffer1数据传输完毕再把buffer2的数据DMA到DAC,同时又把SD卡的数据填到buffer1.如此交替。
利用DMA传输过程不需要CPU参与,实现数据的无缝传输。
回复 支持 反对

使用道具 举报

18

主题

61

帖子

0

精华

初级会员

Rank: 2

积分
134
金钱
134
注册时间
2014-3-24
在线时间
5 小时
 楼主| 发表于 2014-3-25 16:08:44 | 显示全部楼层
我已经解决了,感谢 "正点原子","ricefat",两位
我的方法和"正点原子"说的一样,递增DMA的缓存地址,ricefat的双缓冲也是可以的,但不了解如何设置,就没有继续做。
总结一下:
 DMA传输过程中,试图使用 memcpy从DMA缓存区域里copy数据,这是不行的,因为DMA占用了总线,memcpy函数也要占用总线的,这就冲突了,如果DMA发生延迟,会是DCMI的数据无法实时的正确接收。
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2014-4-2
在线时间
0 小时
发表于 2014-4-2 20:04:53 | 显示全部楼层
回复【15楼】sfraim:
---------------------------------
楼主,我也有类似问题,可否把你的配置发给我参考下,谢谢!!
回复 支持 反对

使用道具 举报

21

主题

134

帖子

0

精华

高级会员

Rank: 4

积分
624
金钱
624
注册时间
2014-11-11
在线时间
161 小时
发表于 2015-3-2 19:53:18 | 显示全部楼层
回复【15楼】sfraim:
---------------------------------
回复【16楼】zhangmh1336:
---------------------------------
大侠们   能不能让我参考一下你们的配置   多谢
回复 支持 反对

使用道具 举报

1

主题

4

帖子

0

精华

新手入门

积分
28
金钱
28
注册时间
2015-3-8
在线时间
0 小时
发表于 2015-3-14 20:36:22 | 显示全部楼层
回复【6楼】正点原子:
---------------------------------
原子哥,帧中断里面需要如何再次设定DMA呢?
把地址存储器地址回归吗?
长路漫漫,上下求索
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165475
金钱
165475
注册时间
2010-12-1
在线时间
2115 小时
发表于 2015-3-14 22:51:28 | 显示全部楼层
回复【18楼】bufans:
---------------------------------
修改DMA的地址寄存器
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-12-1
在线时间
0 小时
发表于 2015-5-6 19:07:37 | 显示全部楼层
楼主你好。
我现在再用STM32F407接收OV7670的数据。用的是DCMI接口,基本和楼主一样,只是我没有用SRAM,而是程序中一行一行的接收然后立刻处理,不用把整帧的图像存起来。现在用串口打印DCMI->DR是正常的,有有效数据,说明DCMI已经正常工作。DMA我设置的是把数据从DCMI->DR传输到一个数组uint32_t Line_Data[320]中,现在用串口打印Line_Data,发现输出数据全是0. 断点调试时发现DMA2_Stream1_IRQHandler这个中断函数只能进去一次,之后就再也进不去了。在DMA2_Stream1_IRQHandler中,我已经清除了中断标位:DMA_ClearITPendingBit(DMA2_Stream1,DMA_IT_TCIF1); 。

不知道这是什么原因?是否是我的DMA配置错误?

另外我也使用了DCMI的行中断和帧中断,是否如楼主所说,DCMI的中断和DMA 的中断是互相独立的?
回复 支持 反对

使用道具 举报

2

主题

9

帖子

0

精华

新手上路

积分
37
金钱
37
注册时间
2014-12-1
在线时间
0 小时
发表于 2015-5-6 19:08:24 | 显示全部楼层
回复【20楼】zacharywang:
---------------------------------
盼望原子哥如果看到了的话也能给予解答。
回复 支持 反对

使用道具 举报

2

主题

17

帖子

0

精华

新手上路

积分
45
金钱
45
注册时间
2015-11-10
在线时间
0 小时
发表于 2015-11-20 11:07:17 | 显示全部楼层
回复【15楼】sfraim:
---------------------------------
楼主是怎么解决的啊。我也是同样问题,想把像素值取出来分析。但是DMA一轮最大传输65535,我的像素是800*600=480000个像素点,在sram中设置了接受数组,但是如果buffersize不论设置多大,内存地址自增的情况下,一直是在被循环覆盖的。
如果开行中断,希望在里面把每一行的数据读取出来,也不可行,发现行中断是持续的进入的,而且在读的时候缓冲区应该是仍然在网里面写数据,所以读出来即使个数对,数据应该也是错的。
楼主说用地址自增解决了问题,不知道是什么意思。盼望分享一下。
回复 支持 反对

使用道具 举报

22

主题

129

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
325
金钱
325
注册时间
2015-6-23
在线时间
68 小时
发表于 2016-3-28 10:38:46 | 显示全部楼层
我也在做这个图像获取,但我用的是DMA双缓存到外部SRAM,但我检测外部SRAM 数据变动时发现获取的数据比一帧的数据多,而且还随双缓存的数组大小而变化,一直查不出错误出在哪里,楼主是否可以把你的代码共享给我研究一下,不胜感激!
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-6-13
在线时间
8 小时
发表于 2016-6-13 13:14:25 | 显示全部楼层
正点原子 发表于 2015-3-14 22:51
回复【18楼】bufans:
---------------------------------
修改DMA的地址寄存器

原子哥给个DCMI->DMA->SRAM->LCD的扩展实验吧
回复 支持 反对

使用道具 举报

11

主题

43

帖子

0

精华

初级会员

Rank: 2

积分
181
金钱
181
注册时间
2015-7-30
在线时间
50 小时
发表于 2016-6-25 16:37:52 | 显示全部楼层
楼主代码能分享一下吗?我最近也在做这个
回复 支持 反对

使用道具 举报

0

主题

5

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2016-6-13
在线时间
8 小时
发表于 2016-6-29 15:33:54 | 显示全部楼层
正点原子 发表于 2014-3-24 23:03
将DMA的目标地址直接设置为你的外部SRAM地址,然后设置摄像头的DMA传输长度为1.
就搞定了。
//DCMI&nbsp;DM ...

不行啊,原子哥,内存地址自增也设置了,可是它还是一直只刷新SRAM第一个地址的数据,
回复 支持 反对

使用道具 举报

2

主题

15

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1402
金钱
1402
注册时间
2017-1-18
在线时间
10 小时
发表于 2017-1-24 17:55:12 来自手机 | 显示全部楼层
有谁用的407vet6,dcmi一直调不通
回复 支持 反对

使用道具 举报

0

主题

6

帖子

0

精华

新手入门

积分
16
金钱
16
注册时间
2017-3-27
在线时间
2 小时
发表于 2017-3-27 16:19:09 | 显示全部楼层
能分享 一下代码吗
回复 支持 反对

使用道具 举报

6

主题

45

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
312
金钱
312
注册时间
2016-12-3
在线时间
46 小时
发表于 2017-6-21 20:04:53 | 显示全部楼层
楼主怎么解决的?能说具体点吗?地址自增DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;你不是已经设置为地址自增了吗?
回复 支持 反对

使用道具 举报

10

主题

59

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
360
金钱
360
注册时间
2017-3-2
在线时间
39 小时
发表于 2018-8-7 11:29:45 | 显示全部楼层
sfraim 发表于 2014-3-25 16:08
我已经解决了,感谢&nbsp;"正点原子","ricefat",两位
我的方法和"正点原子"说的一样,递增DMA的缓存地址, ...

楼主能分享一下代码吗?我也在搞7670+407+DCMI,没调通
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

初级会员

Rank: 2

积分
85
金钱
85
注册时间
2018-7-17
在线时间
13 小时
发表于 2018-9-21 09:41:28 | 显示全部楼层
楼主能分享一下代码吗?我也在搞7670+STM32F407
回复 支持 反对

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2018-9-21 16:29:21 | 显示全部楼层
OV7670 没有VGA模式, 任何中断都不可能发生, 但帧中断一定有;
;
这有个方法 http://www.openedv.com/forum.php?mod=viewthread&tid=277925
回复 支持 反对

使用道具 举报

18

主题

323

帖子

1

精华

高级会员

Rank: 4

积分
935
金钱
935
注册时间
2017-12-11
在线时间
196 小时
发表于 2018-9-21 16:35:46 | 显示全部楼层
ricefat 发表于 2014-3-25 07:59
回复【楼主位】sfraim:
---------------------------------
3.我测试发现,当DCMI需要DMA传输640*480*2个字 ...

认为这点有错: DMA_InitStructure.DMA_PeripheralDataSize = DMA_PeripheralDataSize_Word;
;
;
说明你不懂, 什么叫DCMI 接口, 什么叫DCMI内存接口, 什么叫内存接口, 以及DCMI内存接口至内存接口是否存在搬运方式, 以及引入DMA 是否DMA也有 DMA搬运接口以及DMA的内存接口;
DMA有两个搬运接口, 两个DMA内存接口, 中间两个搬运接口中间有个载体FIFO;
;
设备内存接口到内存, 中间有个搬运方式, 自个是自动的, 可以是如32->16=2次突发, 32->8=4次突发, 这样的操作;
;
提点一下, 无它意
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

新手上路

积分
24
金钱
24
注册时间
2018-10-29
在线时间
7 小时
发表于 2020-4-3 15:14:56 | 显示全部楼层
正点原子 发表于 2014-3-25 00:53
回复【5楼】sfraim:
---------------------------------
这里DMA仅仅负责搬运。
不停的将DCMI-&gt;DR的数据 ...

原子哥,怎样实现SRAM地址自增啊?
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-5-2 22:19

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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