Post #139
186
Сёркиты С точки зрения HW дизайна, I2C это супер простой интерфейс. Всё что нужно сделать - это провести две дорожки между мастером и слейвом, затем подключить к ним два подтягивающих резистора. Но будет ли всё так же просто, если слейвов больше одного? Сколько…
Напоследок хотел бы добавить комментарий коллеги о надежности и удобстве I2C.
Я не в первый раз слышу подобные высказывания, коллега с прошлой работы говорил что-то в том же духе, когда мы делали систему, в которой разные девайсы связывались по CAN и параллельно по I2C. Еще на этапе разработки он предсказал, что останется только CAN, потому что с I2C будет куча проблем. В итоге все ровно таким образом и произошло.
I2C -- вообще один из самых поганых интерфейсов. Нет чёткого стандарта, каждый производитель делает по-своему. Много разных состояний шины, которые надо правильно обрабатывать в софте. Любое устройство может повесить шину. Видел даташиты в которых так и написано, типа наш сенсор иногда вешает I2C шину. I2C при реализации в микроконтроллере требует использования прерываний (UART, SPI часто могут работать через DMA).
А ещё I2C много потребляет из-за резисторов. Один раз так прокололся - поставил акселерометр, который работает от единиц мкА а в момент считывания данных ток потребления подскакивал до 1мА.
Я не в первый раз слышу подобные высказывания, коллега с прошлой работы говорил что-то в том же духе, когда мы делали систему, в которой разные девайсы связывались по CAN и параллельно по I2C. Еще на этапе разработки он предсказал, что останется только CAN, потому что с I2C будет куча проблем. В итоге все ровно таким образом и произошло.









