PIC32 Problem mit SPI - SDI Port

OP #4534947
Lesenswert?
• ▲
▼
PIC32 Problem mit SPI - SDI Port

PIC32MRX270F256D

Hallo
Ich ärgere mich mit SPI und PIC32 herum.
Gott sei dank habe ich ein Oszi und
dabei ist mir aufgefallen, das die SDO Signale vom Slave
richtig ausgegeben werden nur mein In Port
verfälscht diese.
Manchmal funktioniert es auch ohne Probleme,
also Kann SDI und SDO NICHT vertauscht sein

Man kann ja Ports mappen,
SCK ist fest verdrahtet aber SDI und SDO
sind beschränkt auswählbar.

Ich habe das mit zwei verschiedenen Ports Probiert mit dem gleichen 
Ergebnis.

Ich habe die Leitung zum Sklaven aufgetrennt und messe an Port RB5 0,52V

Ich selber glaube der PIC ist das Problem,
aber vielleicht hat ja jemand eine Idee ?!

Bei SPI1 sieht man den Slave Ausgang aufgetrennt zum Master,
beim zweiten Bild die verbundene Version
Angehängte Dateien:
OP #4536422
Lesenswert?
• ▲
▼
Also
Ich habe da wohl ein Verständnis Problem.

Senden  ohne Master SDI funkioniert wunderbar.

Ich habe das mal auf einen PIC32MX150f128b
Probiert mit dem selben Ergebnis.
Ich mache etwas mit dem Master SDI Mapping falsch

  SDI1R = 0b0001;  // Gemappt SDI 1 nach RB5
  RPA2R = 0b0011;  // Gemappt nach SDO1

Laut PORTS I/O Seite 12/10

werde mal im Microchip Forum fragen.
#4536949
Lesenswert?
• ▲
▼
Da gibt's in den Datenblättern von Microchip meist irgendwo eine Stelle 
in der Beschreibung des PPS... "Remappable peripherals never take 
priority over any analog functions associated with the pin." oder im 
entsprechenden Teil des FRMs: "In order to use port pins for I/O 
functionality with digital modules, like Timers, UARTs, etc., the 
corresponding ANSELx bit must be cleared (or AD1PCFGset). The ANSELx 
register has a default value of 0xFFFF (or 0x0000 for AD1PCFG); 
therefore, all pins that share analog functions are analog (not digital) 
by default."
Gast #4537102
Lesenswert?
• ▲
▼
Martin M. schrieb:
> Also
> Ich habe da wohl ein Verständnis Problem.
>
> Senden  ohne Master SDI funkioniert wunderbar.
>
> Ich habe das mal auf einen PIC32MX150f128b
> Probiert mit dem selben Ergebnis.
> Ich mache etwas mit dem Master SDI Mapping falsch
>
>   SDI1R = 0b0001;  // Gemappt SDI 1 nach RB5
>   RPA2R = 0b0011;  // Gemappt nach SDO1
>
> Laut PORTS I/O Seite 12/10
>
> werde mal im Microchip Forum fragen.

Hellers schrieb:
> Da liegt dein Problem

immer noch das selbe, poste doch deine komplette Initialisierung!

Arc N. schrieb:
> The ANSELx
> register has a default value of 0xFFFF (or 0x0000 for AD1PCFG);
> therefore, all pins that share analog functions are analog (not digital)
> by default."
Genau so ist es, ANSELB = 0; wäre die Lösung.
#4539210
Lesenswert?
• ▲
▼
Martin M. schrieb:
> Den Anfängerfehler mache ich nicht mehr

Macht nix, gibt noch genug andere.
z.B. deine Typenbezeichnung ist falsch, auch wenn man erahnen kann 
welchen du nutzt.

Willst du nicht wirklich mal deinen Code posten?
Geheimnisse interessieren keinen, es reicht die Initialisierung von PPS 
und SPI.

Ansonst kann man dir eigentlich nicht helfen. Eine Übersicht über 
übliche Fehler findest du im Netz an vielen Stellen. Wenn du eine Lösung 
zu einem spezifischen Problem willst, dann sei bitte selbst auch 
spezifisch.
OP #4541091
Lesenswert?
• ▲
▼
Hallo
Danke für eure antworten
Den Code posten
Das sind ein Haufen verschiedener Files, ich werde das auf meiner 
Homepage posten, wenn ich fertig bin !

Also Ich habe mich Mühselig herangetastet und habe gemerkt das ich ein
Timing Problem habe, ich habe Nop's in spi Write eingefügt.

void lowWrite(const uint8_t address,const uint8_t value)
{
#ifndef SPI_INTERRUPTS
  uint8_t tmpRFIE = RFIE;

  RFIE = 0;
  RADIO_CS = 0;
#endif
    Nop();
    Nop();
    Nop();
    spiPut(address);
    Nop();
    Nop();
    Nop();
    Nop();
    Nop();
  spiPut(value);
#ifndef SPI_INTERRUPTS
  RADIO_CS = 1;
  RFIE = tmpRFIE;
#endif
}

und nun scheint es zu gehen, der Spi Bus ist knapp 1 Mhz schnell.
Was mich aber wundert und ich min 15 Std verbracht habe ist das Signal 
das in den Pic geht, das sieht auf dem Oszi immer noch sche**e aus, aber 
ich kann den Sklaven (mrf24j40) die Register richtig auslesen.

Wie gesagt Danke für eure Hilfe .-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren