Forum: Mikrocontroller und Digitale Elektronik USART SPI SAM4S


von Patrick S. (patricksch)


Lesenswert?

Hallo,
ich habe mir mein USART SPI Programm geschrieben, dass auch funktioniert 
solange ich im internen Loopmode bin (Tx->rx verbunden) oder MISO und 
MOSI Pins miteinander verbinde. Sobald ich mein SPI Flash anschliesse, 
bekomme ich oft falsche Werte. Der Receiver wird bei einem CS auf low 
resettet.
Ich benutze ein SAM4s und ein S25FL216K. (USART im SPI Master Mode)
Weiss jemand, was man hier noch berücksichtigen muss?
Die Timeouts des Atmel habe ich deaktiviert.
Hier der Code für den Write/Read Vorhang!

USART1->US_CR = US_CR_FCS;  //select slave, set CS to 0
/*start communication with slave */
USART1->US_CR = US_CR_RXDIS;
USART1->US_CR = US_CR_RXEN;

size_t i=0;
while(length)
{
while (!(USART1->US_CSR & US_CSR_TXRDY)){}
USART1->US_THR = US_THR_TXCHR((tx_data[i]));
while (!(USART1->US_CSR & US_CSR_RXRDY)){}
rx_data[i] = USART1->US_RHR & US_RHR_RXCHR_Msk;
length--;
i++;
}
/*end communication with slave */
USART1->US_CR = US_CR_RCS;  //release slave, set CS to 1

Bin für jede Idee dankbar!

von Michael (Gast)


Lesenswert?

Hallo Patrik,

ich würde mal die Hardware überprüfen.
-Ist der Baustein richtig mit Spannung versorgt (Bei einem Loop wird ja 
keine zusätzliche Spannungsversorgung benötigt)?
-Liegen alle nicht benutzten Pins auf einem definierten Potential 
(Pullup/Pulldown-Widerstände)?


Ich hatte mal ein Problem, wenn andere SPI-IC's am gleichen Bus hängen, 
die aber aus Stromspargründen ausgeschaltet waren. Diese haben sich über 
interne Dioden selbst versorgt und die eigentliche SPI-Kommunikation 
gestört.

von Patrick S. (patricksch)


Lesenswert?

Danke Michael,
Die Stromversorgung für den Flash ist konstant bei 3.3V.
Es ist ein Xplained Board von Atmel das ich benutze. (Stromversorung 
über USB) und an dem hängt derzeit nur der SPI Flash dran.

Die nicht definierten Pins sind alle auf high.

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.