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?