关于STM32F407摄像头采集保存SD卡的问题,请各位大神和原子哥指点一下

2019-07-21 02:06发布

原子哥,我在做STM32F4摄像头采集然后WIFI传输的~我们是分工的然后现在我做摄像头采集部分,我们现在是摄像头采集了显示在LCD上,然后把LCD写到SD卡上。 

因为老师说大概10fps就可以,所以我是想一秒在SD卡上存10张图片,然后我同学读再传这样。 

但现在我遇到的问题是,我用TIM定时器设置定时,然后到时间就disable DCMI然后保存一张再ENABLE DCMI capture这样。但我如果把定时设置成0.1秒的话它实际并没有存10张,但我如果设置成1s,10s,这样就可以。是不是这种方法达不到这个速度啊? 

我用的是SDIO传到SD卡的,我感觉也不是SDIO速度的问题啊~
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
5条回答
njpanyi
2019-07-21 12:18
回复【2楼】正点原子:
---------------------------------
是同一个型号的,不过大家分开做的。。。
ov9655好像只能存BMP的~我用的320*240 16位的~
我如果直接采摄像头数据的话,是不是就把下面那段的这两句换成:
DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;这句换成一个buffer
DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable; 然后这个enable这样?

其实用LCD主要是因为我还有另一个同学采集温度湿度,然后显示在LCD上的话,可以和图像一起传输这样子。
然后想请问读LCD的话不靠谱是因为受到什么的影响呢?原因在哪里?
不好意思问题有点多谢谢原子哥回答哦~~~



  DMA_InitStructure.DMA_Channel = DMA_Channel_1;  
  DMA_InitStructure.DMA_PeripheralBaseAddr = DCMI_DR_ADDRESS;
  DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;
  DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralToMemory;
  DMA_InitStructure.DMA_BufferSize = 1;
  DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;
  DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Disable;
  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;

一周热门 更多>