Hi,
arbeite gerade mit einem SAM7: an SPI1_CS0 und CS1 sitzen zwei
verschiedene ICs. Einzeln funktionieren beide einwandfrei, aber wenn ich
versuch beide zu initialisieren dann funktioniert keiner von beiden...
Ich glaub dass vielleicht das springen zwischen dem ein und dem anderen
IC nicht ganz stimt.
Hier mal meine Initialisierung am Anfang für beide ICs (SPI):
1 | AT91F_SPI1_CfgPIO();
|
2 | AT91F_SPI1_CfgPMC();
|
3 | AT91F_SPI_Disable(AT91C_BASE_SPI1);
|
4 | AT91F_SPI_Reset(AT91C_BASE_SPI1);
|
5 | AT91F_SPI_Reset(AT91C_BASE_SPI1);
|
6 |
|
7 | //Configure SPI0 in Master Mode with No CS selected
|
8 | AT91F_SPI_CfgMode(AT91C_BASE_SPI1, AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | SPI_PCS(BOARD_TSC_NPCS));
|
9 |
|
10 | // Configure CSx
|
11 | AT91C_BASE_SPI1->SPI_CSR[CS_INDEX] =(AT91C_SPI_NCPHA |
|
12 | (AT91C_SPI_DLYBS & DELAY_BEFORE_SPCK) |
|
13 | (AT91C_SPI_DLYBCT &DELAY_BETWEEN_CONS_COM) |
|
14 | (0xC8 << 8));
|
15 |
|
16 | // Configure CSx
|
17 | AT91C_BASE_SPI1->SPI_CSR[1] =(AT91C_SPI_NCPHA |
|
18 | (AT91C_SPI_DLYBS & DELAY_BEFORE_SPCK) |
|
19 | (AT91C_SPI_DLYBCT & DELAY_BETWEEN_CONS_COM) |
|
20 | (0xC8 << 8));
|
21 |
|
22 | //enable spi
|
23 | AT91C_BASE_SPI1->SPI_CR = AT91C_SPI_SPIEN;
|
Beim switchen von einem auf den anderen IC beschreibe ich bis jetzt
lediglich das Mode Register:
1 | AT91C_BASE_SPI1->SPI_MR = 0x00;
|
2 | AT91F_SPI_CfgMode(AT91C_BASE_SPI1, AT91C_SPI_MSTR | AT91C_SPI_MODFDIS | SPI_PCS(select));
|
Weiß jmd. was ich noch beachten muss bzw. welche Veränderungen ich noch
durchführen muss?
Gruß
Carsten