forum.mcontrollers.com - hlavní stránka forum.mcontrollers.com - fórum

 

.: fórum - hlavní stránka :.
Technology Stronghold by Rudolf Vesely
How to build Microsoft System Center hosted cloud series
FAQFAQ HledatHledat Seznam uživatelůSeznam uživatelů Uživatelské skupinyUživatelské skupiny RegistraceRegistrace
ProfilProfil StatistikaStatistika Soukromé zprávySoukromé zprávy PřihlášeníPřihlášení

 
STM32F100 a SPI vysílání/příjem

 
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM
 
hazardrok
Profesionál
Profesionál


Založen: 16.1.2012
Příspěvky: 132

PříspěvekZaslal: 26 prosinec 2013, 20:01    Předmět: STM32F100 a SPI vysílání/příjem Citovat

Ahoj, pokouším se komunikovat s SD kartou a nedaří se mi správně rozchodit SPIčko. Podle návodů co jsem četl, tak ke komunikaci potřebuju vyslat jeden znak a jeden znak přijmout. Odeslat znak se mi daří bez problémů, ale jakmile se znak odešle tak hodiny přestanou tikat a já tedy nemůžu žádný znak přijmout. SS se s tímto také nastaví do high. Nevíte někdo, kde je zakopanej pes? Zde je kód:
kód:

spi_init(){
  SPI1->CR1 = 0     
  | SPI_CR1_MSTR                                                                // Master Selection   
  | SPI_CR1_BR_0                                                                // Baud Rate Control
  | SPI_CR1_BR_1                                                                // Baud Rate Control       
  | SPI_CR1_BR_2;                                                               // Baud Rate Control
 
  SPI1->CR2 = 0
  | SPI_CR2_SSOE;                                                               // SS Output Enable
  }

uint8_t SPI_sendchar(uint8_t send_char){
   uint16_t read_spi;
   SPI1->CR1 |= SPI_CR1_SPE;                                                    // SPI Enable
   
   SPI1->DR = (uint8_t)send_char;
   while(!(SPI1->SR & SPI_SR_TXE));
   
   while(!(SPI1->SR & SPI_SR_RXNE));
   read_spi = SPI1->CR1;
   
   while(!(SPI1->SR & SPI_SR_TXE));
   while((SPI1->SR & SPI_SR_BSY));
   SPI1->CR1 &= ~SPI_CR1_SPE;                                                   // SPI Disable
   return ((uint8_t)SPI1->CR1);
   }
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 478

PříspěvekZaslal: 27 prosinec 2013, 23:20    Předmět: Citovat

Musíš pořád vysílat. Jinak žádný hodiny.... SS bude podle mě v L dokud bude trvat požadavek na vysílaní - hlídej si TXE.
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 478

PříspěvekZaslal: 27 prosinec 2013, 23:21    Předmět: Citovat

..a SPE po celou dobu musí být povoleno..
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
hazardrok
Profesionál
Profesionál


Založen: 16.1.2012
Příspěvky: 132

PříspěvekZaslal: 29 prosinec 2013, 22:31    Předmět: Citovat

To znamená, že nám vysílat nějaký nesmysly jen proto, aby mi clk tikalo? Co když bych chtěl jen přijímat data a tikat jim k tomu do kroku?
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1460

PříspěvekZaslal: 29 prosinec 2013, 23:12    Předmět: Citovat

Preco nezmysly? Strandartne sa vysiela 0xFF a je to uplne korekne spravenie sa systemu s SPI. SPI sa potom sprava, akoby bol MOSI v stave log.1. Su AD prevodniky, ktore potrebuju pocas vycitavania udajov zapisovat nejake konkretne setup bajty a niektore SPI suciastky to zase nepotrebuju. Takze tak Smile
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
Radius
Profesionál
Profesionál


Založen: 22.2.2013
Příspěvky: 478

PříspěvekZaslal: 30 prosinec 2013, 19:08    Předmět: Citovat

Pokud jsi líný tikat, mužeš do toho zapojit DMA ale většinou ta komplikace nestojí za to..
_________________
x51 , ARM , XILINX
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Odeslat e-mail Zobrazit autorovy WWW stránky
 

 
Martin
ATmega pouzivatel
ATmega pouzivatel


Založen: 5.1.2008
Příspěvky: 1460

PříspěvekZaslal: 30 prosinec 2013, 19:59    Předmět: Citovat

SPI je jednoduchy posuvny register. Rozhranie SPi nefunguje tak, ze sa daju data len prijimat alebo len vysielat ako pri UARTe. Z posuvneho registra sa data "vysuvaju" na pin MOSI a "vsuvaju" z pinu MISO v rytme signalu CLK.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

 
hazardrok
Profesionál
Profesionál


Založen: 16.1.2012
Příspěvky: 132

PříspěvekZaslal: 31 prosinec 2013, 0:36    Předmět: Citovat

Dík za odpovědi...třeba konečně něco naprogramuju a nebudu se furt topit.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
 

Zobrazit příspěvky z předchozích:   
Zobrazit předchozí téma :: Zobrazit následující téma  
Přidat nové téma   Zaslat odpověď    Obsah fóra mcontrollers.com -> ARM Časy uváděny v GMT + 2 hodiny
 
Strana 1 z 1
Přejdi na:  
Můžete přidat nové téma do tohoto fóra.
Můžete odpovídat na témata v tomto fóru.
Nemůžete upravovat své příspěvky v tomto fóru.
Nemůžete mazat své příspěvky v tomto fóru.
Nemůžete hlasovat v tomto fóru.
Můžete k příspěvkům připojovat soubory
Můžete stahovat a prohlížet přiložené soubory
 



Num Lock Holder - app to hold Numlock
Copyright © 2017 Rudolf Veselý, mcontrollers.com.
Je zakázáno používat části tohoto webu bez souhlasu autora. || Powered by phpBB © 2001, 2002 phpBB Group - with RedSquare DoubleJ(Jan Jaap)