Forum: FPGA, VHDL & Co. Xilinx Spartan FPGA: SPI chip select geht nicht


von klaus (Gast)


Lesenswert?

Hallo miteinander,

ich habe Probleme das chip/slave select Signal (SS) für das SPI-Flash zu 
steuern. Ich habe es mit folgendem Code abschnitt probiert.
1
XSpi spi;
2
XSpi_Initialize(&spi, XPAR_SPI_FLASH_DEVICE_ID);
3
XSpi_SetOptions(&spi, XSP_MANUAL_SSELECT_OPTION | XSP_MASTER_OPTION);
4
XSpi_SetSlaveSelect(&spi, 1);

Die Leitung CS0_B bleibt aber HIGH.

Das Board ist ein Spartan-3AN Starter Kit von Digilent.
Jumperung dürfte richtig sein, da flashen funktioniert.

Ideen?

Viele Grüße

von klaus (Gast)


Lesenswert?

Teilweise gelöst, die Leitung wird nur für die Dauer einer Übertragung 
auf LOW gehalten. Aber Übertragen wird trotzdem nichts ("in" schreint 
unverändert - alle Werte 0x00)...
1
u8 out[4];
2
u8 in[4];
3
4
out[0] = 0x9F;
5
out[1] = 0xFF;
6
out[2] = 0xFF;
7
out[3] = 0xFF;
8
9
in[0] = 0x00;
10
in[1] = 0x00;
11
in[2] = 0x00;
12
in[3] = 0x00;
13
14
XSpi spi;
15
XSpi_Initialize(&spi, XPAR_SPI_FLASH_DEVICE_ID);
16
XSpi_SetOptions(&spi, XSP_MANUAL_SSELECT_OPTION | XSP_MASTER_OPTION);
17
XSpi_SetSlaveSelect(&spi, 1);
18
XSpi_Transfer(&spi, out, in, 4);

von klaus (Gast)


Lesenswert?

Puh, geschafft.
Das hier funktioniert:


1
u8 out[4];
2
u8 in[4];
3
4
out[0] = 0x9F;
5
out[1] = 0xFF;
6
out[2] = 0xFF;
7
out[3] = 0xFF;
8
9
in[0] = 0x00;
10
in[1] = 0x00;
11
in[2] = 0x00;
12
in[3] = 0x00;
13
14
XSpi spi;
15
XSpi_Initialize(&spi, XPAR_SPI_FLASH_DEVICE_ID);
16
XSpi_SetOptions(&spi, XSP_MANUAL_SSELECT_OPTION | XSP_MASTER_OPTION);
17
XSpi_Start(&spi);
18
XSpi_mIntrGlobalDisable(&spi);
19
XSpi_SetSlaveSelect(&spi, 1);
20
XSpi_Transfer(&spi, out, in, 4);

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.