uklad interfejsu na SPI

Apr 18, 2004 15 Replies

Witam!



Potrzebuje wielu wyjsc w swoim projekcie i tak sobie myslalem ze moze zamiast kupowac kontroler z duza iloscia portow I/O moze istnieja uklady interfejow laczace sie przez SPI z kontrolerem i udostepniajace wiele portow. Ktos moze slyszal cos o tym? Jezeli tak to bardzo prosilbym o wskazowke ( producent, kod ) oraz ewentualnie jakiegos dystrybutora w Polsce.



Pozdrawiam Artur


W sumie lepsze bylaby komunikacja przez i2c, jak myslicie? czy sa takie uklady interfejsu?

Pozdrowienia Artur

Artur napisa³:

S± - PCF8574 - ale kosztuj± powy¿ej 10 z³. Mo¿e lepiej u¿yæ stary dobry

74HC164 (8-bit rejestr przesuwaj±cy, wej¶cie szeregowe, wyj¶cia równoleg³e), do kupienia w ka¿dym sklepie, w detalu poni¿ej 1 z³ za sztukê. Albo inny rejestr z wej¶ciem szeregowym i wyj¶ciami równoleg³ymi. Pod³±czenie do procka jest proste - jednym pinem szeregowo wpisujesz to co ma byæ na wyjsciach, bit po bicie, taktuj±c drugim pinem.

Ja uzywam tych ponizej - sa wrecz idealne (i tanie):

- CD4094 - 8 wyj¶æ

- CD4021 - 8 wej¶æ

Mozna je laczyc kaskadowo i sterowac z uC zaledwie kilkoma liniami.

SJ

Artur napisal(a):

To jest zly, bo drogi, pomysl. Lepiej kup 595 / 597 do realizacji I/O. Sa tanie jak barszcz.

expandery phillipsa i2c mozna zakupic w cenie do¶æ konkurencyjnej np w allegro:

formatting link
te¿ w wersji przewlekanej
formatting link
pozdrawiam PC

Microchip produkuje taki "ekspander" portów: MCP23016 - 16 portów IO, na I2C, obudowa 28 pin.

formatting link
Pozdrawiam, Andrzej

Andrzej Ekiert napisal(a):

Drogi gips.

Zalezy od ktorej strony spojrzec. Czasem nie da sie wziac wiekszego procesora (bo albo nie ma, albo wyszloby jeszcze drozej), a portow po prostu brakuje.

Czasem tez mozna sobie ulatwic czyms takim prowadzenie sciezek - na przyklad jak masz procesor po jednej stronie plytki, a na drugim koncu musisz czyms posterowac. Zamiast prowadzic 16 sciezek, prosciej puscic I2C z ekspanderem na koncu.

Pozdrowienia, Andrzej

Andrzej Ekiert napisal(a):

Alez ja patrze z tej samej strony. 2 kosci 595 kosztuja w sumie 82 grosze. Powiedzmy, ze 1.5 zlotego jesli sie kupuje w detalu. Linii sterujacych niewiele wiecej trzeba, bo 3.

Nie chce mi sie teraz sprawdzac jakiej wielkosci sa te kosci Microchipa, ale ekspandery Philipsa sa w obudowie WSO. 595 sa w SO.

Interfejs I2C wcale nie jest lepszy. To, ze nie wymaga chip selectu oddzielnie dla kazdego urzadzenia i ma tylko 1 linie danych (zamiast 2), okupuje znaczaco nizsza predkoscia transmisji: zegar 100/400 kHz w porownaniu do 20-30 MHz (zalezy od mozliwosci konkretnego scalaka) przy SPI.

W teorii tak. W praktyce ...

- I2C dziala troche szybciej, mozna scalaki wyzylowac,

- jesli nie masz hardwareowego portu, a mowa byla o prostym procku, to predkosc jest w sam raz na programowa realizacje,

- adresowanie zaoszczedza czas przy zmianie jednego wyjscia,

- 20MHz ... to naprawde tak szybko dziala ? I dziala czy zrodlem wiecznych klopotow ?

J.

Szybciej niz 400 kHz? OK - no to liczmy nawet i 500 kHz. Malutko. :( Z pamieci zewnetrznej odczytasz z ta predkoscia tylko 62 KB/s.

? Srednio popedzany AVR (16MHz) moze taktowac sprzetowy interfejs SPI z polowa zegara czyli 8 MHz. Jezeli chcesz zrobic SPI na piechote, bit-po-bicie, to da sie osiagnac spokojnie okolo 1 MHz.

A sprzetowy SPI maja na prawde proste procki, wiecej niz sprzetowy I2C.

Ale musisz wypchac przez I2C adres urzadzenia - a to jest znacznie wolniej niz wyzerowac jedna linie I/O.

Just try. Moge potwierdzic jednak na 100% dzialanie z zegarem 8 MHz (odczyt z pamieci DataFlash). Trzeba by sprobowac szybszym prockiem. A sygnaly smigajace z czestotliwoscia 20 MHz na odleglosc kilku cm (po PCB) to zaden problem.

IMHO I2C nie ma racji bytu w przyszlosci - z interfejsow zjadajacych mniejsza liczbe linii ale z wiekszym zasiegiem istnieje np. dallasowy

1-wire (ale trzeba sie wiecej napocic nad obsluga). A niezly szybszy interfejs o zasiegu lokalnym (kilkanascie cm) to SPI.

A 1MHz ?

Co albo jest za malo, albo wystarczajaco :-)

No i podobna predkosc uzyskasz na I2C :-)

Hm, no .. ja mialem problemy z 6 MHz.

SPI nie ma racji bytu w przyszlosci, a niezly interfejs to USB 2.0 i Gigabit ethernet :-P A mniej niz 64 bitowe procki tez nie maja przyszlosci :-P

J.

:-o To dziwne, moze nieprawidlowo zaprojektowany PCB? Ja pracuje ostatnio na plytce 4-warstwowej i nie mam zadnych problemow z zakloceniami przy kilku-kilkunastu MHz.

Maksymalna predkosc transmisji zalezy tez od konkretnego scalaka, Atmel pisze ze pamieci DataFlash wyrabiaja max. 20 MHz i nie mam podstaw im nie wierzyc.

Pisalismy chyba o interfejsach lokalnych, smigajacych po PCB? Jezeli chodzi o wieksze transfery to HyperTransport bedzie jak znalazl.

Wieksze transfery na troche wieksze odleglosci, to moze LVDS? Uzywal ktos tego w praktyce? Jak to smakuje? :-)

Join the Discussion

Have something to add? Share your thoughts — no account required.

Didn't find your answer?

Ask the community — no account required