Forum: Mikrocontroller und Digitale Elektronik Microchip PIC24FJ128GA310 und PPS Mapping


von Simon (Gast)


Lesenswert?

Das PIC24FJ128GA310 Datenblatt besagt doch ganz klar das
Man ein Output z.B. SPI (SDO) auch an mehrere Pins Mappen darf.

Ich habe zwei Chips (jeder SPI) die ich aufgrund meines Layouts
am Liebsten an zwei verschiedenen stellen /Pins an den PIC24 
anschliessen
möchte. Ist es ok hierfür mit dem Mapping einfach zwei Pins für SDO zu 
vergeben?

http://ww1.microchip.com/downloads/en/DeviceDoc/30009996g.pdf

PIC24FJ128GA310 FAMILY
DS30009996G-page 176

11.4.3.3 Mapping Limitations
The control schema of the Peripheral Pin Select is
extremely flexible. Other than systematic blocks that
prevent signal contention, caused by two physical pins
being configured as the same functional input or two
functional outputs configured as the same pin, there
are no hardware enforced lock outs. The flexibility
extends to the point of allowing a single input to drive
multiple peripherals or a single functional output to
drive multiple output pins

von Carsten S. (dg3ycs)


Lesenswert?

Hi,

Simon schrieb:
> Ist es ok hierfür mit dem Mapping einfach zwei Pins für SDO zu
> vergeben?

Da es vom Datenblatt AUSDRÜCKLICH so als Konfigurationsmöglichkeit 
hervorgehoben wird und SDO zu den Signalen gehört die per PPS geroutet 
werden können wüsste ich nichts was dagegen spricht!

Zumal es ja keine "irgenwie funktionierende" Option ist die sich 
jederzeit durch eine Hardwarerevision im Verhalten ändern kann sondern 
eine explizit beabsichtigte Option wo vom Halbleiterhersteller sogar 
Schutzmaßnahmen bei konkurierenden Signalpegeln vorgesehen sind. (Falls 
Input, also hier eh irrelevant)

Einzig das Errata Sheet würde ich noch einmal zu rate ziehen, nicht das 
dort noch eine Einschränkung wegen Hardwarefehler des µC aufgeführt ist. 
Aus dem Kopf wüsste ich aber in diesem Punkt jetzt von nichts.

Gruß
Carsten

von Carsten M. (ccp1con)


Lesenswert?

Ich glaube, "multiple" bezieht sich hier darauf, dass mehrere Pins 
gewählt werden können. Aber soviel ich weiß immer nur einer zu einer 
bestimmten Zeit.

Es gibt ja auch nur ein Register dem man einen Wert zuordnen kann.
Ich sehe keine Möglichkeit zwei Pins zuzuordnen!?
z.B.
1
        //SDI1 input mapping to RP8/RB8
2
        RPINR20bits.SDI1R = 8;
3
        //RP7/RB7 to output Function 7 = SDO1
4
        RPOR3bits.RP7R = 7;
5
        //RP6/RB6 to output Function 8 = SCK1OUT
6
        RPOR3bits.RP6R = 8;

In Bezug auf dein Problem - mach doch den zweiten Pin über einen Jumper 
verfügbar.

Gruß

: Bearbeitet durch User
von Michael S. (rbs_phoenix)


Lesenswert?

Also für mich kam es bisher immer so vor:
- Man kann pro RPn Pin einen Output eines Moduls wählen -> Man kann RP1 
und RP2 den gleichen Output wählen, z.B. SDO
- Man kann pro Input eines Moduls einen RPIn Pin wählen -> Man kann für 
SDI und Komparator-Input den gleichen Pin wählen, z.B. RPI3. Inwiefern 
das wirklich sinnvoll und erlaubt ist, weiß ich nicht. Aber ansich 
sollte es gehen, geht ja auch bei Logikgattern, dass ein Ausgang auf 
mehrere Eingänge gelegt werden darf/kann.

Also sollte es gehen, dass du SDO & SCLK auf jeweils 2 verschiedene Pins 
legen kannst. Bei SDI sehe ich da aber keine Möglichkeit. Die musst du 
wohl zusammen legen. Was auch ginge, du nimmst für den einen Slave SPI1 
und für den anderen SPI2, was aber softwaretechnisch "komplexer" ist. 
Kannst dir dafür aber auch ggf die CS Leitungen sparen, wenn pro 
SPI-Modul nur der eine Slave zusehen ist.

von MCUA (Gast)


Lesenswert?

Aus der Registerbeschreibung im DS ist doch eindeutig beschrieben,
was man zuordnen kann und was nicht. Für jeden entspr. ModulOut und 
In-Pin gibt es ein Register.
(I2C wird meistens nicht gehen, auch Portpins direkt gehen nicht, dafür 
viele SPIs, UARTs, Timer)

von skywalk (Gast)


Lesenswert?

Nein, geht nicht. Entweder der uC hat 2 SPI's oder siehe unten ...

Aber man kann beide Chips parallel anschließen und benutzt 2 Select 
Signale.
Der "SPI-Bus" ist so definiert.

von Master S. (snowman)


Lesenswert?

jedes modul (SPI, UART, INT...) hat gewisse IOs. nicht jedes dieser IO 
lässt sich auf jeder RP-Pin mappen. siehe das datenblatt, welche IOs an 
welchen RPs gehen und welche nicht.

: Bearbeitet durch User
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.