chipKIT® Development Platform

Inspired by Arduino™

Advice regarding using the chipKIT for a new project

Created Thu, 07 Jun 2012 20:44:59 +0000 by mjlynch712


Thu, 07 Jun 2012 20:44:59 +0000

You must excuse my ignorance, I'm new to the forum thing, and microprocessors in general.

I'm currently researching components for a University project next year, it wont be for a year yet, so any learning curves, I hope to overcome by then

My plan is to build an Arbitrary Signal Generator, which will take values of the signal from a USB pen or SD card, it will display the waveform, along with a file manager/menu on a GLCD. The input will be a touchscreen overlayed on the GLCD to navigate. The waveform will be created using a high speed DAC and feed to an amplifier circuit, which in turn will be used to generate plasma.

I have used PICAXE extensively before, and have driven character LCDs, servos, and PWM circuits. I have also tapped a little on arduino, but have never fully used it.

I am asking for advice if the MAX32 board would be appropriate for this task? Its large I/O pins would mean I could drive the GLCD without the need for a separate chip. Also the high clock speed would allow for fast communication with the DAC. In addition arduino libraries are there to use the GLCD, touchscreen and SD card.

Can anyone else think of other suggestions?

Any help would be greatly appreciated Once again I apologise for any ignorance

Many thanks :)


Fri, 08 Jun 2012 01:39:36 +0000

Yup, it will probably be great for what you want to do.

But part of the key technical requirements of your project are missing.

How many samples will you be 'playing back' in one go? 10? 10,000? 10,000,000?

And what is the maximum frequency that those samples need to be send to the DAC?

And how does the MAX32 board talk to the DAC? SPI? Parallel?

Based on the answers to these questions, we can let you know if the MAX32 can comfortably handle your project, maybe just squeeze in, or no way will work.



Fri, 08 Jun 2012 08:48:56 +0000

Thank you for the response, I was looking at Maxim DACs, particularly the MAX105, MAX106, MAX107 I was hoping to connect via parallel as it is the fastest (to my knowledge anyway)

Im wanting to get as many samples played back as I can

I just want the LCD to display a rough image of what the waveform will look like, I only need it as a visual representation as any changes will take place on the computer

Many thanks


Fri, 08 Jun 2012 14:23:35 +0000

Well, 'as many samples as possible' is not a very exact spec. :-)

So the absolute fastest you could probably send 8-bit samples to a parallel DAC would be maybe 10MHz or possibly 15MHz. But nothing else can be going on at the same time at that speed.

If you need just, say between 500KHz to 10MHz samples, then it becomes much easier but will still be somewhat of a challenge.

If you need below 500Khz samples, then its very, very easy.



Fri, 08 Jun 2012 19:39:19 +0000

If i was only sending between up to 10MHz, would that mean there would be no need for the DAC at such high a high speed?

I was hoping to get maybe 25MHz or even up to 100MHz Would that be possible at all?

Would a higher bit DAC help?

My plan was to display the waveform on the LCD then the user would hit 'Run' to output the waveform, so it would be the processing at the time

I've noticed a few teething problems with the chipKIT, (which I completely understand as it is a new product) But I was looking at the LCD output, my original choice was a standard 128*64 GLCD, however after looking at some libraries, I have seen the 2.4" TFT screen with touchscreen Would you feel this was a better alternative?

Thank for your help by the way, been great


Sat, 09 Jun 2012 02:57:21 +0000

Achieving a playback rate of more than 10Mhz will either be extremely difficult or impossible with an 80 MIPS processor without some sort of extra hardware to manage the sample-memory-to-DAC pipeline. (At 10Mhz, you only have 8 instructions to get each sample out of RAM, out of the chip and into the DAC, and detect if you're done with your loop.)

But are you sure you're thinking this through? Let's say you filled up all of a PIC32MX795's RAM (128K) with the samples you want to send out. At 10MHz, that's only 13 milliseconds worth of playback. In other words, you will only be able to play back 0.013 seconds worth of data at 10Mhz even with maxing out your sample space in RAM.

Also, a 10MHz analog signal is considered 'high-speed'. This means you'll need a custom board made, with careful attention to all of the high speed analog circuit board routing rules, decoupling, output buffering, etc.

So, is 13 milliseconds worth of playback going to be enough? If not, then you need to go slower than 10Mhz, or you need more sample space.

If you need more sample space, you will need to think more about how you're going to store your samples. If you really need to play them back at 10Mhz or higher, the only thing I can think to economically store them is SDRAM or DDR RAM or something like that. To interface with SDRAM or DDR RAM and be able to get samples out at 10Mhz or higher, you'll need a dedicated hardware memory interface. You can construct one in an FPGA, and then communicate from the PIC32 to the FPGA through SPI or some other communications bus. The FPGA could then very accurately time the samples going out to the DAC, and could interface with very large memories, and could play back samples at much higher rates than even 100Mhz if you got a fast enough DAC.

But writing the FPGA code to do that would take quite a bit of time. For somebody who knew what they were doing. :-) The FPGA method is how the commercial arbitrary signal generators (AWGs) do it, I believe.

So maybe you can give us more information about what type of signal you're trying to play back, for what purpose, and think about how fast the samples really need to be, and how long your maximum playback time needs to be.



Sat, 09 Jun 2012 10:45:46 +0000

After doing a quick dig through some old work I realised that the PWM values I use to generate plasma was only around 12.5kHZ So up to 10MHz should be more than enough I'm not sure on playback, I will have to look into this further!

I've used FPGA's before, and I have to say, I'm not a fan

Would you advise the chipKIT or your board from Sparkfun, the 32-Bit Whacker? I have no need for shields, and I think this may be easier for breadboarding I have the pickit3 for burning the bootloader


Sat, 09 Jun 2012 11:40:38 +0000

Either will work just fine - the chipKIT boards have better power supply options, ESD protection on their pins, and use the FTDI USB to serial chip (so you don't have to push a button on the board to download a new sketch) - and are cheaper - but the UBW32 is better for breadboarding.

So, if you were generating analog waveforms with 12KHz PWM, then the maximum frequency output you could create is about 6Khz. So if you wanted to stay the same as the previous system, you'd only need 6KHz ADC output rate, which is a far cry from 10MHz.



Sun, 10 Jun 2012 14:19:32 +0000

One final question The network shield has a USB connector, I have also seen some examples of people online wiring a USB port to the chipKIT almost directly, can this be used for controlling a USB data stick? Rather than use the VDIP1 or Vdrive from Vinculum?

If it could, can it only be used on the chipKIT, or could the same be applied to the 32-Bit Whacker?

Apologies for sounding like an idiot