SPI STM32 fullduplex

Michal Grunt michal.grunt na vynet.cz
Čtvrtek Červenec 3 15:14:53 CEST 2014


Nemělo by to být nějak takto? Při čtení rovnou zjistit status a ten pak pomocí while otestovat a případně dále zjišťovat pomoci SPI_Receive8?

// Send Close Command
temp = SPI_ReadWrite8(S0_CR,CR_CLOSE);
// Waiting until the S0_CR is clear
while (temp) temp = SPI_Receive8(S0_CR);

-----Original Message-----
From: Hw-list [mailto:hw-list-bounces na list.hw.cz] On Behalf Of Michal Grunt
Sent: Thursday, July 03, 2014 9:58 AM
To: HW-news (hw-list na list.hw.cz)
Subject: SPI STM32 fullduplex

Experimentuji s ethernetem W5100 (s STM32F030). Inicializace je v pohodě, ping běží. Ale když jsem zkoušel jednoduchý web (jenom zobrazit text) tak mi tam cosi nefunguje (blíže jsem to zatím nezkoumal). Jako vzor jsem vzal tento kód:
http://blog.csdn.net/hit97/article/details/6739806 (nic jiného jsem nenašel, google vyhazuje samé příklady pro Arduino a z toho se moc vycházet nedá) Chtěl jsem se zeptat zda mám vůbec správně funkci read pro SPI, resp. ve výše zmíněném odkazu je kód např.:

// Send Close Command
SPI_Write(S0_CR,CR_CLOSE);
// Waiting until the S0_CR is clear
while(SPI_Read(S0_CR));

No a tím, že mám nastaveno SPI na fullduplex tak už ve funkci SPI_Write (resp. u mě SPI_ReadWrite8) je jako poslední položka read (resp. SPI_ReceiveData8):

uint8_t SPI_ReadWrite8(uint8_t out) {
   /*!< Wait until the transmit buffer is empty */
   while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_TXE) == RESET) {
   }
   /*!< Send the byte */
   SPI_SendData8(SPI1, out);
   /*!< Wait to receive a byte*/
   while (SPI_I2S_GetFlagStatus(SPI1, SPI_I2S_FLAG_RXNE) == RESET) {
   }
   /*!< Return the byte read from the SPI bus */
   return SPI_ReceiveData8(SPI1);
 }

A teď je otázka zda když kód v odkazu přepíšu na:

// Send Close Command
SPI_ReadWrite8(S0_CR,CR_CLOSE);
// Waiting until the S0_CR is clear
while(SPI_Receive8(S0_CR));

tak zda se bude chovat tak jak je očekáváno v originále (v odkazu) - zda poslední příkaz SPI_Receive8 už nebude číst něco jiného když už je SPI_Receive8 v SPI_ReadWrite8.

Snad jsem se vyjádřil tak aby to bylo k pochopení...

Děkuji
MG
_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz Hw-list na list.hw.cz http://list.hw.cz/mailman/listinfo/hw-list


Další informace o konferenci Hw-list