funak napisał: Rozważałem użycie interfejsu szeregowego, ale pojawił się problem przepustowości no i organizacji wyników.
AD7608 umożliwia taktowanie SPI 16MHz, więc 2MB/s powinienem wyciągnąć.
I w sumie wszystko automatycznie się robi, więc fakt, może to pomóc.
Ale policzmy:
8 wejść x 18 bit = 144tc.
I zajmuje to czas 1/16MHz * 144tc = 9us.
Więc max. prędkość ograniczona jest do 111kSPS. Oraz dane są nieco pozlepiane. Bo wyniki pomiarów lecą szeregiem 18bit jeden za drugim.
Ponieważ jest to prototyp( z szybkim wprowadzeniem do produkcji seryjnej, termin do końca listopada) toteż nie mogę stwierdzić na tym etapie czy 100kSPS będzie wystarczające. Więc chciałem od razu zaprojektować płytkę tak, by nie mieć ograniczeń.
Nie byłoby problemu, gdyby wykorzystać dwie linie szeregowe.
Ale nie mam pomysłu jak to poskładać, bo mam 1 sygnał zegarowy, a dwie linie danych.
Źle to liczysz. Wspomniany układ ma tylko 200 ksps, a posiada tylko jeden przetwornik, bez pipeline. Czyli nie możesz tego mnożyć razy 8 wejść, bo niezależnie od liczby wejść masz na raz tylko jedną konwersję. Czyli 200 ksps razy 3 bajty (18 bitów), to daje ci ledwo 600 kB/s, a więc kilkakrotnie poniżej możliwości SPI.
Pewnie cię zmyliło w nocie określenie "8 simultaneously sampled inputs", co znaczy tylko tyle, że wejścia próbkowane są jednocześnie, natomiast przetwarzanie jest kolejno. Czas konwersji dla wszystkich wejść to aż ok. 4 us.
Układ jest wręcz idealny do podłączenia przez SPI, z wykorzystaniem DMA i event system, dzięki czemu cały proces pobierania danych i inicjalizacji kolejnych konwersji możesz w XMEGA zrobić całkowicie sprzętowo.
Dodano po 2 [minuty]: BTW, dzięki pewnym trickom możesz te 18 bitów porozklejać na 3 bajty i tak umieszczać w pamięci - tu znowu pomoże event system i timer w trybie liczenia impulsów zegarowych.