Miniscope v2a is an alternative firmware and dll library for AT91SAM7S64 (miniscope v2) oscilloscope. Both project share same hardware and GUI application.
Main difference from basic firmware is DMA usage for ADC and moving some of the functions like triggering from hardware and firmware to PC side.
|Miniscope v2||Miniscope v2a|
|Reading ADC samples using blocking loop.||Reading ADC samples using DMA (PDC).|
|Single data buffer (selectable up to 14 kB).||3 x 4096 B data buffers organized as FIFO used by DMA and as USB transmit buffers.|
|Can not sample and transmit data at the same time.||Simultaneous sampling and transmitting data to PC possible.|
|Sampling speed selected by PC program.||Fixed (fastest possible) only one sampling speed. Lower sampling speeds are simulated by data decimation by dll library.|
|Trigger conditions checked by device.||Device is sending samples continuously. Triggering is simulated by dll library.|
|Fixed RC anti-aliasing filter - works only for highest sampling frequency. Operator must sampling frequency according to input signal frequency range.||Fixed RC anti-aliasing filter + digital decimator filter.|
Moving functionality from device to PC makes debugging easier and cheaper (no JTAG required). Lots of PC memory and fairy fast data processing makes it possible to implement complex trigger types. Size of continuous data samples set is no longer limited by size of microcontroller memory.
Main disadvantages of miniscope v2a comparing to miniscope v2 are requirements to PC CPU processing speed, PC responsiveness and USB data link bandwidth. PC must handle data stream of 122 x 4096 B data frames per second. If data frame is lost, shape of observed signal will start looking strange. It may happed if you try to run other CPU-heavy application same time. That is the reason why miniscope v2a can not fully replace miniscope v2 and this firmware is part of the separate project.
2010.03.11 Initial release. Some code is naive at very best, but still useful.
Some changes will be required to passing data to GUI application - currently screen
is updated with every little data frame.
dll library: armscope_dma_dll_20100311.7z
2010.03.20 Library version 0.1.2: armscope_dma_dll_0_1_2.7z:
- FIXED: not working continuous trigger mode,
- slope up/down trigger takes 6 consequent samples (previously: 4) when detecting level crossing.
2010.04.18 Library version 0.1.3: armscope_dma_dll_0_1_3.7z:
- FIXED: inaccurate sampling frequency (almost 2% error) reported by library to application (caused by limited sampling timer resolution),
- FIXED: duplicated 4096 samples on subsequent data frames in continuous sampling mode (caused visible lack of continuousity in data recorded to MS3 file).
2011.02.06 Library version 0.1.4: armscope_dma_dll_0_1_4.7z:
- FIXED: incorrect information about number of samples passed to TestTrigger() causing false triggering when slope trigger was active and decimator factor was set to 2 or more,
- FIXED: Access Overrun inside TestTrigger() function.
2010.04.06 Firmware: armscope_dma_20110406.7z.
Changed armscope_board.h: entering high-Z state and disabling pull-up on pins driving 4066.
Note: dll library is using version string to identify firmware, if it can not device make sure that id inside firmware and inside dll are matched.