Hallo,
ich lasse gerade die 3 ADCs des STM32F429 Discos im tripl mode
interleaved laufen. Habe mich dabei an der Vorlage von ST orientiert.
Hierbei werden die ADC Werte in ein word-array gespeichert. im lower
half word wird ADC1 gespeichet, im upper half word ADC2, dann in der
nächsten Zeile ADC3 im lower half word und ADC1 im upper half word.
Das funktioniert auch, nur bekomme ich immer nur 3 elemente der
Hintereinander mit korrekten Daten gefüllt (also 6 ADC-Werte), die
nächsten 3 Elemente sind die Kopie von Element 2. Dann ist bi Elementen
6-8 wider alles in Ordnung, und bei den Elementen 9-11 ist wieder nur
die Kopie von Elelemt 8 darin usw.
Auf dem Bild soll eigentlich ein 300kHz Sinus zu sehen sein.
Wenn ich die Daten auf dem Display anzeigen lasse:
1 | for (i=0; i<240/2;i++){
|
2 | UB_Graphic_DrawPixel(2*i,320-(uint8_t) ((aADCTripleConvertedValue[i] & 0xFFFF)>>4),RGB_COL_RED);
|
3 | UB_Graphic_DrawPixel(2*i+1,320-(uint8_t)(aADCTripleConvertedValue[i]>>20),RGB_COL_RED);
|
4 | }
|
also die 12bit Werte auf 8bit Werte reduziere und direkt als Höhe so
ausgebe, erhalte ich das selbe Bild. Die Daten sind also wirklich so auf
dem Controller.
Wo ist mein Fehler?