Skip to main content
sonhai26988
Associate III
June 15, 2012
Question

How to get and store image from camera to sd card.

  • June 15, 2012
  • 5 replies
  • 4833 views
Posted on June 15, 2012 at 05:05

Hi everyone.

Now I'm playing with DCMI module, with stm32220g-eval board.

The demo code of ST using DMA to get data and send direct to LCD.

I want to get data of 1 frame, and store to sd card.

But I'm not clear about DMA process, in demo code, the configuration is:

  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;

Why buffersize=1? How many byte of 1 frame?

Do you have any idea?

Thanks and best regards. 

#dcmi #camera #stm3220g-eval #image
This topic has been closed for replies.

5 replies

alok472
Associate
June 15, 2012
Posted on June 15, 2012 at 05:46

Take the image to RAM instead of LCD (FSMC_LCD_ADDRESS) and then save to uSD card. If you want this image to be read by USB then you need file system to store the image.

Andrew Neil
Super User
June 15, 2012
Posted on June 15, 2012 at 19:57

''If you want this image to be read by USB then you need file system to store the image''

No, that's not true.

There are various ways to transfer data over USB - not all of them require a file system.
A complex system that works is invariably found to have evolved from a simple system that worked.A complex system designed from scratch never works and cannot be patched up to make it work.
sonhai26988
Associate III
June 18, 2012
Posted on June 18, 2012 at 04:49

Thanks akolm and neil.andrew for your reply.

But I want to ask how to copy this data to RAM, and store in SD card?

The sample code just send data from DCMI address to LCD_FSMC_address?

I want to know how to catch frame data? I don't know exact how many bytes come?

http://blog.frankvh.com/2011/08/19/stm32f2xx-digital-camera-interface-dcmi/

Thanks and best regards.

amin23
Visitor II
June 18, 2012
Posted on June 18, 2012 at 08:43

Hello,

See the previous threads [DEAD LINK /public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Some more DCMI problems F207IG&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&currentviews=365]here & [DEAD LINK /public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/Flat.aspx?RootFolder=/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/DCMI Issues, looking for insight&FolderCTID=0x01200200770978C69A1141439FE559EB459D7580009C4E14902C3CDE46A77F0FFD06506F5B&TopicsView=https://my.st.com/public/STe2ecommunities/mcu/Lists/cortex_mx_stm32/AllItems.aspx?Paged%3DTRUE%26p_StickyPost%3D%26p_DiscussionLastUpdated%3D20111212%252010%253a46%253a14%26p_ID%3D19852%26View%3D%257bF47A9ED8%252dE726%252d42BE%252dACED%252d732F13B66581%257d%26FolderCTID%3D0x012001%26PageFirstRow%3D121&currentviews=590]here.

alok472
Associate
June 18, 2012
Posted on June 18, 2012 at 15:29

you need to go through the DMA rountine. The short suggestion is to change following line

DMA_InitStructure.DMA_Memory0BaseAddr = FSMC_LCD_ADDRESS;

and instead of FSMC_LCD_ADDRESS, put your RAM destination address