Smazat příspěvek

 Chystáte se smazat zprávu (se všemi případnými odpověďmi) z kategorie Hlavní diskuze:


22.05.2020 (14:32:57)
deny hoch obalka :
Zdravím místní kolegy,
Dnes bych Vás chtěl poprosit o objasnění funkce sběrnice SPI. SPI používám na procesorech STM od firmy ST, ale pouze v režimu "Master" s jinými zařízeními (například ADC, DAC atd.). Chtěl bych tuto sběrnici použít v režimu komunikace mezi procesory - jeden procesor nastaven jako "Master" a druhý jako "Slave". Není mi jasná následující věc :
SPI funguje na přenosu dat pomocí hodinového signálu (který generuje Master) a dvou nezávislých vodičů (MISO, MOSI). Není mi jasné, když Master odešle do Slave příkaz vyčíst (třeba adresu registru), musí pak Master chvíli počkat, aby si Slave data připravil a až pak začít vyčítat data (tikat hodinovým signálem) ? Sekvence by mohla být třebas následovná :
1.) Master shodí CS signál, načež Slave pozná, že se zahajuje komunikace
2.) Master pošle třebas 8-bitové slovo, kde je příkaz, co má Slave dělat.
3.) Počká nějaký čas, aby si Slave data připravil.
4.) Master začne vyčítat data ze Slave (třeba 32-bitové slovo)
5.) Po vyčtení všech dat, Master nahazuje zpět CS pin.
6.) Slave detekuje konec komunikace.

Je to takto proveditelné nebo někde dělám neodpustitelnou chybu ? Zatím je to pouze teoretické fungování SPI sběrnice, nikoliv praktické zapojení. Než se do něčeho pustím, rád bych tomu plně porozuměl.
Děkuji Vám za váš čas.
23.05.2020 (18:58:34)
RayeR (web) :
SPI sem zatim v zadnem MCU jako slave nepouzival, tak nechci trousit naka velka moudra. Kdyz mas nakou SPI periferii, treba pamet nebo ADC, tak ta ma v HW implementovany naky jednoduchy stavovy automat, ktery okamzite reaguje na to, co mu master naklokuje, max. u nakych pameti je tam pridan treba 1 dummy byte aby se to stihlo vycist. U MCU tusim bud muzes mit naky buffer, v kterym budes mit pripraveny data, ktery se budou atomaticky odesilat masterovi, ale pokud potrebujes reagovat na konkretni command byte, tak je jasny, ze tam bude muset bejt naka pauza, nez si slave prechrousta a vygenereuje nakou odpoved. Taky si nak matne spominam, ze na STM32 byla v SPI slave rezimu naka buga zminena v errata, tak si je radsi predem procti, at se nedivis...
23.05.2020 (19:04:19)
RayeR (web) :
Este k tem dele trvajicim prikazum, obvykle ten slave implementuje cteni nakyho status registru, ke budes mit naky bitflag (rdy/busy), ze uz je to hotovo/prikaz probiha, takze az prikaz zpracujes, tak nahodis rdy a master bude pollovat dokud se ten bit nenahodi a pak si muze treba vycist odpoved. Pripadne muzes na slave dedikovat naky pin jako INT, kterym budes mastera informovat, ze je hotovo.
23.05.2020 (23:06:50)
deny hoch obalka :
Děkuji ti velice, RayeR.

Nebylo mi právě jasné, jak je možné, že Slave má připravené data hned, jakmile Master naklokuje (hezké slovo :) ) příkaz. Bohužel, to v MCU asi neudělám - možná přes DMA by něco šlo, ale nejsem si jistý, jak by to fungovalo. Myšlenka s INT pinem je zajímavá a rozhodně dost věcí by vyřešila.
Ještě si nějaké podklady prostuduji. Sice je to moje chyba, ale angličtina je pro staršího člověka (já) trochu horší, takže jsem velice rád za jakékoliv české rady a podklady. Přechod z x51, AVR až k STM pro mě byl celkem komplikovaný, ale nějak jsem to zvládl. Rád se totiž učím novým věcem, aby mozek úplně nedegradoval.
25.05.2020 (20:17:57)
deny hoch obalka :
Děkuji StandaM.
Nějak jsem to přelouskal a přijde mi to celkem přínosné.

Až budu něco s SPI a komunikací mezi CPU stavět, rozhodně vyzkouším obě metody. Něco mi ale říká, že INT pin bude lepší, neboť je to hardwarové řešení, které nebude využívat jádro narozdíl od metody "Pollingu".

Děkuji za rady.
25.05.2020 (21:56:11)
RayeR (web) :
To bezne pouzivaji pomalejsi periferie, jako treba MEMS akcelerometry, mas tam pin INT/DATA ready, posles slave prikaz aby zmeril hodnotu, mezitim delas neco jinyho a az prijde to preruseni, tak si prectes namerenou hodnotu. Tak by to slo asi udelat v tom slave MCU taky.


Přezdívka:*
Heslo:*

███   ███   ███   
  █   █ █   █     
███   █ █   ███   
█     █ █   █ █   
███   ███   ███   
Opiš:*

Zde můžete smazat vlastní vlákno nebo kteroukoliv odpověď v něm. Můžete smazat vlastní odpověď v cizím vlákně, pokud na ni ještě nikdo jiný nereagoval. Mazat cizí vlákna a odpovědi v nich mohou pouze admini. Smazání příspěvku je nevratná operace! Smazáním vzkazu se smažou i odpovědi na něj.
Seznam uživatelů
Zpět na knihu