dso nano calibration trouble


I have trouble calibrating my recently bought dso nano. The bootlogo shows version number 1.5.20p
I managed to set the zero point to a small value (±2mV), but when I reboot the zero offset is again set to another value.

Here are the steps I did:
Start up the dso nano, while pressing the left button. Pressing play a few seconds, so that it shows the measurement
data. Pressing left/right until I get the Vavg close to zero. Pressing m, and then play for a second.
Then I get “parameter saved”. Then I turn off and on again the dso nano.
But the offset is back to a larger value.

The dso nano is a nice little device, but I hope to be able to calibrate it for accurate results!

Kristof Bastiaensen

I guess your SD card is not a just one the firmware supported, try Ver1.602p.

That could be the problem, since I am also not able to write a waveform to the disk. I followed the guide
and created dummy files on the disk.
Where can I download Ver1.602? I am using linux, is there a program I can use to upload the firmware?
Perhaps openocd? openocd.berlios.de/web/

here is 1.602:

I haven’t tried it myself (yet) but take a look at “dfu-util” (included in all major distributions).

EDIT: Tried it now on Ubuntu 10.04 without luck. It should be possible though, for instance the LeafLabs Maple project uses dfu-util to upload to an STM32.

I can get dfu-util to finish without errors by using the -t option to limit the transfer size:

sudo dfu-util -a 0 -R -t 100 -D DSO\ nano\ APP\ v2.5e.dfu

But afterwards it seems like it did not actually flash the firmware.

Is -a 0 correct? What is found using --list?

Yes, alt 0 is the “Internal Flash”. The other is “SPI Flash”, so they are the same as you can see in the Windows program.

After downloading, dfu-util displays:
state(7) = dfuMANIFEST, status(0) = No error condition is present
unable to read DFU status

and the DSO reboots. I think it reboots as soon as the closing (zero sized) packet is sent and the first status is read, so the second status read fails because the USB device has gone. Hmm, the dfu-util code (sam7dfu.c:186) says “FIXME: deal correctly with ManifestationTolerant=0” at this point. And the DSO is “Manifestation Intolerant”.

Also, this in the dfu-util code makes me wonder if dfu-util only works with raw binary and not dfu files for now :slight_smile:
#if 0
read(fd, DFU_HDR);

Also the examples in the man page are not using dfu files.

EDIT: This should not be a problem since the device itself should deal with the header. The host should send the whole file (except any “suffix”).

I found this enlightening post which explains why dfu-util does not work with the ST DFUse examples. I guess the DSO Nano loader is based on DFUse.