element14 Community
element14 Community
    Register Log In
  • Site
  • Search
  • Log In Register
  • Community Hub
    Community Hub
    • What's New on element14
    • Feedback and Support
    • Benefits of Membership
    • Personal Blogs
    • Members Area
    • Achievement Levels
  • Learn
    Learn
    • Ask an Expert
    • eBooks
    • element14 presents
    • Learning Center
    • Tech Spotlight
    • STEM Academy
    • Webinars, Training and Events
    • Learning Groups
  • Technologies
    Technologies
    • 3D Printing
    • FPGA
    • Industrial Automation
    • Internet of Things
    • Power & Energy
    • Sensors
    • Technology Groups
  • Challenges & Projects
    Challenges & Projects
    • Design Challenges
    • element14 presents Projects
    • Project14
    • Arduino Projects
    • Raspberry Pi Projects
    • Project Groups
  • Products
    Products
    • Arduino
    • Avnet Boards Community
    • Dev Tools
    • Manufacturers
    • Multicomp Pro
    • Product Groups
    • Raspberry Pi
    • RoadTests & Reviews
  • Store
    Store
    • Visit Your Store
    • Choose another store...
      • Europe
      •  Austria (German)
      •  Belgium (Dutch, French)
      •  Bulgaria (Bulgarian)
      •  Czech Republic (Czech)
      •  Denmark (Danish)
      •  Estonia (Estonian)
      •  Finland (Finnish)
      •  France (French)
      •  Germany (German)
      •  Hungary (Hungarian)
      •  Ireland
      •  Israel
      •  Italy (Italian)
      •  Latvia (Latvian)
      •  
      •  Lithuania (Lithuanian)
      •  Netherlands (Dutch)
      •  Norway (Norwegian)
      •  Poland (Polish)
      •  Portugal (Portuguese)
      •  Romania (Romanian)
      •  Russia (Russian)
      •  Slovakia (Slovak)
      •  Slovenia (Slovenian)
      •  Spain (Spanish)
      •  Sweden (Swedish)
      •  Switzerland(German, French)
      •  Turkey (Turkish)
      •  United Kingdom
      • Asia Pacific
      •  Australia
      •  China
      •  Hong Kong
      •  India
      •  Korea (Korean)
      •  Malaysia
      •  New Zealand
      •  Philippines
      •  Singapore
      •  Taiwan
      •  Thailand (Thai)
      • Americas
      •  Brazil (Portuguese)
      •  Canada
      •  Mexico (Spanish)
      •  United States
      Can't find the country/region you're looking for? Visit our export site or find a local distributor.
  • Translate
  • Profile
  • Settings
Embedded and Microcontrollers
  • Technologies
  • More
Embedded and Microcontrollers
Embedded Forum I2C or SPI
  • Blog
  • Forum
  • Documents
  • Quiz
  • Polls
  • Files
  • Members
  • Mentions
  • Sub-Groups
  • Tags
  • More
  • Cancel
  • New
Join Embedded and Microcontrollers to participate - click to join for free!
Actions
  • Share
  • More
  • Cancel
Forum Thread Details
  • Replies 4 replies
  • Subscribers 462 subscribers
  • Views 374 views
  • Users 0 members are here
Related

I2C or SPI

Former Member
Former Member over 11 years ago

which protocal is best in any microcontroller

i2c or SPI ?

  • Sign in to reply
  • Cancel

Top Replies

  • vsluiter
    vsluiter over 11 years ago in reply to danielmcgraw +2
    Good overview! I2C has one extra benefit: the slaves acknowledge the transfer, so you're sure a slave is listening. It also has a drawback, and that is that uses an open collector drive, and with long…
  • michaelkellett
    michaelkellett over 11 years ago +1
    It depends on what you want to do - there are many pros and conns - that's why both are in common use. Did you have a specific problem in mind ? MK
  • danielmcgraw
    danielmcgraw over 11 years ago +1
    As with everything, there are pros and cons of both methods. I2C Tends to be a bit slower but still fast enough for most applications Only needs two pins (SDA and SCL) has a reasonable range (I've used…
  • michaelkellett
    michaelkellett over 11 years ago

    It depends on what you want to do - there are many pros and conns - that's why both are in common use.

    Did you have a specific problem in mind ?

     

    MK

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • johnbeetem
    johnbeetem over 11 years ago

    The best protocol is the one that lets you talk to the device you want to talk to.

     

    SPI is generally much faster, though this depends on the device you're talking to.  However, you do have to be careful about clock signal integrity.

     

    I2C is slower, but there are lots of devices that only have I2C.  With I2C you don't need to worry about signal integrity because the devices filter the input signals so they can ignore ringing -- at least that's my understanding.

     

    SPI requires more signals: you need clock, MISO, and MOSI, plus a chip select for each device.  I2C only requires two signals: SCL and SDA.

    • Cancel
    • Vote Up 0 Vote Down
    • Sign in to reply
    • Cancel
  • danielmcgraw
    danielmcgraw over 11 years ago

    As with everything, there are pros and cons of both methods.

    I2C

    • Tends to be a bit slower but still fast enough for most applications
    • Only needs two pins (SDA and SCL)
    • has a reasonable range (I've used 5ft of screened cable with 4.7k pullup resistors at the far end and it has worked fine)
    • Allows many devices to be connected as there are many possible address bytes

     

    SPI

    • Faster as has separate Transmit and Receive lines (MOSI and MISO) as well as clock
    • Uses pins to select which IC it is talking to. Good as it doesn't have to send address bytes. Bad as it needs a pin for each device, the Raspberry Pi for example only has 2 SPI address pins

    My advice?

    Use I2C in general (easier to wire and change over. can handle many devices) and reserve the SPI bus for something requiring the high speed.

    Any problems, just ask image

    Dan McGraw

    M0WUT

    • Cancel
    • Vote Up +1 Vote Down
    • Sign in to reply
    • Cancel
  • vsluiter
    vsluiter over 11 years ago in reply to danielmcgraw

    Good overview!

    I2C has one extra benefit: the slaves acknowledge the transfer, so you're sure a slave is listening.

    It also has a drawback, and that is that uses an open collector drive, and with long cables and / or many devices on one bus you risk very bad data transfers (when it takes too long to pull up). The other drawback of the bus structure is that if you plan to use many devices of the same type, you get bus conflicts, which can only be solved by adding I2C multiplexers, which add even more lag to your communication.

    • Cancel
    • Vote Up +2 Vote Down
    • Sign in to reply
    • Cancel
element14 Community

element14 is the first online community specifically for engineers. Connect with your peers and get expert answers to your questions.

  • Members
  • Learn
  • Technologies
  • Challenges & Projects
  • Products
  • Store
  • About Us
  • Feedback & Support
  • FAQs
  • Terms of Use
  • Privacy Policy
  • Legal and Copyright Notices
  • Sitemap
  • Cookies

An Avnet Company © 2025 Premier Farnell Limited. All Rights Reserved.

Premier Farnell Ltd, registered in England and Wales (no 00876412), registered office: Farnell House, Forge Lane, Leeds LS12 2NE.

ICP 备案号 10220084.

Follow element14

  • X
  • Facebook
  • linkedin
  • YouTube