-
1. Data: 2014-06-07 16:41:25
Temat: Taktowanie kilku układów (pytania odnośnie SPI)
Od: Atlantis <m...@w...pl>
Planuję złożyć bramkę, która będzie pośredniczyła w komunikacji pomiędzy
lokalną siecią komputerową i kilkoma magistralami (na pewno CAN i
radiową, być może dodam jeszcze RS485).
Urządzenie będzie więc posiadało następujące interfejsy komunikacyjne:
1) Ethernet w oparciu o ENC28J60.
2) CAN w oparciu o MCP2115 i ISO1050DUB.
3) Radiowy w oparciu o RFM69HW.
4) Być może jakiś izolowany transceiver RS485.
Trzy pierwsze układy pracują na magistrali SPI i wymagają taktowania,
przy czym moduł radiowy posiada własny kwarc, więc można go pominąć w
dalszych rozważaniach. Łącznie z MCU mamy trzy układy, które wymagają
sygnału taktującego. W przypadku ENC28J60 i MCP2515 jest to 25MHz,
ATmega będzie potrzebowała maksymalnie 16MHz.
W sytuacji, gdy MCU miał współpracować z ENCJ, zwykle "karmiłem" go
12,5MHz z CLKOUT tego układu.
Tutaj jednak sytuacja jest bardziej skomplikowana i zastanawiam się jak
ją rozwiązać. Jest kilka opcji:
1) Najprostsze: ENC28J60 i MCP2515 mają własne kwarce, jeden z tych
układów taktuje również ATMegę sygnałem 12,5MHz z CLKOUT.
2) Tylko jeden z układów ma swój kwarc, udostępniając drugiemu 25MHz na
CLKOUT. Ten z kolei taktuje ATmegę sygnałem podzielonym przez dwa.
Zastanawiam się tylko jak zachowają się układy zaraz po włączeniu
zasilania, do domyślnych preskalerach, zanim odpowiednie wartości
zostaną ustawione. Sygnał będzie dzielony dwukrotnie, bardziej niż potrzeba.
Ktoś może wie dlaczego nota MCP2115 (str. 53) zawiera schemat, na którym
układ jest taktowany z zewnętrznego źródła przez bufor odwracający? W
nocie ENC28J60 nie ma niczego takiego. ATmegę też zawsze taktowałem
bezpośrednio (oczywiście biorąc pod uwagę zasilanie tym samym napięciem).
Kolejna sprawa to magistrala. Co powinienem raczej zrobić?
a) Podłączyć wszystkie urządzenia do jednej, sprzętowej magistrali?
b) Sprzętowe SPI przeznaczyć tylko dla ENC28J60, a potem skorzystać z
wolnych pinów i pozostałym układom zorganizować programowe SPI?
-
2. Data: 2014-06-10 10:44:35
Temat: Re: Taktowanie kilku układów (pytania odnośnie SPI)
Od: Michał Lankosz <m...@t...pl>
W dniu 2014-06-07 16:41, Atlantis pisze:
> Planuję złożyć bramkę, która będzie pośredniczyła w komunikacji pomiędzy
> lokalną siecią komputerową i kilkoma magistralami (na pewno CAN i
> radiową, być może dodam jeszcze RS485).
>
> Urządzenie będzie więc posiadało następujące interfejsy komunikacyjne:
> 1) Ethernet w oparciu o ENC28J60.
> 2) CAN w oparciu o MCP2115 i ISO1050DUB.
> 3) Radiowy w oparciu o RFM69HW.
> 4) Być może jakiś izolowany transceiver RS485.
>
> Trzy pierwsze układy pracują na magistrali SPI i wymagają taktowania,
> przy czym moduł radiowy posiada własny kwarc, więc można go pominąć w
> dalszych rozważaniach. Łącznie z MCU mamy trzy układy, które wymagają
> sygnału taktującego. W przypadku ENC28J60 i MCP2515 jest to 25MHz,
> ATmega będzie potrzebowała maksymalnie 16MHz.
> W sytuacji, gdy MCU miał współpracować z ENCJ, zwykle "karmiłem" go
> 12,5MHz z CLKOUT tego układu.
>
> Tutaj jednak sytuacja jest bardziej skomplikowana i zastanawiam się jak
> ją rozwiązać. Jest kilka opcji:
>
> 1) Najprostsze: ENC28J60 i MCP2515 mają własne kwarce, jeden z tych
> układów taktuje również ATMegę sygnałem 12,5MHz z CLKOUT.
> 2) Tylko jeden z układów ma swój kwarc, udostępniając drugiemu 25MHz na
> CLKOUT. Ten z kolei taktuje ATmegę sygnałem podzielonym przez dwa.
> Zastanawiam się tylko jak zachowają się układy zaraz po włączeniu
> zasilania, do domyślnych preskalerach, zanim odpowiednie wartości
> zostaną ustawione. Sygnał będzie dzielony dwukrotnie, bardziej niż potrzeba.
> Ktoś może wie dlaczego nota MCP2115 (str. 53) zawiera schemat, na którym
> układ jest taktowany z zewnętrznego źródła przez bufor odwracający? W
> nocie ENC28J60 nie ma niczego takiego. ATmegę też zawsze taktowałem
> bezpośrednio (oczywiście biorąc pod uwagę zasilanie tym samym napięciem).
>
> Kolejna sprawa to magistrala. Co powinienem raczej zrobić?
> a) Podłączyć wszystkie urządzenia do jednej, sprzętowej magistrali?
> b) Sprzętowe SPI przeznaczyć tylko dla ENC28J60, a potem skorzystać z
> wolnych pinów i pozostałym układom zorganizować programowe SPI?
>
Może weź inny uC? STM32F0 może być taktowany do 32MHz z zewnętrznego
generatora albo kwarcem. Możesz dać jeden generator kwarcowy 25MHz i
taktować wszystkie układy, albo wykorzystać wewnętrzny generator i
dobudować bufory albo może by wyjście MCO dało radę wysterować
pozostałymi układami. Co więcej - on domyślnie startuje z wewnętrznym
RC i dopiero programowo przełącza się na wybrane źródło zegarowe. Przy
okazji jest kilka SPI. A trzymając się AVRów może ATXmega?
Co do rozdzielenia magistral to musisz sam wybrać. Znasz wady i zalety
obu rozwiązań.
--
Michał