1 | //init SPI erste tests
|
2 |
|
3 | // es gibt 3 verdrahtete /SS, der vierte (//SS3) ist nicht herausgefuehrt
|
4 | // und damit fuer Erweiterungen nutzbar
|
5 |
|
6 | //PINS freigeben fuer SPI
|
7 |
|
8 | PMC->PMC_PCER0 = 1 << ID_SPI0;
|
9 |
|
10 | // SPI gehoert zu peripheral A
|
11 |
|
12 | //PIOA->PIO_WPMR = PIO_WPKEY | WPEN_0;
|
13 | //PIOB->PIO_WPMR = PIO_WPKEY | WPEN_0;
|
14 |
|
15 | PIOA->PIO_PDR = PIO_PA27A_SPI0_SPCK;
|
16 | PIOA->PIO_PDR = PIO_PA25A_SPI0_MISO;
|
17 | PIOA->PIO_PDR = PIO_PA26A_SPI0_MOSI;
|
18 | PIOA->PIO_PDR = PIO_PA28A_SPI0_NPCS0;
|
19 | PIOA->PIO_PDR = PIO_PA29A_SPI0_NPCS1;
|
20 |
|
21 |
|
22 | PIOB->PIO_PDR = PIO_PB21B_SPI0_NPCS2;
|
23 | PIOB->PIO_PDR = PIO_PB23B_SPI0_NPCS3;
|
24 |
|
25 | /* offenbar irrelevant
|
26 | PIOA->PIO_OER = PIO_PA29A_SPI0_NPCS1;
|
27 | PIOB->PIO_OER = PIO_PB21B_SPI0_NPCS2;
|
28 | PIOB->PIO_OER = PIO_PB23B_SPI0_NPCS3;
|
29 | */
|
30 |
|
31 | PIOA->PIO_ABSR = PIO_PA27A_SPI0_SPCK;
|
32 | PIOA->PIO_ABSR = PIO_PA25A_SPI0_MISO;
|
33 | PIOA->PIO_ABSR = PIO_PA26A_SPI0_MOSI;
|
34 | PIOA->PIO_ABSR = PIO_PA28A_SPI0_NPCS0;
|
35 | PIOA->PIO_ABSR = PIO_PA29A_SPI0_NPCS1;
|
36 | PIOB->PIO_ABSR = PIO_PB21B_SPI0_NPCS2;
|
37 | PIOB->PIO_ABSR = PIO_PB23B_SPI0_NPCS3;
|
38 | //PIOA->PIO_WPMR = PIO_WPKEY | WPEN_1;
|
39 | //PIOB->PIO_WPMR = PIO_WPKEY | WPEN_1;
|
40 |
|
41 | // Control Register
|
42 |
|
43 | SPI0->SPI_CR = SPI_CR_SPIDIS;
|
44 | SPI0->SPI_CR = SPI_CR_SWRST; // RESET
|
45 | //SPI0->SPI_CR = SPI_CR_LASTXFER | SPI_CR_SPIEN;
|
46 | SPI0->SPI_CR = SPI_CR_SPIEN;
|
47 |
|
48 | //SPI Mode Register
|
49 |
|
50 | SPI0->SPI_WPMR = SPI_WPMR_WPKEY_PASSWD;
|
51 | SPI0->SPI_MR = 1 << SPI_MR_DLYBCS_Pos | SPI_MR_MODFDIS | SPI_MR_PS | SPI_MR_MSTR;
|
52 | //SPI0->SPI_MR = 1 << SPI_MR_DLYBCS_Pos | SPI_MR_WDRBT | SPI_MR_MODFDIS | SPI_MR_PS | SPI_MR_MSTR;
|
53 |
|
54 | //SPI0->SPI_WPMR = SPI_WPMR_WPKEY_PASSWD | SPI_WPMR_WPEN;
|
55 |
|
56 | // Nun die drei (4) Kanaele setzen
|
57 |
|
58 | SPI0->SPI_CSR[0] = 0 << SPI_CSR_DLYBCT_Pos | 0 << SPI_CSR_DLYBS_Pos | 10 << SPI_CSR_SCBR_Pos | SPI_CSR_BITS_8_BIT | SPI_CSR_CSNAAT;
|
59 | SPI0->SPI_CSR[1] = 0 << SPI_CSR_DLYBCT_Pos | 0 << SPI_CSR_DLYBS_Pos | 20 << SPI_CSR_SCBR_Pos | SPI_CSR_BITS_8_BIT | SPI_CSR_CSNAAT;
|
60 | SPI0->SPI_CSR[2] = 0 << SPI_CSR_DLYBCT_Pos | 0 << SPI_CSR_DLYBS_Pos | 40 << SPI_CSR_SCBR_Pos | SPI_CSR_BITS_8_BIT | SPI_CSR_CSNAAT;
|
61 | SPI0->SPI_CSR[3] = 0 << SPI_CSR_DLYBCT_Pos | 0 << SPI_CSR_DLYBS_Pos | 80 << SPI_CSR_SCBR_Pos | SPI_CSR_BITS_8_BIT | SPI_CSR_CSNAAT;
|