Mini 2440 Oscilloscope

paolo
Hi all,

I'm finishing the development of a simple "oscilloscope" for mini 2440 (Win
CE 5.0).
You can see a first screenshot here (my Italian blog)
http://www.sereno-online.com/site/2010/05/12/mini-2440-oscilloscope/

If someone is interested in the project, as soon as the source code will be
stable I will release it (GPL license).

Bye
Paolo

Fernando
Congratulations Paolo! Is really an interesting project.
What graphics library are you using? DirectX?

Fernando

paolo
Hi Fernando,
I'm using Qt 4.6.2 and qwt (plot library).
Thanks
paolo

Fernando
Hi Paolo,
and what refresh rate of the graph are you getting?
Thanks to you
Fernando

davef
Paolo,

Yes, a great idea.  I have wanted a low-level DSO for years and have looked
at many options.

Do you have any suggestions about either integrating a USB oscilloscope
probe or maybe a high-speed ADC off the SPI interface to get a oscilloscope
usable, say 1 - 5MHz

Dave

paolo
Hi all,

@Fernando
at the moment I trigger the data acquisition and, at the end of it, I plot
the 4 channels on the TS, but there is a "real time" plot method of qwt
library useful to display A/D data as soon as they come. I think it will
have  a refresh rate (on the TS) at about 10Hz.
Yesterday I acquired data at a sampling frequency of 1 KHz and today I'll
try to go faster in order to discover the limit.

@davef
The idea about integrating the USB oscilloscope is good, I did not know
that exist such a devices. I think the main problem will be implement the
communication protocol (I had a look on Internet about USB protocol and is
really complicated). At any rate, I'm curious to see how to connect devices
like the USB oscilloscope, if you are working on it please let me know, we
can exchange ideas.

Keep in touch
Paolo

paolo
Hi, 
tonight I finished the first release of my dataLogger for Mini 2440 ARM
board. The name for this version is “buggy” and you can understand why ;-)

The code is delivered under GPL license.

At the moment the source code is not completed, is badly written :-(  but
it allows to acquire the four 10 bits A/D channels of the board at a
sampling rate (for now) of 1Khz.

You can download the code from this address
http://www.sereno-online.com/uploads/dataLogger.zip

Any comment, idea, suggestion or feedback is welcome. I think it will
become an useful instrument for home laboratory and for experiment ;-)

Have Fun!
paolo

davef
Paolo,

Can't comment on the code as I only use C.  I have done a lot of datalogger
work, but on the ATmega32 8 bit platform.

You mention an ADC problem.  We use the SC32410 at work, so describe the
problem and I'll see if I can get an answer for you.

I read that the ADC can sample at 500kHz, so I expect that you should be
able to look at a 50kHz waveform, with good reproduction.

Also, look forward to a port to Linux using Qtopia 2.2!

Regards,
Dave

paolo
Dave,

Sooner or later I will port it on Linux with Qt 4.6.2 (about Qtopia 2.2 I
think will not be possible, the associated Qt library version is too old
and I need at least Qt 4 for the plotter).
The main problem I have, regards the Linux Kernel Driver for the 4 ADC.

During my first attempt with Linux I was able to read only one ADC (the
first one). Do you know how to modify the kernel in order to read all 4
ADC?

Regarding the sampling frequency at the moment I can sample at 1Khz, but
I'm sure, the board can do a lot more! I have to investigate.

Regards
Paolo

davef
http://members.cox.net/ebrombaugh1/embedded/mini2440/index.html

suggests at the bottom that you just need to find where in the kernel to
enable them!  Couldn't see anything in 2.6.32.2 for individual channel
settings on the the ADCs.

http://lxr.linux.no/#linux+v2.6.32/arch/arm/plat-s3c24xx/adc.c#L75

does this help?

I am not clear on this . . . how many ADC lines does the touchscreen use.
Two?  Seems to me that you then couldn't them for sampling inputs as well.

Wouldn't SPI high-speed ADCs be a better option for an oscilloscope?

For display of datalogger information you have an appropriate solution.

davef
OK. Looks like 4 channels are used for the touchscreen and 4 should be
available for general use.  But, you already know this!

paolo
Hi Dave,
thanks for the links and the info.
I will have a look on high speed SPI ADCs, it sounds really interesting :-)
paolo

nils
http://www.friendlyarm.net/forum/topic/974

look here, i have the same problem...

paolo
Hi nils,
I know, at the moment I don'tk know how to activate all the ADC in the
kernel. I'm going to try some kernel config, modify and compile, but it
will take time...(and I'm not an expert on this)

davef
Paolo,

I don't fully understand . . . you said at the begining:
***
but it allows to acquire the four 10 bits A/D channels of the board
***
But, you can only acquire one of them, as stated a bit later.

It looks like you can have the touchscreen interface or you can use those 4
channels (for a total of 8 normal ADC channels.) 1 or 2 channels is good
enough for an oscilloscope. 

Pages 16-1 to 16-9 in the S3C2440.pdf are the relevant pages on the ADC. 
Judging from the amount of information on using the ADC as an ADC versus
touchscreen control seems to suggest they do not expect people to use them
as general purpose ADCs!  Yet the conversion rate of 500KSPS (resolution
not stated) is 30 times faster than the ATmega32.

Is there nothing relevant in:
http://lxr.linux.no/#linux+v2.6.32/arch/arm/plat-s3c24xx/adc.c#L75

The links to these two files seem to be broken:

#include <plat/regs-adc.h>
#include <plat/adc.h>

If you do a search on <plat/adc.h> and <plat/reg-adc.h> there are lots of
hits.  Another key phrase is <hwmon>. 

Ah, this looks useful:
http://lxr.linux.no/#linux+v2.6.32/drivers/hwmon/s3c-hwmon.c#L71 

Dave

paolo
Hi Dave,

***
but it allows to acquire the four 10 bits A/D channels of the board

>>>
The first version of the data logger (running on win Ce 5.0) allows to
acquire 4 channels.

***
But, you can only acquire one of them, as stated a bit later

>>>
Right now, running my data logger on GNU/Linux allows to acquire only one
channel.


The situation is this:
At the moment I need to acquire 3 channels (100Hz sampling is enough) in
order to study the behaviour of 3 signals. I tried with Linux but I was not
able to do that so I wrote a first version of the data logger.
I have to say I don't like to use Win CE, I would prefer linux, but I had
no time to study the problem.

So, the problem is this one: I would like to acquire more than 1 single
channel (4 will be great for me) and I wonder if I can do it with my data
logger utility running on GNU/Linux. 
The solution you wrote me before will be the best: using a high speed ADC
on the SPI and show data on the touch screen.

Thank you
Paolo

davef
Paolo,

Another interesting solution is this:

http://www.knjn.com/docs/KNJN%20Flashy%20boards.pdf

Using a Flashy version K/L and a Pluto II FPGA board all one would need to
do is write a small program to access the data when required using the
protocol on page 25 and then someone who knows how to use Qt 4.6.2 and qwt
(plot library) to display that information on the touchscreen :)

And have the controls available that you see on page 9.

It uses the RS-232 interface.

Big job?

Regards,
Dave

paolo
Hi Dave,

it sounds interesting.
The thing I like of this solution is the fact that it uses RS232. There is
a Qt extension for serial communication so it is not a big job implementing
the protocol.

Thanks for the link, the board is really interesting I have to check how to
buy it (I don't know yet if they deliver to my country).

Regards,
Paolo

dave
Paolo,

I'd suggest reading through their forum 
http://www.fpga4fun.com/forum/
for feedback from users.

There are some limitations and if you are going to fork out $150US you
should be aware of them.

I thought it would make a nice accessory for the FriendlyArm dev board.

I am going to talk to a contractor we have working on our project as he has
developed a full-sized FPGA based oscilloscope.

Shipping problems?  Are you in Italy?

Regards,
Dave

paolo
Hi Dave,
thank you for your advice. I'm going to read the forum.
About shipping problems, yes I'm in Italy and sometime I have problems, but
I have friends in Munich (I lived there for years) and I can manage the
situation ;-)

Regards,
Paolo

Stranet
Hi Paolo,
I've developed the same application (oscilloscope) that read the four
10bits ADC... I can read at max rate of 3KHz...

Some time ago I've developed a class for c#/vb .Net that allow to read the
adc from Mini2440 board (I hope it helps :P ).
To read the chip registry I've used Open CF dll (PhysicalAddressPointer)
that allow you to map physicaladdress.

Now... the max rate I can achieve (3Khz) I think is relative to the calling
time of the routine in the Open CF dll.

How have you solved this problem?

Thnx a lot
(sorry for my bad english... if you have an email I can write to you in
Italian)

paolo
@Stranet

So far I have not found a solution to this problem.
I think we can exchange useful information.
If you want to write me in italian you can do it here:
http://www.sereno-online.com/site/contact/

Thanks
paolo

Jorge
Hi,

I need very much this oscilloscope.
The source is verry important for me, i need do a oscilloscope in my job in
MINI2440.
This is perfect to me.
If anyone have this source please send it to me.


Thx!
Jorge

jorgeecc@msn.com

Mohammad
HI all
I can't download this file :
http://www.sereno-online.com/uploads/dataLogger.zip

can u help me?

Sergio Aguiar
Unfortunately Mr. Paolo changed all the structure of it's site and it's
impossible to find anything on it.
The links on the main page leads to nowhere.
All the links I have found in internet that leads to Paolo's site lead to
nowhere.

This is a shame, unfortunately.

paolo
Try

http://sereno-labs.com/uploads/dataLogger.zip

and have fun!

Bye
Paolo

HungCuong
Can you hepl me make Mini 2440 Oscilloscope.

davef
What kind of oscilloscope?  Try to specify a few things like sampling rate,
equivalent analogue bandwidth, how much data you need to buffer, update
rate, etc.

I think the most appropriate approach is to use the mini2440 to capture USB
data and you write a Qt application to display the data. Search for <USB
oscilloscope> <Pico>

Are you going to have an operating system on the mini2440?

Manoj
Dear davef,
            I am uploading wince6.0 image come with mini2440 board in the
CD.How can I add Qt 4.6.2 and qwt with the image of wince6.0.
Please enlightened me

Hvzz
need some help in using Device Emulator in Platform Builder after Building
wince 6.0 nk.bin.

the mini2440 sdk , win-mobile-6 sdk emulator are installed

it gives me this:

Error: The emulation layer does not support the functionality that is being
accessed.

davef
Manoj,

Sorry, I haven't got a clue.  Never used Windows on an embedded platform.

I would suggest both you and Hvzz start new threads

davef
Hvzz,

I see you have, in which case don't double post!

Manoj
Dear davef,
           I also wanted to make a oscilloscope type of application where
data coming to rs232 of mini2440,that has to be plot with respect to time.I
am starting with wince with qt 4.6.2 as paolo suggested.Can you suggest
something else for my the development of my application.
Waiting for you valuable suggestions.

my mail id is manoj8indore@gmail.com

Manoj

davef
I thought Paolo was using Linux.

However, you need to state how often you want a new plot and how much data
you want to process.

What baud rate on the RS232?  Processing data that you can push across a
RS232 link sounds quite undemanding.

Seeing as the data is in a digital format it sounds to me like to just need
to process the data and display it using something rrdtools.  In the QT
world there is QT plot ... drop that into Google.

Also, as most of my applications are written in PHP, I played around with
PHPplot.

My web browser is from the demos file in QT, but I run nothing else under
QT.  Fortunately the Pengutronix BSP has boxes you can tick for these
applications, so the pain level is quite low.

bluscape
Don't worry about the USB protocol. No need to understand the low USB
implementation. Look at Linux USB gadget API framework. Very simple to use.

http://www.linux-usb.org/gadget/

Can't find the images for this project, can you provide a direct link
please?