Använder man i regel pull up/down vid SPI-bussar?

PIC, AVR, Arduino, Raspberry Pi, Basic Stamp, PLC mm.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Magnus_K »

Hej hej,

Sitter och kladdar på ett kort och har kommit till SPI-bussen mellan en PIC16F690 och ett M74HC595 skiftregister.

Det jag sitter och funderar över är om man normalt sett använder någon pull up/down på SDO/SDI/SCK?

Om jag förstår det rätt så klockas data in i skiftregistret på uppåtgående flank och det borde därmed vara lämpligt med en pulldown på SCK? Men vad anser man då om SDO/SDI?

Vore himla intressant att få höra era erfarenheter och tankar kring det hela och kanske lyckas få till en bra bas till tänket.
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av TomasL »

Beror på vilken Mode SPI -bussen kör.
Användarvisningsbild
Micke_s
EF Sponsor
Inlägg: 6741
Blev medlem: 15 december 2005, 21:31:34
Ort: Malmö

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Micke_s »

Sätta ett pull-up på CS skadar inte tycker jag. I ditt fall blir det st_cp. Då minskar risken av att några bitar blir skickad vid uppstart..

Annars i 74hc595 fallet kanske en pull-up på OE hade varit bra. Beror lite på vad 74hc595 styr i sin tur.

Jag hade bara använt pull-up/down på sck, miso,mosi on något chip inte gillar flytande ingångar vid uppstart..
Användarvisningsbild
Icecap
Inlägg: 26647
Blev medlem: 10 januari 2005, 14:52:15
Ort: Starup (Haderslev), Danmark

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Icecap »

Man använder pull-<nånting> bara där det behövs. Om SPI-bussen behöver säkerställas till ett visst nivå kan man lägga en pull-up på -CS.

Då SDI till µC "släpps" när -CS är inaktiv kan det vara en bra idé att ha en pull-down på den.
Användarvisningsbild
baron3d
EF Sponsor
Inlägg: 1353
Blev medlem: 1 oktober 2005, 23:58:43
Ort: Torestorp

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av baron3d »

Kör man med multimaster brukar man konfigurera sck, mosi, miso och ss som open drain.
Då måste man använda pull-up.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Magnus_K »

Tack för alla svar!
Jättebra riktlinjer som sparas i "bra-att-ha"-pärmen.

EDIT:Sparade texten nedan så ni ser hur korkad jag är :wink:
Skulle precis trycka på sänd när det slog mig att använda EUSART-modulen i sync mode istället borde vara lämpligare :doh:

Antagligen ute på hal is men ni kanske kan ge svar på tal om det jag håller på med är vansinne eller inte.

Egentligen har ju inte 595:an ett SPI-interface (eller vad det kallas) men jag tänker försöka använda PIC:en till både multiplexa en display (som sitter i andra änden av 595:an) och lite annat processande, så vill jag göra allt för att avlasta PIC:en.
Tanken är då att koppla enligt följande:

Kod: Markera allt

PIC                 595

SCK/CLK    ->       SRCLK
I/O RB7    ->       RCLK
SDO        ->       DATA
/SS        ->       /OE
SDI        ->       OTHER FUNCTION
Tanken är att använda SSP-hårdvaran för att multiplexa displayen och göra det enligt ovan. Slave select:en slår av och på utgångarna från 595:an och SDI konfigureras som utgång och används inte för SPI-kommunikationen utan för att driva en annan LED-i stället.

Är det rätt väg att gå att använda SPI-modulen till det här eller borde jag bara "bitbanga" eller vad det kan tänkas heta?[/s]
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av TomasL »

Att tillägga, som baronen skriver, med tillägget om dina kretsar har Open drain eller Open collector så måste du använda pullup, inte fel ur signalhänsende att använda en svag pullup på datalinorna oavsett.
Skall du köra riktigt snabbt, så är ett par 33 ohms motstånd i serie med signalerna inte helt fel, ett vid sändaren och ett vid mottagaren, samt eventuell terminering mot jord.

Är klockan vilande låg, så är det inte fel med pulldown på den, och vice versa.
Cs bör i princip alltid ha pullup, då den i de flesta fall är aktiv låg (annars pulldown).

Använd hårdvarustöd om det finns, livet blir så mycket enklare då.
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Magnus_K »

Nu ska vi vara lugna och försiktiga så Magnus förstår.

Om en I/O är open drain eller open collector så är det en port som bara kan sänka ström, dessa ska man alltså i regel ha en pull-up på? Runt 10-20k kanske?
Vilka kretsar har såna I/O:s egentligen? Antagligen har jag inte förstått innebörden av orden men hur nämns det här i databladet? Kan man säga att det är motsatsen till en 3-state I/O?

Seriemotstånd på datalinor jag läst om någonstans och tolkade det också som om det oftast används vid höghastighetskommunikation. Hänger med på det, men vad menar du med "eventuell terminering mot jord", TomasL? Förstår jag dig rätt att du menar pull-down här? Hmm, eller ja, det är ju faktiskt precis det man gör med pull up/down :wink:

Jag är tyvärr ganska dålig på det här med hårdvarumodulerna i dessa microcontrollers. Har alltid svårt att få igång kolverket. EUSART-modulen är dock beprövad så det här ska nog gå vägen!
Nerre
Inlägg: 27223
Blev medlem: 19 maj 2008, 07:51:04
Ort: Upplands väsby

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Nerre »

Utgångar finns väl generellt i huvudsak i tre olika varianter:

1. Open collector, kan bara sänka, används ofta med pull-up (men med t.ex. TTL-logik tror jag inte det krävs eftersom ingångarna där är en emitter)
2. Hög/låg, i TTL-terminologi kallas dessa "totem pole", i MOS är det nog "vanliga" utgångar.
3. Tri-state, som en hög/låg men kan också vara "högohmig" (d.v.s. i princip öppen).

Jag tror det är ovanligt med utgångar som bara kan vara "hög" (d.v.s. inversen av open collector).

Open collector används också om flera utgångar ska kunna driva samma ingång. Det blir i princip en "AND-funktion" (eller inverterad OR, om nån är låg så sänker den, om alla är höga (=AND) så blir det hög).

Tri-state används ju också om flera ska dela på samma ingång, men brukar då behöva kombineras med nån latch-funktion (anslutning mot en buss är vanligt användningsområde, t.ex. minneskretsar har oftast en Output Enable som ställer utgångarna i högohmigt läge).
Användarvisningsbild
Magnus_K
EF Sponsor
Inlägg: 5854
Blev medlem: 4 januari 2010, 17:53:25
Ort: Skogen mellan Uppsala-Gävle

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av Magnus_K »

Bra förklarat :tumupp:
Sökte runt lite och vad jag förstår är det inte allt för vanligt med denna typ av utgångar idag. Då kanske jag inte missat det ändå...

Det får bli bra så här, tack för all hjälp!
Användarvisningsbild
TomasL
EF Sponsor
Inlägg: 46963
Blev medlem: 23 september 2006, 23:54:55
Ort: Borås
Kontakt:

Re: Använder man i regel pull up/down vid SPI-bussar?

Inlägg av TomasL »

Magnus_K skrev:Nu ska vi vara lugna och försiktiga så Magnus förstår.

Om en I/O är open drain eller open collector så är det en port som bara kan sänka ström, dessa ska man alltså i regel ha en pull-up på? Runt 10-20k kanske?
Vilka kretsar har såna I/O:s egentligen? Antagligen har jag inte förstått innebörden av orden men hur nämns det här i databladet? Kan man säga att det är motsatsen till en 3-state I/O?

Seriemotstånd på datalinor jag läst om någonstans och tolkade det också som om det oftast används vid höghastighetskommunikation. Hänger med på det, men vad menar du med "eventuell terminering mot jord", TomasL? Förstår jag dig rätt att du menar pull-down här? Hmm, eller ja, det är ju faktiskt precis det man gör med pull up/down :wink:

Jag är tyvärr ganska dålig på det här med hårdvarumodulerna i dessa microcontrollers. Har alltid svårt att få igång kolverket. EUSART-modulen är dock beprövad så det här ska nog gå vägen!
Ja pulldown mot jord, ett motstånd och en kondensator i serie, med värden valda så att de motsvara impedansen på signalens ledare.
100 ohm i serie med 47p brukar passa bra till 90-110 ohms ledarimpedans.
Skriv svar