Forum: Mikrocontroller und Digitale Elektronik NRF52823 - SPI-Problem in Zusammenhang mit ADS1256; zu geringes Logiklevel


von LowLeveler (Gast)


Lesenswert?

Hallo,

ich hänge leider gerade an folgendem Problem:

Ich möchte mit dem uC nrf52832 gerne mit dem Digitalkonverter ADS1256 
via SPI kommunizieren. Auf dem Steckbrett hat das nach 
Anfangsschwierigkeiten auch gut funktioniert. Dabei habe ich den 
NRF52832 mit dem Nordic-Devboard verwendet und den Code aus einem 
Beispiel SPI-Master-Code entwickelt.

Nun habe ich ein Platinenlayout erstellt und den uC auf dem Board 
programmiert, um dort den ADC anzusteuern. Es zeigt sich, dass bis auf 
den Master-In-Slave-Out (MISO) Pin alles funktioniert. (verzifiziert 
mittels Oszilloskop)

D.h. sowohl uC als auch ADC laufen an sich. Jedoch ist das Logiklevel 
auf dem MISO wesentlich zu gering. Es liegt bei High etwa um 200, 300 
mV. Ich habe leider keine Grafik zur Hand, es sieht jedoch optisch so 
aus, wie ein im wesentlichen "korrektes" Signal, allerdings eben mit 
wesentlich zu geringem Highpegel, so dass der uC immer nur Nullen liest.
Es wirkt fast so, als hätte der ADC-Ausgang Schwierigkeiten den Pegel 
auf 3.3 V zu ziehen, sobald der MISO-Pin anliegt.

Ich denke nicht, dass es ein Hardwarefehler ist, da dieser Fehler mit 
der Softwareprogrammierung "mitwandert":
Wähle ich statt Pin 29 z.B. Pin 30 als MISO Pin aus, so ist das Level 
auf vorherigen MISO-Pin normal d.h. High liegt bei ~3.3 V. Aber der neue 
MISO-Pin 30 weist dann genau die selben Symptome auf.

Es scheint so, als wäre der Pin, es ist der einzige Inputpin der 
SPI-Kommunikation auf uC-Seite, falsch konfiguriert.

Hatte jemand schonmal das Problem? Kennt jemand eine Lösung?

von Wolfgang (Gast)


Lesenswert?

LowLeveler schrieb:
> Kennt jemand eine Lösung?

Wenn der Fehler mitwandert, empfehle ich einen Blick auf die Software 
und die Hardware. Entweder ist der ADS1255 und zieht den Pegel runter 
oder irgendein Pin wird falsch initalisiert/gesteuert.

von Jim M. (turboj)


Lesenswert?

LowLeveler schrieb:
> Ich denke nicht, dass es ein Hardwarefehler ist, da dieser Fehler mit
> der Softwareprogrammierung "mitwandert":

Dann hast Du den vermutlich nicht auf GPIO Input gesetzt:
1
 nrf_gpio_input(29, NRF_GPIO_PIN_NOPULL);


Die GPIOs muss man bei NRF5x manuell korrekt vorkonfigurieren. MISO ist 
der einzige SPI Pin der nicht auf Ausgang stehen darf.

von Wolfgang (Gast)


Lesenswert?

Jim M. schrieb:
> Dann hast Du den vermutlich nicht auf GPIO Input gesetzt:
>  nrf_gpio_input(29, NRF_GPIO_PIN_NOPULL);

Warum sollte es dann auf dem Steckbrett funktioniert haben?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.