Разница между аппаратной и программной реализацией I2C заключается в том, как реализована шина I2C на физическом уровне:
- Аппаратная шина I2C — это шина, реализованная на физическом уровне внутренними блоками микроконтроллера, такая шина имеет заранее определённые выводы. wiki.iarduino.ru Например, на платах Arduino UNO и Piranha UNO есть только одна аппаратная шина I2C, использующая выводы: A4 — SDA и A5 — SCL. wiki.iarduino.ru
- Программная шина I2C — это шина, реализованная программно. wiki.iarduino.ru Такая шина занимает память программ и часть ОЗУ, использует вычислительные ресурсы микроконтроллера. wiki.iarduino.ru Но у неё есть два преимущества: можно создать несколько шин I2C, даже если их не было у микроконтроллера, и можно выбрать любые выводы для создания шины I2C. wiki.iarduino.ru
Таким образом, аппаратная реализация обеспечивает работу шины на физическом уровне, с заранее определёнными выводами, в то время как программная реализация позволяет реализовать шину программно, определяя выводы для линий SDA и SCL во время выполнения программы. github.com wiki.iarduino.ru