Free Trials

Download a free trial to find out which Altium software best suits your needs

Downloads

Download the latest in PCB design and EDA software

  • PCB DESIGN SOFTWARE
  • Altium Designer

    Complete Environment for Schematic + Layout

  • CircuitStudio

    Entry Level, Professional PCB Design Tool

  • CircuitMaker

    Community Based PCB Design Tool

  • NEXUS

    Agile PCB Design For Teams

  • CLOUD PLATFORM
  • Altium 365

    Connecting PCB Design to the Manufacturing Floor

  • COMPONENT MANAGEMENT
  • Altium Concord Pro

    Complete Solution for Library Management

  • Octopart

    Extensive, Easy-to-Use Component Database

  • PRODUCT EXTENSIONS
  • PDN Analyzer

    Natural and Effortless Power Distribution Network Analysis

  • See All Extensions
  • EMBEDDED
  • TASKING

    World-Renowned Technology for Embedded Systems Development

  • TRAININGS
  • Live Courses

    Learn best practices with instructional training available worldwide

  • On-Demand Courses

    Gain comprehensive knowledge without leaving your home or office

  • ONLINE VIEWER
  • Altium 365 Viewer

    View & Share electronic designs in your browser

  • Altium Designer 20

    The most powerful, modern and easy-to-use PCB design tool for professional use

    ALTIUMLIVE

    Annual PCB Design Summit

    • Forum

      Where Altium users and enthusiasts can interact with each other

    • Blog

      Our blog about things that interest us and hopefully you too

    • Ideas

      Submit ideas and vote for new features you want in Altium tools

    • Bug Crunch

      Help make the software better by submitting bugs and voting on what's important

    • Wall

      A stream of events on AltiumLive you follow by participating in or subscribing to

    • Beta Program

      Information about participating in our Beta program and getting early access to Altium tools

    All Resources

    Explore the latest content from blog posts to social media and technical white papers gathered together for your convenience

    Downloads

    Take a look at what download options are available to best suit your needs

    • Training & Events

      View the schedule and register for training events all around the world and online

    • Design Content

      Browse our vast library of free design content including components, templates and reference designs

    • Webinars

      Attend a live webinar online or get instant access to our on demand series of webinars

    • Support

      Get your questions answered with our variety of direct support and self-service options

    • Technical Papers

      Stay up to date with the latest technology and industry trends with our complete collection of technical white papers.

    SPI kontra I2C: wybór najlepszego protokołu pamięci

    February 9, 2018

     Icon of memory chip

    Któregoś dnia wybrałem się po buty i zdałem sobie dokładnie sprawę, czemu nie robię tego tak często: ze względu na wszystkie parametry. Chciałem kupić konkretnie trampki, więc miałem do czynienia ze wskaźnikami dotyczącymi komfortu, sprężystości, trwałości, odporności na wodę, wagi, rozmiaru, wsparcia podbicia i wieloma innymi. Czasami wydaje się, że trzeba skończyć studia, tylko po to, by być w stanie znaleźć właściwe buty dla siebie. To właśnie nazywam nadmiarem informacji. 

    Z podobnie uciążliwymi decyzjami mamy do czynienia przy projektowaniu układów elektronicznych, gdy trzeba wybrać protokół pamięci Serial Peripheral Interface (SPI) albo Inter-Integrated Circuit (I2C). Decyzja jest jeszcze trudniejsza, gdy obie opcje nie różnią się specjalnie pod względem kosztów. Żeby można było śledzić potrzeby w zakresie parametrów układów pamięci, trzeba wiedzieć, co te funkcje zapewnią dla projektowanego produktu. 

    Podstawy dotyczące SPI i I2C

    SPI to protokół komunikacji o konfiguracji typu „pełny dupleks”. Do komunikacji między urządzeniem nadrzędnym a urządzeniem nadrzędnym wykorzystywane są cztery sygnały: Chip Select (CS), Clock (SCK), Master Out / Slave In (MOSI) oraz Master In / Slave Out (MISO). Pojedyncze połączenie urządzenia nadrzędnego z urządzeniem podrzędnym wymaga jednego sygnału CS. To oznacza, że jeśli do tej samej magistrali zostanie podłączonych więcej niż jedno urządzenie podrzędne, liczba sygnałów CS wzrośnie. 

    Nie ma oficjalnego limitu prędkości dla magistrali SPI. Bardzo często mikrokontrolery sterują magistralą SPI z prędkościami do 10 MHz. Istnieją cztery tryby SPI, w których dane są przerzucane przy różnych zboczach i różnej polaryzacji sygnału taktującego. Jednak nie ma standardowego mechanizmu, który umożliwiałby urządzeniu nadrzędnemu potwierdzać, że dane zostały pomyślnie odebrane i zapisane przez urządzenie podrzędne.

    Z kolei magistrala I2C potrzebuje tylko dwóch przewodów: danych szeregowych (SDA) i zegara szeregowego (SCLK). Pracuje ona ze znacznie mniejszą prędkością 100 kHz, chociaż możliwe jest uzyskanie wyższych prędkości, których większość mikrokontrolerów może nie obsługiwać. Urządzenia podrzędne podłączone do magistrali I2C są identyfikowane na podstawie adresu chipa definiowanego przez osprzęt. Liczba styków sygnałowych mikrokontrolera jest najmniejsza w przypadku magistrali I2C.

    Dobrze zdefiniowany standard dla protokołu I2C obejmuje nie tylko prędkość protokołu, ale również polecenia, inicjalizację, transfer danych oraz potwierdzenia pomiędzy urządzeniem nadrzędnym a urządzeniem podrzędnym. Dzięki temu wszystkie urządzenia obsługujące protokół I2C działają w oparciu o jeden standard, co ułatwia implementację. 

    Istotne kwestie przy wyborze protokołu SPI albo I2C dla pamięci

    Oba protokoły, SPI oraz I2C, są powszechnie stosowane z pamięciami szeregowymi, takimi jak Static Random Access Memory (SRAM), Flash czy Electrically Erasable Programmable Read-Only Memory (EEPROM). Żeby ustalić, który protokół będzie najlepiej odpowiadał wymogom projektu, nie wystarczy samo porównanie kosztów. Oto kilka istotnych kwestii, które mogą ułatwić podejmowanie decyzji:

    1. Prędkość

    W przypadku masowego transferowania danych lub bardzo wąskiego okna na zweryfikowanie danych wejściowych użytkownika względem danych zapisanych w pamięci liczy się każda mikrosekunda. Jeśli głównym problemem jest prędkość, warto wybrać protokół SPI, który zapewnia typową prędkość transferu danych 10 MHz, czyli znacznie większą niż maksymalna prędkość I2C, która wynosi 400 KHz

     Car zooming with lights all around
    Jeśli liczy się prędkość, wybierz SPI.

    2. Ograniczona liczba styków

    Nie wszyscy projektanci osprzętu mogą cieszyć się z korzystania z wysokiej jakości mikrokontrolerów z ponad 100 stykami. Niektórzy mają trudności z podłączeniem pamięci do mikrokontrolerów z 28 stykami. W takich przypadkach idealnym rozwiązaniem jest protokół I2C, który wymaga tylko pary ścieżek do komunikacji.

    3. Rozmiar PCB

    Jeśli nie musimy przestrzegać żadnych ograniczeń w zakresie rozmiarów PCB, to każdy z tych protokołów stanowi dobre rozwiązanie. Jednak gdy próbujemy wcisnąć płytkę PCB w niewielką obudowę, a mniejsza liczba ścieżek oznacza mniejszy rozmiar PCB, to lepszym wyborem okazuje się być protokół I2C.

    4. Błędy i ich korygowanie

    Żaden projektant nie jest doskonały i to samo dotyczy protokołu I2C. Magistrala I2C jest wrażliwa na błędy i blokady, ponieważ zarówno wysyłanie, jak i odbieranie danych odbywa się przy wykorzystaniu tych samych ścieżek. Jeśli urządzenie nadrzędne nie zwolni magistrali na czas, urządzenie podrzędne może przełączyć się w stan blokady, ponieważ wysłało odpowiedź, której urządzenie nadrzędne nie odebrało. Korygowanie błędów może być dość trudne, ponieważ w niektórych przypadkach trzeba będzie zresetować zasilanie zablokowanych urządzeń. 

    5. Zasilanie

    W przypadku projektowania urządzeń zasilanych baterią lub energią słoneczną, trzeba minimalizować zużycie mocy. Urządzenia I2C ogólnie zużywają więcej mocy niż SPI i jeśli pobór mocy stanowi problem, lepiej zastosować protokół SPI w swoim projekcie

    Small single-board PCB
    Najlepszy protokół pamięci dla PCB

    Wybierz najlepsze rozwiązanie dla swojego projektu

    Niezależnie od ostatecznego wyboru oba protokoły, SPI oraz I2C, wymagają równoległego poprowadzenia sygnałów oraz podobnej długości ścieżek, aby nie dopuszczać do jakichkolwiek błędów. Podjęta decyzja będzie miała wpływ nie tylko na przygotowywany projekt, ale również na czas realizacji oraz ogólną wydajność. 

    Korzystając z oprogramowania do projektowania PCB, które zapewnia funkcje oraz narzędzia niezbędne do bezproblemowego przejścia od fazy schematu do rozmieszczenia podzespołów i przygotowania plików wyjściowych, można bez trudu dokonywać takich wyborów projektowych. Skorzystaj z narzędzi do prowadzenia ścieżek dla wielu sygnałów i nieograniczonych zasobów ułatwiających projektowanie, jakie udostępniaCircuitStudio firmy Altium.

    Nadal nie masz pewności, jaki protokół będzie najlepszy dla Twojego projektu? Zapytaj eksperta Altium

    most recent articles

    Back to Home