Xilinx Spartan FPGA: SPI chip select geht nicht

Gast #1309145
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
Gast #1309326
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);
Gast #1309558
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);

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren