Hallo zusammen!
Ich habe ein kleines Problem. Und zwar habe ich an mein NGW100 ein
CC2420EM drangebastelt und möchte es nun über SPI konfigurieren. Hier
meine SPI-Initialisierung:
1 | //SPI-Register konfigurieren
|
2 | AVR32_SPI0.cr=AVR32_SPI_CR_SWRST_MASK; //Reset
|
3 | AVR32_SPI0.mr=AVR32_SPI_MR_MSTR_MASK|AVR32_SPI_MR_PCS_MASK|(0<<AVR32_SPI_MR_FDIV_OFFSET)|(0<<AVR32_SPI_MR_MODFDIS_OFFSET);
|
4 | AVR32_SPI0.mr&=~(AVR32_SPI_MR_PS_MASK|AVR32_SPI_MR_PCSDEC_MASK|AVR32_SPI_MR_DLYBCS_MASK);
|
5 | AVR32_SPI0.mr|=(0<<AVR32_SPI_MR_PS_OFFSET)|(0<<AVR32_SPI_MR_PCSDEC_OFFSET)|(0<<AVR32_SPI_MR_DLYBCS_OFFSET);
|
6 | AVR32_SPI0.mr|=AVR32_SPI_MR_PCS_MASK;
|
7 | AVR32_SPI0.mr&=~(1<<AVR32_SPI_MR_PCS_OFFSET);
|
8 | AVR32_SPI0.csr0=(0<<AVR32_SPI_CSR0_BITS_OFFSET)|
|
9 | (250<<AVR32_SPI_CSR0_SCBR_OFFSET)|
|
10 | (0<<AVR32_SPI_CSR0_DLYBS_OFFSET)|
|
11 | (0<<AVR32_SPI_CSR0_DLYBCT_OFFSET)|
|
12 | (0<<AVR32_SPI_CSR0_CSAAT_OFFSET)|
|
13 | (1<<AVR32_SPI_CSR0_NCPHA_OFFSET);
|
14 | AVR32_SPI0.idr=0xffffffff;
|
15 | AVR32_SPI0.cr=AVR32_SPI_CR_SPIEN_MASK;
|
16 | //SPI-PIO disablen
|
17 | AVR32_PIOA.pdr |= ( 1<<AVR32_PIO_PDR_P0_OFFSET )|( 1<<AVR32_PIO_PDR_P1_OFFSET )|( 1<<AVR32_PIO_PDR_P2_OFFSET )|( 1<<AVR32_PIO_PDR_P3_OFFSET );
|
18 | AVR32_PIOA.pudr|= ( 1<<AVR32_PIO_PUDR_P0_OFFSET )|( 1<<AVR32_PIO_PUDR_P1_OFFSET )|( 1<<AVR32_PIO_PUDR_P2_OFFSET )|( 1<<AVR32_PIO_PUDR_P3_OFFSET );
|
19 | AVR32_PIOA.asr |= ( 1<<AVR32_PIO_ASR_P0_OFFSET )|( 1<<AVR32_PIO_ASR_P1_OFFSET )|( 1<<AVR32_PIO_ASR_P2_OFFSET )|( 1<<AVR32_PIO_ASR_P3_OFFSET );
|
Der SPI-Bus haut soweit auch hin. Strobebefehle und das Auslesen des
Statusbytes funktionieren. Das Problem ist jetzt nur das der CS für die
8Bit auf Low ist und dann automatisch wieder auf high geht. Wenn ich
jetzt aber Register Beschreiben und Lesen möchte, funktioniert das
nicht, weil das CS-Signal für 1 Adressbyte und 2 Datenbyte auf Low sein
muss.Ohne, dass zwischendurch das CS-Signal wieder auf High geht. Was
muss ich tun?
Danke im voraus...
André