Fórum témák

» Több friss téma
Fórum » SPI busz működése
 
Témaindító: cassis, idő: Nov 7, 2009
Lapozás: OK   3 / 3
(#) pbalazs válasza SKY hozzászólására (») Okt 28, 2015 /
 
Ha jól értem, menet közben nem lehet gond, mert megy a szoftver, csak attól tartasz, hogy programozáskor ide-oda billegnek a lábak.
Én nem trükköznék ellenállásokkal, meg diódákkal, hanem simán bekötném egy portra a leválasztó IC engedélyező bemenetét, persze lehúzó ellenállással. Ekkor az output enable magasban, a chip select pedig alacsonyban kell legyen, hogy a slave kimenete rákerülhessen a buszra. Ez két láb. Ezen kívül még két lábnak kell ugyanígy állnia, hogy a másik slave is kikerüljön a buszra, és összeakadjanak. Szerintem ez azért esélytelen...
Esetleg lehet a leválasztó kimeneteire soros ellenállást tenni, ami még az EMC-ben is segít.
(#) SKY válasza pbalazs hozzászólására (») Okt 29, 2015 /
 
Igen, elsősorban a programozás alatti állapot a kérdéses, de az sem kizárt, hogy véletlenül kimenet marad az adott láb... szóval ez megint csak növeli a statisztikai esélyét...
Ugye ha nincs engedélyezve a !CS a leválasztott IC-n, akkor magas impedanciájú az adat kimenete. Szerintem ez a leválasztó ezt nem tudja kezelni a bemenetén (adum1402), azaz ilyenkor bizonytalan lenne a kimenete, vagyis fixre kell húzni még a leválasztott oldalon a bemenetét, tehát mindig H vagy L lesz.
Ha alacsonyra húzom, akkor a rajzolt diódás megoldás minden esetben megvédi, maximum az a kérdés, hogy ha ezzel az időtartammal késve érkezik be a logikai állapot, akkor rosszat olvas be, vagy úgy kell ezt elképzelni, hogy az órajel élétől kezdve vár az állapotra az egész félperiódusban?

Szerintem ha az enable lábbal ügyeskednénk, annál mindig lehetne minimális hibalehetőség.
(#) SKY hozzászólása Okt 30, 2015 /
 
Sziasztok!
Egy mcu !SS lábát csak akkor kell bekötni, ha egy másik mikrovezérlővel van összekötve és slave módban kell lennie? Ennek ugye nincs köze a !CS bemenethez más perifériás eszközön? Kell valamilyen lehúzó ellenállást tenni a szabadon hagyott !SS lábra?
(#) SKY hozzászólása Okt 30, 2015 /
 
Valamint van különbség a 8 bites és a 16 bites processzorok között abban, hogy egyszerűbb az adat beolvasása, ha az például 24 bites? Tehát a 16 bitesben az SPI regisztere nagyobb és nem kell annyiszor kiolvasni, vagy programozás részről szemlélve szinte ugyanolyan nehézségű egy ilyen eszköz adatainak kiolvasása bármelyik PIC-el illetve a kész C függvény ezt automatikusan lekezeli pl. MikroCben?
(#) BESENYII hozzászólása Nov 15, 2015 /
 
Sziasztok.

Problémám adódott DSPIC33 SPI használatával: 3 darab 8- bites shift regisztert 74HCT165-öt szeretnék beolvasni vele 8-bit modban. Mérve ez küldi is az adatokat a PIC nek.
Az SPI 8 bit -es módban van, hiába indítom 3 szor az csak az első 8 bit -et olvassa.
Hogyan lehet 8 vagy 16 bit-től eltérő hosszú olvasásra birni.
  1. void SPI_Init(void)
  2.  {
  3.  
  4.  IEC0bits.SPI1IE = 0; //Desactivation de l'interruption SPI
  5.  SPI1STAT =0x0;
  6.  SPI1CON1=0x0;
  7.  SPI1CON1bits.DISSCK = 0; //Activation Clock
  8.  SPI1CON1bits.DISSDO = 1; //Activation SDO
  9.  SPI1CON1bits.MODE16 = 0; //Communication 8 bit - 16 bit
  10.  SPI1CON1bits.SSEN=0; //Activation du Slave Select
  11.  SPI1CON1bits.CKE = 0;
  12.  SPI1CON1bits.CKP = 0;  // osc polaritás
  13.  SPI1CON1bits.MSTEN = 1; //Master Mode
  14.  SPI1CON1bits.SMP = 0;
  15.  SPI1CON1bits.SPRE = 0b111; //Secondaire prescaler 1:1
  16.  SPI1CON1bits.PPRE = 0b00;  //Primari 1 -->Clock 10 MHZ 0b01
  17.  SPI1STATbits.SPIEN = 1;    // modul aktiv
  18. }
  19.  
  20. int Nyomogomb(void)
  21.  {
  22.         SPI1BUF = 0x0000;
  23.     int i,kapcsol;     
  24.                 LD_pin=0;      
  25.                         for(i=3; i>0; --i)
  26.                 {
  27.                 SPI1BUF = 0x0000;
  28.                 while(SPI1STATbits.SPITBF);
  29.                 LD_pin = 1;
  30.                            kapcsol = SPI1BUF;
  31.                 }
  32.                        return kapcsol;
  33.  }
A hozzászólás módosítva: Nov 15, 2015
(#) Droot hozzászólása Jan 29, 2016 /
 
Egy 50MHz-es SPI buszon szeretném kiszámolni az adatátviteli sebességet kb/s-ben.
Tehát 50000000 bitet visz át 1 másodperc alatt, 50000000/8/1024=6103,515625kb/s az átviteli sebesség?
Nekem kicsit furcsa, egy nagyságrenddel kevesebbre számítottam.
(#) Bender válasza Droot hozzászólására (») Jan 29, 2016 / 1
 
Pedig az annyi. 6103kiB/s. Ha nincs kicsit több szünet a byteok közt.
(#) elektros90 hozzászólása Jan 4, 2017 /
 
Sziasztok.

SPI-on társalgok az L3GD20 gyro szenzorral. A csatolt képen az X tengely adatait kérem le. Mindenzt STM32F429 discovery boardon. (Most ismerkedek ezekkel a dolgokkal.)
A kérdésem az ami a képen látható. Az rendben van, hogy a MOSI magas szinten van miközben a CLK inaktív?
(#) Bakman válasza elektros90 hozzászólására (») Jan 4, 2017 /
 
Az csak akkor érdekes, amíg a CS vonal aktív (alacsony szinten van). Ha a CS inaktív, akár a boci boci tarkát is eljátszhatod a MOSI vonalon, érdemi dolog nem fog történni.
A hozzászólás módosítva: Jan 4, 2017
(#) b10up hozzászólása Jan 21, 2018 /
 
Sziasztok!

Adott egy 18F452, SD kártyáról olvasok vele SPI buszon. Szépen működik is, viszont szintén SPI-n menne mellé egy PTxxxx SPI buszos LED kijelző meghajtó IC is.

Az SD kártya viszi a PIC hardveres SS lábát, a kijelző driver SS-nek egy random IO portot adtam.

A probléma az, hogy ha a kijelzőnek küldök adatot, akkor az IO portot kézzel húzom le ameddig neki szól, viszont természetesen ilyenkor az SD kártya is "megcímződik".

Le lehet tiltani menet közben vagy engedélyezni a hardveres SS lábat valahogy, hogy ha más eszköznek küldök, csak az kapja meg, akinek én szeretném?
A hozzászólás módosítva: Jan 21, 2018
(#) Bakman válasza b10up hozzászólására (») Jan 22, 2018 / 1
 
Az adatlap szerint a SS láb csak akkor játszik, ha a kontroller, mint SPI Slave eszköz van konfigurálva. Nem? sspcon1 regiszter, bit 3-0.
(#) b10up válasza Bakman hozzászólására (») Jan 22, 2018 /
 
Fúú ezt nagyon benéztem, tényleg
Átnéztem még párszor a dolgokat, az SD/MMC könyvtár miatt lett definiálva az SS láb master módban is, az miatt rángatja az a portot a könyvtár, és nem az SPI miatt önmagában. Csak erről ahogy mindig próbálkoztam egyre több mindennel, megfeledkeztem.
Köszi a felvilágosítást, most már értem, mi folyik itt, és rendesen működik
Következő: »»   3 / 3
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem