Forum: Mikrocontroller und Digitale Elektronik WiFi PicTail und PIC32


von Benny (Gast)


Lesenswert?

Hallo zusammen,

ich nutze das PIC32 Ethernet StarterKit und das I/O Expansion Board. Fr 
ein Projekt, soll ich nun das WLAN-Modul (WiFi PicTail Plus Daugther 
Board) zum Laufen bekommen. Ich habe die Softwareteile eingebunden das 
Modul aufgesteckt.
Wenn ich SPI1 benutze, dann funktioniert alles hervorragend. Wenn ich 
jedoch SPI2 benutzen will geht es nicht mehr. Ich mchte SPI2 und INT1 
verwenden, ich habe es aber auch schon mit SPI2 und INT3 (wie im 
Beispielcode) versucht.
Der Fehler tritt in der Datei WFDriverCom_24G.c in Linie 645 auf.
1
WF_ASSERT(value != 0xffff);
Meine Konfiguration sieht folgendermaen aus:
1
#define WF_CS_TRIS          (TRISGbits.TRISG9)
2
#define WF_CS_IO          (LATGbits.LATG9)
3
#define WF_SDI_TRIS          (TRISGbits.TRISG7)
4
#define WF_SCK_TRIS          (TRISGbits.TRISG6)
5
#define WF_SDO_TRIS          (TRISGbits.TRISG8)
6
#define WF_RESET_TRIS          (TRISGbits.TRISG0)
7
#define WF_RESET_IO          (LATGbits.LATG0)
8
#define WF_INT_TRIS          (TRISEbits.TRISE8)
9
#define WF_INT_IO          (PORTEbits.RE8)
10
#define WF_HIBERNATE_TRIS       (TRISGbits.TRISG1)
11
#define WF_HIBERNATE_IO          (PORTGbits.RG1)
12
#define WF_INT_EDGE          (INTCONbits.INT1EP)
13
#define WF_INT_IE          (IEC0bits.INT1IE)
14
#define WF_INT_IF          (IFS0bits.INT1IF)
15
#define WF_INT_IE_CLEAR          IEC0CLR
16
#define WF_INT_IF_CLEAR          IFS0CLR
17
#define WF_INT_IE_SET          IEC0SET
18
#define WF_INT_IF_SET          IFS0SET
19
#define WF_INT_BIT          0x00000080
20
#define WF_INT_IPCSET          IPC1SET
21
#define WF_INT_IPCCLR          IPC1CLR
22
#define WF_INT_IPC_MASK          0xFF000000
23
#define WF_INT_IPC_VALUE        0x0C000000
24
#define WF_SSPBUF               (SPI2BUF)
25
#define WF_SPISTAT              (SPI2STAT)
26
#define WF_SPISTATbits          (SPI2STATbits)
27
#define WF_SPICON2          (SPI2CON)
28
#define WF_SPICON2bits          (SPI2CONbits)
29
#define WF_SPI_IE_CLEAR          IEC1CLR
30
#define WF_SPI_IF_CLEAR          IFS1CLR
31
#define WF_SPI_INT_BITS          0x000000e0
32
#define WF_SPI_BRG          (SPI2BRG)
33
#define WF_MAX_SPI_FREQ          (10000000ul)

Sieht hier jemand den Fehler?

Danke im Vorraus!

von Peter C. (peter_c49)


Lesenswert?

Hallo Benny,

hast du das Modul dann auch im 2ten Slot-Teil stecken?
SPI1 ist im oberen teil des Slots ( des 120 poligen Card-Edge Connectors 
).
SPI2 im zweiten teil des Card-Edge Connectors.

ansonsten wüsste ich nicht wie du die SPI2 Signale an das Modul bekommen 
willst ohne was umzulöten bzw anderweitig zu verbinden.

mfG
Peter ;-)

von Benny (Gast)


Lesenswert?

Hat jemand schon mal etwas vergleichbares hinbekommen?

von Benny (Gast)


Lesenswert?

@Peter C.: Sorry, ich habe deine Antwort gar nicht gesehen. Ich habe das 
Board über einzelne Verbindungskabel angeschlossen. Wo ich testweise 
SPI2 und INT3 benutzt habe, habe ich jedoch den 2. Slot verwendet.

von Peter C. (peter_c49)


Lesenswert?

644    /* if SPI not connected will read all 1's */
645    WF_ASSERT(value != 0xffff);

mess mal ob du wirklich signale and den SPI2 pins hast, und diese am 
modul auch ankommen.
ich habe es mal an SPI1 u SPI2 auf meinem Explorer16 am laufen gehabt, 
nachdem ich die doku u den schaltplan gelesen hab, und es in den 
mittleren slot part hatte für SPI2.
musste aber im MLA example code nur eine #define zeile aendern um auf 
SPI2 zu gehen.
habe aber diese examples nicht mehr, benutze Explorer16 u ESK nur für 
early prototyping.

der assert ist aber recht eindeutig, es liest nicht ordentlich von SPI.

mfG
Peter

von Benny (Gast)


Lesenswert?

Das werde ich gleich morgen ausprobieren.

Weißt du ob meine Pins korrekt sind (siehe Beispielcode im Beitrag #1)?

von Peter C. (peter_c49)


Lesenswert?

>Weißt du ob meine Pins korrekt sind (siehe Beispielcode im Beitrag #1)?
kann ich nicht prüfen. habe die alte MLA nicht mehr installiert.
unter deinen #defines sollte ein #define MRF24_IN_SPI2 oder so ähnlich 
sein mit welchem du SPI2/SPI1 wählst, ist aber bei dir nicht sichtbar.

wenn du auch den PIC32MX795F512 benutzt, und mir sagst welches Beispiel 
aus welcher MLA version.....UND es ev wieder regnet oder schneit am 
wochenende,
dann nehme ich das Original ESK 1 mal wieder in die Hand.
Habe sogar noch ein unbenutztes MRF24WB0MB Modul rumliegen.

von Benny (Gast)


Lesenswert?

Ich benutze den PIC32MX795F512L. Die Version ist "v2013-06-15".
Das mit den defines ist mir bekannt. Es gibt zwei Zeilen, wovon man eine 
immer auskommentieren muss, um auszuwählen ob SPI1 oder SPI2 verwendet 
wird. Ich habe den Code bei SPI2 nur etwas editiert, da ich den 
Interrupt 1 (INT1) nutzen möchte und nicht den Interrupt 3 (INT3).

Ich wäre dir sehr dankbar für deine Hilfe.

von Peter C. (peter_c49)


Lesenswert?

Hallo Benny,

ausnahmsweise mal feierabend vor 20:00...
hab das MLA geladen und in "TCPIP - Demo App" reingesehen.
Wenn du DIE benutzt, dann musst du mehr geändert haben als das was du 
als "dein config" bezeichnest.

Zuerst, ich habe den MRF24G mit einem PIC24F auf dem Explorer16 in 
Slot-hälfte 2 , also SPI2 am laufen gehabt, gemäss meiner alten notes.
Das PIC24F PIM hab ich in der Firma u werde es wohl auch nicht am 
Wochenende zur hand haben.

Jetzt zum Pic32 ESK, im "HWP PIC32_ETH_SK_ETH795.h" sind schon die 
ersten hinweise das es eigentlich ohne gefrikel mit SPI1 auch nicht 
geht.
Da steht das es mit USB D+ D- kollidiert und deshalb nicht supportet 
ist. INT3 könnte auch ein problem werden wegen des PHY, der ist da hart 
angeschlossen (1k5 pullup).

Ich suche wenns wetter böse ist, am wochenende meinen privaten 
Explorer16 raus und schau da auch noch mal. Der ist mir eh lieber da es 
fast keine doppelbelegten PINs gibt.

Du solltest dennoch schon mal ein klitzekleines SPI2 testing machen.
Also initialisieren, ein byte senden und das gelesene ausgeben (uart).
Dann die SDI2+SDO2 verbinden, testen. RX u TX byte vergleichen. LED 
anmachen bei gut oder schlecht reicht ja auch wenn du kein UART dran 
hast.

Dann, CE RST und ev die restlichen PINs zu deinem MRF24 mal klappern 
lassen, ev mit LED oder Messgerät prüfen ob sie auch wie erwartet 
arbeiten.

welche Interrupt frei ist schaue ich am Wochenende.

Und falls du eine andere Demo benutzt, sag "welche" und was du ausser 
den Zeilen im 1.ten Post noch so geändert hast.

Nebenbei, die TCP Demos, wenn auf ESK configuriert, benutzen immer den 
ChipInternen Phy.

mfG
Peter ;-)

von Benny (Gast)


Lesenswert?

Ich habe mir heute nochmals ausgibig das Pinning angeschaut.

SPI1: Ist verfügbar, möchte ich jedoch eigentlich nicht nutzen, da ich 
eigentlich später noch den EXT_INT0 benötige (INT0 und SDO1 ist auf dem 
gleichen Pin).
SPI2: Ist belegt, einige Pins sind mit dem Ethernet Controller in 
Konflikt.
SPI3: Ist belegt, einige PIns sind mit dem PHY in Konflikt.
SPI4: Ist verfügbar, dort habe ich jedoch eine SD-Karte angeschlossen.

Ich werde meine WLAN-Dinge nun erstmal mit SPI1 machen. Wie ich dann 
später fortfahre weiß ich noch nicht.

Fakt ist auf jeden Fall, wenn man den PIC32 Etherner Starter Kit ist 
SPI2 und SPI3 nicht verfügbar.

@Peter C.: Ich danke dir nochmals ganz besonders für dein Mühe. Wegen 
mir musst du dir auf jeden Fall vorerst keine Mühe mehr machen. Du 
darfst deine Freizeit gerne anders nutzen ;-)

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.