目的:
通过网络将,摄像头采集的图像传到电脑上并保存!
过程:
首先,通过DMA将DCMI的摄像头数据直接传送到SRAM,然后通过TCP Sever将一帧图像数据发送到电脑,并用网络调试助手接收并保存数据。
当然在DMA将数据发送到SRAM后,又通过FSMC将此数据发送到TFT屏显示。
问题:
首先,将DCMI数据经SRAM过渡一下后,再到TFT屏显示,出现了花屏,如下图所示,
2,将SRAM数据通过网络发送到电脑并保存后。利用matlab恢复此数据得到的图像,效果也有问题,但要比TFT屏显示的效果好,如下图所示
明显由matlab恢复出的图像,有好多斑点,好像类似花屏!
请各位大神,帮忙掌掌眼,问题在哪里呢?有什么解决办法呢?谢谢!(出来现在这效果已经折腾我快一个月了!)
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
因为我设置的DMA buffer为 DMA_DoubleBufferModeConfig(DMA2_Stream1, Bank1_SRAM3_ADDR+(0x4b00*4),DMA_Memory_0); //DMA double buffer configure
双缓存,所以,可以在缓存同时对数据操作,应该不会被覆盖。
这个花屏问题我通过修改FSMC的设置,解决了!
p.FSMC_AddressSetupTime = 0;
p.FSMC_AddressHoldTime = 0;
p.FSMC_DataSetupTime = 4;
// p.FSMC_AddressSetupTime = 1;
// p.FSMC_AddressHoldTime = 0;
// p.FSMC_DataSetupTime = 2;
上面注释的部分为原来FSMC的设置,改为上面的参数后,花屏问题解决了!
谢谢,原子的指教!
为什么,改了一下FSMC的这几个参数就没有花屏了呢?
揭秘:
右击,去看了一下这几个参数的definition,如下:
uint32_t FSMC_AddressSetupTime; /*!< Defines the number of HCLK cycles to configure
the duration of the address setup time.
This parameter can be a value between 0 and 0xF.
@note This parameter is not used with synchronous NOR Flash memories. */
uint32_t FSMC_AddressHoldTime; /*!< Defines the number of HCLK cycles to configure
the duration of the address hold time.
This parameter can be a value between 0 and 0xF.
@note This parameter is not used with synchronous NOR Flash memories.*/
uint32_t FSMC_DataSetupTime; /*!< Defines the number of HCLK cycles to configure
the duration of the data setup time.
This parameter can be a value between 0 and 0xFF.
@note This parameter is used for SRAMs, ROMs and asynchronous multiplexed NOR Flash memories. */
FSMC_AddressSetupTime,用来配置FSMC地址建立时间的长短;
FSMC_AddressHoldTime,用来配置FSMC地址保持时间的长短;
FSMC_DataSetupTime,用来配置数据建立时间的长短。
而STM32处理器正是通过FSMC(flexible static memory controller,可变静态存储控制器)总线来访问SRAM的,所以,FSMC的正确配置才能保证发出正确的地址、控制信号类型来匹配信号的速度。
仔细观察对FSMC配置的修改,只改了FSMC_AddressSetupTime=0和FSMC_DataSetupTime=4,也就是把FSMC地址建立时间缩短了和数据建立时间变长了,后来我又改为FSMC_AddressSetupTime=1而FSMC_DataSetupTime=4,即只把数据建立时间变长了,FSMC地址建立时间跟原来一样,结果跑了一下程序,花屏照样没有,说明之前花屏问题是因为数据建立的时间太短了,造成了像原子说出现了数据的覆盖吧!
是不是我分析的这样呢!请各位大神指正!谢谢!
---------------------------------
你看看你SRAM的访问周期是多少的?我用的62WV51216,是55ns的,一个HCLK是6ns,必须设置9才可以.
一周热门 更多>