Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Cortex. ARM3, ARM5, ARM7 magok, mindenféle gyártóktól. Programozás-fejlesztés-tippek.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: csabeszq »

Kérésetekre felraktam a Csabiszkóp kódját a github-ra.
https://github.com/cskarai/csabiscope

Néhány szó a Csabiszkópról:
- ez egy oszcilloszkóp, amit a 700 Ft-os blue pill panelre írtam meg (STM32F103C8T6)
- képes oszcilloszkóp képet rajzolni
- kiszámolni a min/max/effektív értékeket
- kiszámolni a frekvenciát
- szimpla/duál csatornás mintavételezés 1.25 MSPS-ig
- triggerek (felfutó/lefutó élre, változásra, min csúgy, max csúcs, külső)
- képes triggerjel előtt is mintavételezni, beállítható, hogy hány mintavétel érdekel a trigger előttről
- hardver erősítés ( 1x, 2x, 4x, 5x, 8x, 10x, 16x, 32x )
- DC leválasztó kapcsoló
- FFT
- USB átvitel 833 kbyte/s-ig
- beállítható teszt jel, bár a PWM drasztikusan leronja az ADC pontosságát
- flash-re elmenthető beállítások

A kapcsolási rajz durván itt van (kicsit más jelenleg de nem lényegi kérdésekben, frissíteni fogom):
https://github.com/cskarai/csabiscope/b ... Schema.pdf

Itt egy ősrégi videó, hogy breadboard-os korában még nagyapám idejében hogyan nézett ki:
https://www.youtube.com/watch?v=3I9gktvT23g

Néhány fényképet azért összeütöttem, az LCD fotózás láthatóan nagyon megy nekem:
- az oszcilloszkóp:
https://github.com/cskarai/csabiscope/b ... iscope.jpg
- így néz ki egy fej (+-6V és +-30V-os van)
https://github.com/cskarai/csabiscope/b ... e-head.jpg
- beállítások menü
https://github.com/cskarai/csabiscope/b ... p-menu.jpg
- trigger menü
https://github.com/cskarai/csabiscope/b ... r-menu.jpg
- prototípus panel SMD ellenállásokkal
https://github.com/cskarai/csabiscope/b ... pe-pcb.jpg

Bocs a hányaveti munkáért, a szkópot magamnak csináltam, nem megosztásra. Pár perc alatt felvarázsoltam a github-ra, csináltam pár fotót, nem így szoktak cuccokat felrakni.
A DesignSpark-os PCB fájlokat is fel kellene rakni, sőt frissíteni is kellene őket.

Néhány szót a kód fordításáról:
- Eclipse alatt fordul openocd-t használ. Fogalmam sincs, hogyan telepítettem
- nálam fordul és működik :)
- iit van valami doksi:
http://gnuarmeclipse.github.io/debug/openocd/

Magáról a kódról:
- commonlibs alatt vannak azok a cuccok, amit más projektben is felhasználhatok
- usblibs alatt vannak az USB cuccok
- system alatt a rendszerfájlok, nem módosítottam rajtuk. Így kaptam
- src/ és include/ alatt van maga az oszcilloszkóp

Poén kedvéért az LCD jelkészletekről:
- le lehet tölteni unicode BDF fontokat a netről, melyek mind az 50 millió unicode karaktert tartalmazzák
- ez jól néz ki az LCD-n, csak nem fér be a memóriába
- van egy szkript, ami legenerálja BDF-ből a C++ fájlokat, de csak angol és magyar karakterekkel, meg a görög mikro jel (us). Rasszista módon az arab, kínai, szanszkrit és koreai jelkészletek is kimaradtak.

A generált műalkotás:

Kód: Egész kijelölése

const uint8_t font_5x7 [] = {
  5, 7,
  5,   0x00,0x00,0x00,0x00,0x00,0x00,0x00, //  
  5,   0x20,0x20,0x20,0x20,0x00,0x20,0x00, // !
  5,   0x50,0x50,0x50,0x00,0x00,0x00,0x00, // "
Egyébként mindent hardverből tolok DMA-val. Kicsit sem komplex, sok sikert a megértéshez.

:)
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: kapu48 »

Abban igazad van, hogy nem könnyű megérteni a programodat!
Pláne ilyennek, mint én aki uVision-hoz szokott.

Ezért inkább vázolnám az elképzelésem, és kérdeznék a te tapasztalataidról!
Vagy az általad ajánlott megoldásokról.

Ha megengeded?
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: csabeszq »

Kérdezhetsz. A kapcsolási rajzom már nézted?

Az egyszerűbb.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: kapu48 »

Bocsi elmaradt a Köszönöm, hogy megosztottad a munkádat!

A kapcsolás az tényleg egyszerű. (És a legolcsóbban van megvalósítva!)
Érdemes lenne után építeni. Ha lenne SPI portós LCD-m.

Nagyobb gond, hogyan hozzam össze a Win7-en a Te Linuxos környezetedet.
Hogy le tudnám fordítani, majd feltölteni a programodat.

Így marad az elméleti ismerkedés. Hátha átjön a lényegi része.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: kapu48 »

Találtam 1 projectet, STM32F407VG-re.
Ezt tudja:
ADC_Interleaved_DMAmode2 Use ADC1, ADC2 and ADC3 in Triple interleaved mode and DMA mode2 with 6Msps

Example Description

This example provides a short description of how to use the ADC peripheral to
convert a regular channel in Triple interleaved mode using DMA in mode 2 with 8.4Msps .

The Triple interleaved delay is configured 5 ADC clk cycles.

In Triple ADC mode, three DMA requests are generated:
- On the first request, both ADC2 and ADC1 data are transferred (ADC2 data take
the upper half-word and ADC1 data take the lower half-word).
- On the second request, both ADC1 and ADC3 data are transferred (ADC1 data take
the upper half-word and ADC3 data take the lower half-word).
- On the third request, both ADC3 and ADC2 data are transferred (ADC3 data take
the upper half-word and ADC2 data take the lower half-word) and so on.

On each DMA request (two data items are available) two half-words representing
two ADC-converted data items are transferred as a word.

A DMA request is generated each time 2 data items are available :
1st request: ADC_CDR[31:0] = (ADC2_DR[15:0] << 16) | ADC1_DR[15:0] (step1)
2nd request: ADC_CDR[31:0] = (ADC1_DR[15:0] << 16) | ADC3_DR[15:0] (step2)
3rd request: ADC_CDR[31:0] = (ADC3_DR[15:0] << 16) | ADC2_DR[15:0] (step3)
4th request: ADC_CDR[31:0] = (ADC2_DR[15:0] << 16) | ADC1_DR[15:0] (step1) and so on.

The conversion is triggered by software.

The ADC1, ADC2 and ADC3 are configured to convert ADC Channel 12.
By this way, the ADC can reach 7.2Msps, in fact the same channel is converted each 5 cycles

In this example, the system clock is 144MHz, APB2 = 72MHz and ADC clock = APB2/2.
Since ADCCLK= 36MHz and Conversion rate = 5 cycles
==> Conversion Time = 36MHz/5cyc = 7.2Msps


Elméletileg a max olvasás 1 csatornán: 7.2Msps
Ezt próbálom megvalósítani az STM32F4-Discovery + BB Boardon.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: csabeszq »

Interleaved móddal nem foglalkoztam, de érdemes mezei DMA-val kezdeni. Az sem piskóta.

- timerről is tudsz mintavételezni és folyamatosan is lehet. Nálam nem sikerült a timert úgy beállítani, hogy folyamatost adjon ADC-re. A legfelső frekvencián így most folyamatos van, alatta timer indítja az ADC-t.

Miután az ADC stabil, lehet az interleaved móddal játszani.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: kapu48 »

Elméletileg a felvétel megvan, még gyakorlatban nem próbáltam.

Most a nyers méréseket konvertálni kellene mV-ra.
És a kapott pont felhőből valami értelmezhető képet kirakni az LCD-re.

Ez lesz a nehéz feladat! Ezt akartam ellesni Tőled!

Külön-külön minden részfeladat megvan, csak össze kel gyúrni 1 egésszé.
Avatar
csabeszq
Bitfaragó
Hozzászólások: 678
Csatlakozott: 2012. szeptember 5. szerda, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: csabeszq »

Az jött le, hogy az LCD-ben még nem vagy biztos, meg nézegetsz SPI-s LCD-ket is.

Az SPI lassú, nálam 160x128-cal még éppen megy 9MHz-es SPI órajellel (+DMA).
Gondolj bele, 16 bites színmódban használom, tehát a teljes képernyő 160x128x16 bit = 327680 bit.

Számoljuk ki az elméleti max frissítési frekvenciát: 9000000 / 327680 = 27,46 FPS.
Vedd észre, hogy a határon vagyunk vele. Amennyiben növeled a felbontást, úgy láthatóvá válik a képfrissítés. Ökölszabály, hogy 25 FPS-sel még lehet videózni, azalatt már nem érdemes próbálkozni. A kódom gyors, de nem cserélném az LCD-t magasabb felbontásra.

Nálad teljesen más LCD kezelő rutinok kellenek majd, ha párhuzamos LCD-t használsz.
Ott is megy a DMA, indítasz egy timer-t, annak a kimenő órajele lesz az LCD_WR vonalra kötve. A DMA-t az LCD GPIO-jára és a timerre kellene kötni. Ezzel képes vagy párhuzamos kapcsolaton 8/16 biten átdarálni DMA-n cuccot.

Leírás itt:
http://www.st.com/content/ccc/resource/ ... 169730.pdf

Azért választottam kis felbontású SPI-s LCD-t, mert nem akartam túlkomplikálni a cuccot.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: kapu48 »

Köszönöm ezt a linket!
Még nem ismertem, és elég érdekes megoldások ismertetésével.
Bővíti a DMA lehetőségek tárházát.

Egy ilyen LCD-m van, ezzel fejlesztgetek mindent. Csak 1 van mivel elég drága.
https://www.element14.com/community/doc ... covery-kit
Features
• Driving IC: SSD2119
• Display format: 320 * 240
• Color: 262K colors
• Blacklight: PWM control
• Interface: 16bit 8080 parallel system interface
• Touch screen: 4-wire resistive touch screen
• LCD dimension: 3.5 Inch (diagonal)
• LCD active area (W*H): 70.0mm * 52.6mm
• Operating temperature: -10~60°C
• Power consumption: 0.18A@5V

FMSC-vel ez elég gyors lesz. Ehez a 16 bites adatvonalhoz, már nagyobb ARM board ilik.

Inkább a képrajzolás SW. oldali megoldása, a nagy feladat.
Avatar
kapu48
Elektronbűvölő
Hozzászólások: 3375
Csatlakozott: 2008. augusztus 29. péntek, 6:00

Re: Csabiszkóp a két csatornás 1.25MSPS oszcilloszkóp

Hozzászólás Szerző: kapu48 »

És ha már van rajta Touch, akkor már menüvezérlés lenne a gombok vagy egyebek helyett.
Válasz küldése