-
1. Data: 2016-05-24 23:29:32
Temat: pullup na lini CS
Od: Atlantis <m...@w...pl>
Trochę głupie pytanie, ale dopiero teraz przyszło mi się nad nim
zastanowić. ;)
Czy pullup na linii CS interfejsu SPI koniecznie musi być zewnętrzny? W
przypadku AVR-ów odpowiedziałbym bez wahania, że tak. Jednak tam jedyny
(przynajmniej w przypadku znacznej części układów) interfejs SPI był
dzielony z ISP do programowania układu. Istniało więc niebezpieczeństwo,
że stan nieustalony na linii CS spowoduje, że układ na magistrali SPI
zacznie przeszkadzać w programowaniu układu.
A jak sprawa wygląda z MCU 32bit, które mają osobne spi? Wystarczy
wewnętrzny pull-up, czy też będzie on za słaby? A może istnieje jeszcze
inny powód, dla którego ten rezystor musi tam być?
Projektując jedną płytkę przeoczyłem ten element i teraz się
zastanawiam, czy lutować go prowizorycznie na prototypie, czy też układ
obejdzie się bez niego. Chodzi o pamieć flash AT45DBxxx.
-
2. Data: 2016-05-25 00:04:53
Temat: Re: pullup na lini CS
Od: "Andrzej W." <a...@w...pl>
W dniu 2016-05-24 o 23:29, Atlantis pisze:
> Trochę głupie pytanie, ale dopiero teraz przyszło mi się nad nim
> zastanowić. ;)
> Czy pullup na linii CS interfejsu SPI koniecznie musi być zewnętrzny? W
> przypadku AVR-ów odpowiedziałbym bez wahania, że tak. Jednak tam jedyny
> (przynajmniej w przypadku znacznej części układów) interfejs SPI był
> dzielony z ISP do programowania układu. Istniało więc niebezpieczeństwo,
> że stan nieustalony na linii CS spowoduje, że układ na magistrali SPI
> zacznie przeszkadzać w programowaniu układu.
>
> A jak sprawa wygląda z MCU 32bit, które mają osobne spi? Wystarczy
> wewnętrzny pull-up, czy też będzie on za słaby? A może istnieje jeszcze
> inny powód, dla którego ten rezystor musi tam być?
>
> Projektując jedną płytkę przeoczyłem ten element i teraz się
> zastanawiam, czy lutować go prowizorycznie na prototypie, czy też układ
> obejdzie się bez niego. Chodzi o pamieć flash AT45DBxxx.
>
Jeśli na SPI masz jednego slave, albo masz pewność, że wszystkie slave
trzymają linię SOMI w HZ jeśli mają wybrany CS to nie musisz mieć
zewnętrznego podciągania.
Ale jeśli którykolwiek slave cokolwiek wystawia na linii SOMI po
ustawieniu CS to może być kłopot bo wszystkie CS po restarcie MCU są w
stanie nieustalonym.
--
AWa.
-
3. Data: 2016-05-26 22:12:20
Temat: Re: pullup na lini CS
Od: Jakub Rakus <s...@o...pl>
W dniu 24.05.2016 o 23:29, Atlantis pisze:
> Trochę głupie pytanie, ale dopiero teraz przyszło mi się nad nim
> zastanowić. ;)
Niegłupie, sprawa jest istotna i czasem potrafi być upierdliwa.
> Czy pullup na linii CS interfejsu SPI koniecznie musi być zewnętrzny? W
> przypadku AVR-ów odpowiedziałbym bez wahania, że tak. Jednak tam jedyny
> (przynajmniej w przypadku znacznej części układów) interfejs SPI był
> dzielony z ISP do programowania układu. Istniało więc niebezpieczeństwo,
> że stan nieustalony na linii CS spowoduje, że układ na magistrali SPI
> zacznie przeszkadzać w programowaniu układu.
Ostatnio popełniłem projekcik z Atmegą8 i jakimiś ADC z Analoga, które
mają taki uproszczony SPI bez wykorzystania MOSI - jak im się podaje
clock to wypychają dane na MISO, a CS jest aktywny stanem wysokim, więc
dla ustalenia stanu dałem rezystor zewnętrzny do masy. I jak jest
miejsce na PCB to lepiej stan na CS jakoś ustalić. Dla izolacji SPI od
ISP Atmel zaleca dać na liniach SPI rezystory szeregowe kilka kOhm, ale
u mnie się to nie sprawdziło - przy zegarze SPI 1MHz zbocza były
masakrycznie nachylone i komunikacja nie działała. Zwarłem więc te
rezystorki i działa zarówno komunikacja, jak i programowanie.
> A jak sprawa wygląda z MCU 32bit, które mają osobne spi? Wystarczy
> wewnętrzny pull-up, czy też będzie on za słaby? A może istnieje jeszcze
> inny powód, dla którego ten rezystor musi tam być?
Podpinałem jakiegoś STM32 do ADC od Maxima, rezystor pull-up na CS
standardowo zostawiłem. Żeby się potem nie zastanawiać nad kłopotami.
--
Pozdrawiam
Jakub Rakus