Why do many uC have more then one I2C interfaces? [duplicate]

The name of the pictureThe name of the pictureThe name of the pictureClash Royale CLAN TAG#URR8PPP





.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty margin-bottom:0;







up vote
3
down vote

favorite













This question already has an answer here:



  • Why the need for multiple I²C ports?

    6 answers



On I2C buses you can hock up 112 devices. So why do so many microcontrollers have up to four I2C ports, when you could just operate enough devices for most applications on one I2C interface?







share|improve this question














marked as duplicate by Nick Alexeev♦ Aug 12 at 21:08


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.














  • Sometimes I2C devices have a limited number of addresses. If you want to use 4 temperature sensors and they are only available with 2 different I2C addresses, having multiple busses is one way to use the additional sensors.
    – John D
    Aug 12 at 16:05










  • The problem is not that "sometimes" there is a limited number of addresses, the number of addresses is 127. The problem is that these addresses are hard-coded into very narrow ranges, and the I2C protocol doesn't have a mechanism for flexible assignment of arbitrary addresses, unlike the enumeration process in USB.
    – Ale..chenski
    Aug 12 at 21:44
















up vote
3
down vote

favorite













This question already has an answer here:



  • Why the need for multiple I²C ports?

    6 answers



On I2C buses you can hock up 112 devices. So why do so many microcontrollers have up to four I2C ports, when you could just operate enough devices for most applications on one I2C interface?







share|improve this question














marked as duplicate by Nick Alexeev♦ Aug 12 at 21:08


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.














  • Sometimes I2C devices have a limited number of addresses. If you want to use 4 temperature sensors and they are only available with 2 different I2C addresses, having multiple busses is one way to use the additional sensors.
    – John D
    Aug 12 at 16:05










  • The problem is not that "sometimes" there is a limited number of addresses, the number of addresses is 127. The problem is that these addresses are hard-coded into very narrow ranges, and the I2C protocol doesn't have a mechanism for flexible assignment of arbitrary addresses, unlike the enumeration process in USB.
    – Ale..chenski
    Aug 12 at 21:44












up vote
3
down vote

favorite









up vote
3
down vote

favorite












This question already has an answer here:



  • Why the need for multiple I²C ports?

    6 answers



On I2C buses you can hock up 112 devices. So why do so many microcontrollers have up to four I2C ports, when you could just operate enough devices for most applications on one I2C interface?







share|improve this question















This question already has an answer here:



  • Why the need for multiple I²C ports?

    6 answers



On I2C buses you can hock up 112 devices. So why do so many microcontrollers have up to four I2C ports, when you could just operate enough devices for most applications on one I2C interface?





This question already has an answer here:



  • Why the need for multiple I²C ports?

    6 answers









share|improve this question













share|improve this question




share|improve this question








edited Aug 12 at 17:25









Michael Karas

41.5k34196




41.5k34196










asked Aug 12 at 15:16









Paul Würtz

1457




1457




marked as duplicate by Nick Alexeev♦ Aug 12 at 21:08


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.






marked as duplicate by Nick Alexeev♦ Aug 12 at 21:08


This question has been asked before and already has an answer. If those answers do not fully address your question, please ask a new question.













  • Sometimes I2C devices have a limited number of addresses. If you want to use 4 temperature sensors and they are only available with 2 different I2C addresses, having multiple busses is one way to use the additional sensors.
    – John D
    Aug 12 at 16:05










  • The problem is not that "sometimes" there is a limited number of addresses, the number of addresses is 127. The problem is that these addresses are hard-coded into very narrow ranges, and the I2C protocol doesn't have a mechanism for flexible assignment of arbitrary addresses, unlike the enumeration process in USB.
    – Ale..chenski
    Aug 12 at 21:44
















  • Sometimes I2C devices have a limited number of addresses. If you want to use 4 temperature sensors and they are only available with 2 different I2C addresses, having multiple busses is one way to use the additional sensors.
    – John D
    Aug 12 at 16:05










  • The problem is not that "sometimes" there is a limited number of addresses, the number of addresses is 127. The problem is that these addresses are hard-coded into very narrow ranges, and the I2C protocol doesn't have a mechanism for flexible assignment of arbitrary addresses, unlike the enumeration process in USB.
    – Ale..chenski
    Aug 12 at 21:44















Sometimes I2C devices have a limited number of addresses. If you want to use 4 temperature sensors and they are only available with 2 different I2C addresses, having multiple busses is one way to use the additional sensors.
– John D
Aug 12 at 16:05




Sometimes I2C devices have a limited number of addresses. If you want to use 4 temperature sensors and they are only available with 2 different I2C addresses, having multiple busses is one way to use the additional sensors.
– John D
Aug 12 at 16:05












The problem is not that "sometimes" there is a limited number of addresses, the number of addresses is 127. The problem is that these addresses are hard-coded into very narrow ranges, and the I2C protocol doesn't have a mechanism for flexible assignment of arbitrary addresses, unlike the enumeration process in USB.
– Ale..chenski
Aug 12 at 21:44




The problem is not that "sometimes" there is a limited number of addresses, the number of addresses is 127. The problem is that these addresses are hard-coded into very narrow ranges, and the I2C protocol doesn't have a mechanism for flexible assignment of arbitrary addresses, unlike the enumeration process in USB.
– Ale..chenski
Aug 12 at 21:44










1 Answer
1






active

oldest

votes

















up vote
5
down vote



accepted










As @JohnD says, you may need to talk to several devices which have the same built-in, unchangeable address.



Another reason for multiple I2C busses is that they can be very slow. Standard I2C devices only run at 100 kHz. By having multiple busses you can access multiple devices in parallel, effectively increasing the data rate.



A third possibility is that you want your MCU to act as a slave on one bus and a master on another.






share|improve this answer


















  • 4




    Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
    – The Photon
    Aug 12 at 17:09






  • 1




    Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
    – CL.
    Aug 12 at 17:52






  • 1




    @ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
    – Elliot Alderson
    Aug 12 at 18:38






  • 3




    Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
    – Nipo
    Aug 12 at 19:57






  • 2




    One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
    – DoxyLover
    Aug 12 at 20:26

















1 Answer
1






active

oldest

votes








1 Answer
1






active

oldest

votes









active

oldest

votes






active

oldest

votes








up vote
5
down vote



accepted










As @JohnD says, you may need to talk to several devices which have the same built-in, unchangeable address.



Another reason for multiple I2C busses is that they can be very slow. Standard I2C devices only run at 100 kHz. By having multiple busses you can access multiple devices in parallel, effectively increasing the data rate.



A third possibility is that you want your MCU to act as a slave on one bus and a master on another.






share|improve this answer


















  • 4




    Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
    – The Photon
    Aug 12 at 17:09






  • 1




    Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
    – CL.
    Aug 12 at 17:52






  • 1




    @ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
    – Elliot Alderson
    Aug 12 at 18:38






  • 3




    Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
    – Nipo
    Aug 12 at 19:57






  • 2




    One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
    – DoxyLover
    Aug 12 at 20:26














up vote
5
down vote



accepted










As @JohnD says, you may need to talk to several devices which have the same built-in, unchangeable address.



Another reason for multiple I2C busses is that they can be very slow. Standard I2C devices only run at 100 kHz. By having multiple busses you can access multiple devices in parallel, effectively increasing the data rate.



A third possibility is that you want your MCU to act as a slave on one bus and a master on another.






share|improve this answer


















  • 4




    Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
    – The Photon
    Aug 12 at 17:09






  • 1




    Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
    – CL.
    Aug 12 at 17:52






  • 1




    @ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
    – Elliot Alderson
    Aug 12 at 18:38






  • 3




    Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
    – Nipo
    Aug 12 at 19:57






  • 2




    One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
    – DoxyLover
    Aug 12 at 20:26












up vote
5
down vote



accepted







up vote
5
down vote



accepted






As @JohnD says, you may need to talk to several devices which have the same built-in, unchangeable address.



Another reason for multiple I2C busses is that they can be very slow. Standard I2C devices only run at 100 kHz. By having multiple busses you can access multiple devices in parallel, effectively increasing the data rate.



A third possibility is that you want your MCU to act as a slave on one bus and a master on another.






share|improve this answer














As @JohnD says, you may need to talk to several devices which have the same built-in, unchangeable address.



Another reason for multiple I2C busses is that they can be very slow. Standard I2C devices only run at 100 kHz. By having multiple busses you can access multiple devices in parallel, effectively increasing the data rate.



A third possibility is that you want your MCU to act as a slave on one bus and a master on another.







share|improve this answer














share|improve this answer



share|improve this answer








edited Aug 12 at 17:26









Michael Karas

41.5k34196




41.5k34196










answered Aug 12 at 16:39









Elliot Alderson

2,3791310




2,3791310







  • 4




    Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
    – The Photon
    Aug 12 at 17:09






  • 1




    Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
    – CL.
    Aug 12 at 17:52






  • 1




    @ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
    – Elliot Alderson
    Aug 12 at 18:38






  • 3




    Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
    – Nipo
    Aug 12 at 19:57






  • 2




    One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
    – DoxyLover
    Aug 12 at 20:26












  • 4




    Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
    – The Photon
    Aug 12 at 17:09






  • 1




    Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
    – CL.
    Aug 12 at 17:52






  • 1




    @ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
    – Elliot Alderson
    Aug 12 at 18:38






  • 3




    Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
    – Nipo
    Aug 12 at 19:57






  • 2




    One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
    – DoxyLover
    Aug 12 at 20:26







4




4




Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
– The Photon
Aug 12 at 17:09




Fourth possibility: One of the interfaces is on pins multiplexed with functions you want to use, and the other interface is on pins multiplexed with functions another customer might want to use.
– The Photon
Aug 12 at 17:09




1




1




Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
– CL.
Aug 12 at 17:52




Fifth possibility: You have multiple instances of a hardware module that supports multiple protocols (e.g., UART, SPI, and I²C), and it would not be worth the extra effort to remove I²C.
– CL.
Aug 12 at 17:52




1




1




@ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
– Elliot Alderson
Aug 12 at 18:38




@ThePhoton Thanks for your addition. I haven't run in to that problem myself but I can see it happening.
– Elliot Alderson
Aug 12 at 18:38




3




3




Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
– Nipo
Aug 12 at 19:57




Sixth possibility: most i2c devices dont play nice with the bus when they are not powered. Having multiple buses allows to do power-gating on different board subsystems.
– Nipo
Aug 12 at 19:57




2




2




One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
– DoxyLover
Aug 12 at 20:26




One more: hot-plugging I2C slave devices (example, hot-swap power supplies). Pulling one while another slave is communicating may glitch the bus. Much easier to handle if each is on a separate bus.
– DoxyLover
Aug 12 at 20:26


Comments

Popular posts from this blog

What does second last employer means? [closed]

List of Gilmore Girls characters

Confectionery