Använder man i regel pull up/down vid SPI-bussar?
- 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?
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.
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.
Re: Använder man i regel pull up/down vid SPI-bussar?
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..
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..
Re: Använder man i regel pull up/down vid SPI-bussar?
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.
Då SDI till µC "släpps" när -CS är inaktiv kan det vara en bra idé att ha en pull-down på den.
Re: Använder man i regel pull up/down vid SPI-bussar?
Kör man med multimaster brukar man konfigurera sck, mosi, miso och ss som open drain.
Då måste man använda pull-up.
Då måste man använda pull-up.
- 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?
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
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
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:
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]
Jättebra riktlinjer som sparas i "bra-att-ha"-pärmen.
EDIT:Sparade texten nedan så ni ser hur korkad jag är

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

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
Ä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]
Re: Använder man i regel pull up/down vid SPI-bussar?
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å.
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å.
- 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?
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
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!
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

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!
Re: Använder man i regel pull up/down vid SPI-bussar?
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).
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).
- 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?
Bra förklarat
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!

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!
Re: Använder man i regel pull up/down vid SPI-bussar?
Ja pulldown mot jord, ett motstånd och en kondensator i serie, med värden valda så att de motsvara impedansen på signalens ledare.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![]()
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!
100 ohm i serie med 47p brukar passa bra till 90-110 ohms ledarimpedans.