Forum: Mikrocontroller und Digitale Elektronik Kombination serialport und spiport


von Anfänger (Gast)


Lesenswert?

Ich möchte gerne den SPI-Port und den SerialPort meines uCs gleichzeitig 
benutzen. Dazu habe ich folgendes Testprogramm aus Beispielen 
kombiniert:
1
/// Reply to a SPI master as slave
2
 
3
 
4
#include "mbed.h"
5
 
6
 
7
SPISlave device(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS); // mosi, miso, sclk, ssel
8
 
9
Serial pc(SERIAL_TX, SERIAL_RX);
10
 
11
 
12
int main() 
13
{
14
int i=1;
15
 
16
    // device.reply(0x00);              // Prime SPI with first reply
17
 
18
    while(1) {
19
 
20
   /*     if(device.receive()) 
21
          {
22
 
23
            int v = device.read();   // Read byte from master
24
 
25
            v = (v + 1) % 0x100;     // Add one to it, modulo 256
26
 
27
            device.reply(v);         // Make this the next reply 
28
 
29
        } */
30
 
31
    pc.printf ("throwline: %d", i++);
32
 
33
    }
34
 
35
    
36
}

Leider kommt eine Fehlermeldung über den serial-Port:

"pinmap not found for peripheral" und das Programm funktioniert einfach 
nicht. Klammere ich nun auch die Zeile aus:
1
//SPISlave device(SPI_MOSI, SPI_MISO, SPI_SCK, SPI_CS); // mosi, miso, sclk, ssel

Dann kommt die Fehlermeldung nicht mehr und es werden fleissig Daten 
über den serial-Port gesendet.

Als Board verwende ich dieses Board hier:

http://www.st.com/web/en/catalog/tools/PF260320

Ein STM32F411RE, der uC ist von ARM und heisst genauso.

Ich habe schon versucht, mit Google die Fehlermeldungsbedeutung 
herauszufinden:

"It means you are instantiating a peripheral (Serial, PwmOut, etc) on a 
pin which does not support it."

Quelle: 
http://developer.mbed.org/questions/5388/pinmap-not-found-for-peripheral/

Ich hab momentan keinen Plan, wie ich da weiter vorgehen soll. 
Anscheinend ist also einer der Pins nicht für die Kombinationen 
geeignet. Ich habe auch schon versucht, anhand der Pinbelegung im 
Datenblatt nachzuschauen, dass keine Pins doppelt besetzt sind, was 
nicht der Fall ist, es gibt diese Zuordnungstabelle:
1
    // Generic signals namings
2
    LED1        = PA_5,
3
    LED2        = PA_5,
4
    LED3        = PA_5,
5
    LED4        = PA_5,
6
    USER_BUTTON = PC_13,
7
    SERIAL_TX   = PA_2,
8
    SERIAL_RX   = PA_3,
9
    USBTX       = PA_2,
10
    USBRX       = PA_3,
11
    I2C_SCL     = PB_8,
12
    I2C_SDA     = PB_9,
13
    SPI_MOSI    = PA_7,
14
    SPI_MISO    = PA_6,
15
    SPI_SCK     = PA_5,
16
    SPI_CS      = PB_6,
17
    PWM_OUT     = PB_3,

Man kanns also ausschließen, dass RxD und TxD vielleicht auch die Pins 
vom SPI-Port sind. Aber was könnte der Fehler sein?

von Anfänger (Gast)


Lesenswert?

Ich hab das aus versehen in die falsche Kategorie gesetzt, wie kann ich 
diesen Beitrag in das richtige Unterforum verschieben?

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Anfänger schrieb:
> wie kann ich diesen Beitrag in das richtige Unterforum verschieben?

Du nicht, aber dafür sind wir (wir Moderatoren) da.

von jb (Gast)


Lesenswert?

>Ich habe auch schon versucht, anhand der Pinbelegung im
>Datenblatt nachzuschauen, dass keine Pins doppelt besetzt sind, was
>nicht der Fall ist, es gibt diese Zuordnungstabelle:

Ich sehe aber einige Doppeltzuweisungen...

Gruß Jonas

von Ralf (Gast)


Lesenswert?

> Dazu habe ich folgendes Testprogramm aus Beispielen kombiniert
Das Resultat ist meistens, dass eben die Kombi nicht geht :)

Ich kenne leider die mbed-Umgebung nicht, wenn ich das richtig aus 
deinem Beitrag sehe muss man in den "Generic signals namings" die 
Portzuweisungen machen, die dann an den UART bzw. SPI übergeben werden, 
korrekt?

Ich hab das Datenblatt nun mal kurz überflogen, aber ich kann in der 
Pintabelle keinen Eintrag für "SPI_CS = PB_6" finden => PA_4 sollte laut 
der Tabelle eher helfen =)

Probiers bitte aus und gib Rückmeldung.

Ralf

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.