Forum: Compiler & IDEs AP7000 und SPI: CS-Probleme


von André Schimschar (Gast)


Lesenswert?

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é

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.