Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

[SOLVED] External ADC to MCU DMA - MCU type

Status
Not open for further replies.

ToKra

Newbie level 5
Joined
Nov 3, 2015
Messages
9
Helped
0
Reputation
0
Reaction score
0
Trophy points
1
Activity points
131
Hello,

I need to take 8bit parallel burst signal from external ADC (20 kB per burst, 22,5 MHz). Buffer one burst, send it to PC and wait for another burst. No data processing on MCU side. MCU will know about comming data by trigger on GPIO pin.

Delay between bursts is about 1 second long.

I´m looking for MCU with DMA that will be capable of such a task. I have some experience with STM32 so I would prefere ST chips.

STM32 family has many types and I feel completely lost in this. Is any of the STM32 capable of such a task? If yes is it available on any dev board? I´m not very familiar with HW designing so dev board seems like a better solution for me.

Do you know about any other suitable MCU?

I checked discovery kit with STM32L476VG, but it looks too slow.

FPGA is maybe better for this but definitely harder to HW(PCB) design. Also FPGA devboards are more expensive.
 

How do you intend to communicate with the PC ? With USB ?
 

Hi,

Why microcontroller?
Why not PLD, combined with SRAM and USB chip, like FT245?

Klaus
 

Krauss,
Why don't you like the uC approach?
It will certainly be chipper, consume less power and probably take less time to implement.
 

shaiko:
USB suits me best.

KlausST:
- Fewer parts to implement
- Easier HW development (I'm not good at this)
- Posibility of cheap dev board with implemened USB data transfer
- Also I know some C - easier code implementation
- No exprience with PLD
 

Thank you for your replies.

I was not able to figure out exact maximal value, but i found good blog post on this topic.

https://cliffle.com/article/2015/06/06/pushing-pixels/

So I will go with STM32F4 or F7.

One question. There is a lot of submodels of F4 and F7. Would you prefer any of them for this task?
 

Hello!

I need to take 8bit parallel burst signal from external ADC (20 kB per burst, 22,5 MHz). Buffer one burst, send it to PC and wait for another burst. No data processing on MCU side. MCU will know about comming data by trigger on GPIO pin.

I'm not sure that what you describe is exactly what I did, but just in case:
I needed to have 8 (or possibly 16) MEMS microphones in parallel. I have wired them to a single port, and get all
the bits in parallel. The frequency has to be 12.288 MHz, but the timer setting allows to go higher, so I guess you could
sample at 22.5 MHz provided you find the right setting. But as 22.5 is 180 / 8, I'm pretty sure you can do it, and the
timer value should be 3 (using 180, your timer clock will be 90, that you have to divide by 4, therefore 4-1 = 3).

The good thing about this method is that it takes no CPU power. Basically, you setup a timer (as above), and you choose
the proper DMA to transfer your results into memory. And you can have an interrupt at half buffer and full buffer.
This allows you to sample half of the buffer while processing the previous half.

An advice: configure everything in CubeMX. It will generate the initialization code and the only thing you have to do
will be to fill the contents of the interrupt.

Dora.
 
  • Like
Reactions: ToKra

    ToKra

    Points: 2
    Helpful Answer Positive Rating
Thank you, Dora.

Yes, it should be the same thing.

What MCU did you use?
 

Hello!

What MCU did you use?

I'm using the F769. The reason is that I'm not very experienced with STM32, and I had no idea of the final
program size, etc. So I took a powerful beast that can be soldered by hand (i.e QFP, not BGA), the 208 pins
model. Quite a big stone. It's incredibly powerful. I also verified that I can get 16 microphones at once, it
works fine, and I can work continuously (i.e. not bursts). By the way, I was writing "180 MHz", but it's the
frequency of the F4x (I made the very first experiments with a F469 disco, the one with a nice LCD).
The F7x series can run at 216 MHz. You should be able to find a close frequency that would match with 22.5.

By the way, I don't know exactly what you are doing and neither how to do it, but here is a little advice.
At first, I thought that the code provided by ST is not very well written and I thought I would do it on my own,
as I'm used to do. However, I found out that using CubeMX can generate most of the code I need. For
example, what I was describing with my 16 mems mics can be generated (about 95%). The 5% remaining
consist in adding the interrupt routines, filling blanks, defining your own variables, etc. No headache fore
clock configuration, no danger of using a pin which is already use for another peripheral, CubeMX tells you
what is already used and what is not.
On top of that, you can also modify your program graphically in CubeMX, generate the new code again,
but CubeMX doesn't erase your code additions provided it's done in the proper areas. Example, you have
a working program. You want to add an SPI flash? Just click the checkbox in CubeMX, re generate, and you're
done. Your program still works the SPI for your flash is initialized, you just have to write the access functions.

Have fun!

Dora.
 

Status
Not open for further replies.

Similar threads

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top