Есть ли ссылка или какое объяснение того, что I²C и SPI являются просто протоколами физического уровня в модели OSI (я знаю, что эта модель предназначена для связи и, возможно, не совсем для бортовых шин) или протокол уровня канала передачи данных определен внутри их?
Как насчет протокола CAN?
Оба. Стек OSI настолько абстрактен, что практически любой протокол, используемый в промышленности, скорее всего, будет содержать практические соображения, эффективно реализующие несколько уровней.
I2C работает в терминах определенных транзакций, с арбитражем и квитированием, поэтому его можно разумно рассматривать как канальный уровень, а также как физический, даже если он не обязательно очень хорошо соответствует шаблону OSI. SPI на самом деле является не столько стандартом, сколько термином, который используется для описания широкого спектра схем связи. Таким образом, его едва ли можно назвать протоколом физического уровня.
Как с SPI, так и с I2C можно перейти на более высокие уровни, если ограничить свое внимание конкретными стилями микросхем. Например, есть общий стандарт для I2C EEPROM до 2 Кбайт, а другой стандарт применим к I2C EEPROM до 512 Кбайт (хотя я не видел, чтобы его использовали в таких больших устройствах). Такие стандарты не только определяют, как выполнять транзакции на чипе, но и определяют, что чип будет делать с содержащимися в нем данными.
Ничего такого явного. Вы можете попытаться определить определенные части протокола I²C для разных уровней OSI, но то, как вы их определяете, и то, как их определяет кто-то другой, не будет совпадать (спросите пять инженеров и получите семь разных ответов).
Я считаю, что физический уровень самый простой. Для I²C требуются две линии шины с открытым коллектором, подключенные к V CC с подтягивающими резисторами со значением X, ограниченным емкостью Y пФ (где X и Y рассчитываются на основе желаемой частоты шины I²C). Устройства I²C должны освобождать линию, когда она простаивает, и переводить линию в низкий уровень только при активном обмене данными. Это физический уровень.
Слой данных немного сложнее. Мастера I²C, особенно в системе с несколькими мастерами, должны при попытке связи проверить, не опущены ли линии, если они свободны, попытаться установить связь, снова проверить линию. Если в какой-то момент он неожиданно упадет, следуйте арбитражным протоколам. Подчиненные устройства I²C (и ведущие устройства) также могут выполнять растягивание тактовых импульсов , контролируя обмен данными путем предотвращения тактовых импульсов.
Физическая и логическая адресация относится как к уровню канала передачи данных, так и к сетевому уровню, если вы включаете расширители шины/мультиплексоры/буферы/ИС с горячей заменой. I²C на самом деле не имеет сетевой топологии или IP- эквивалента, а расширители шины являются неспецифическим хакерским решением, которое придумали производители.
Леон Хеллер
Мишель
Мишель
Олин Латроп