Wednesday, 12 March 2014

video transmitter - What considerations should I have when selecting a microcontroller for fast read and throughput?


For a project at work I am tasked with selecting a microcontroller to facilitate video transmission.


The microcontroller will read H.264 encoded 1080p30, 30 to 40-second, video files (~500 MB) from an external FAT32 storage (Currently a MicroSD UHS-1/Class 10) and send them to a communication component, with a WiFi module as most prominent candidate. It is impossible to use a wired connection in the context of this project. The data is sent over short range and during transmission the microcontroller is completely dedicated to transmission. It will have no other tasks running in parallel.



Timely transmission of video data is the most important quality attribute and we're aiming at a timeframe of around 1 minute or less.


I saw many questions about processing video that were about raw signals or output from camera modules, but did not find a case where there is just a microSD file system to read encoded video from and how this relates to needed capacity.


What should be my most important consideration when selecting a microcontroller to achieve an optimal data read speed from a storage device such as MicroSD, to route this data through the microcontroller and submit it to the communication component for transmission? Should I be looking at processing power, pins, RAM or other specifications?



Answer



You don't need a lot of RAM or pins to do this, but you need fast peripherals and system clock. You are looking at about 70Mbps throughput. If you take a basic approach of reading a chunk and writing a chunk, you would need to be able to read and write with at least twice that rate (since only one side is being done at a time).


If you get an MCU with DMA you should be able to link both together so you can copy directly. But I feel this may not be so simple when you get WiFi involved. You may need to deal with collisions, send failures, dropped connections, etc.


So your SD should probably be 4-bit or 8-bit SDIO, and the MCU you select should support that natively (i.e. preferably no bit-banging). And then the WiFi module should have a similar interface if possible. You can get modules with USB interfaces, but be sure it can handle the throughput you need. UART is obviously not an option.


I would start with selecting the WiFi module before the MCU, if you haven't already done that.


No comments:

Post a Comment

arduino - Can I use TI's cc2541 BLE as micro controller to perform operations/ processing instead of ATmega328P AU to save cost?

I am using arduino pro mini (which contains Atmega328p AU ) along with cc2541(HM-10) to process and transfer data over BLE to smartphone. I...