1. Введение
CAN (Controller Area Network) — это последовательный протокол связи с эффективной поддержкой распределения контроля в реальном времени и очень высоким уровнем безопасности.
Основное назначение: организация передачи информации в сложных условиях, таких как среды с высоким уровнем различного рода помех. Этот протокол передачи применяется в автомобильной электронике, машинных устройствах управления, датчиках при передаче информации со скоростями до 1 Мбит/сек.
Протокол CAN можно разделить на следующие уровни:
- объектный уровень
- канальный уровень
- физический уровень
Объектный и канальный уровни включают весь сервис и функции передачи данных определяемых ISO/OSI моделью. Область объектного уровня включает:
- Поиск сообщений для передачи.
- Фильтрация сообщений, полученных от канального уровня
- Обеспечение связи между прикладным уровнем и аппаратными средствами.
Объектный уровень можно реализовывать различными способами.
Область канального уровня главным образом — протокол передачи, т.е. управление кадрами, выполнение арбитража, проверка и сигнализация ошибок, типизация ошибок. Внутри канального уровня решается, является ли шина свободной для начала новой передачи. Все что находится внутри канального уровня, не имеет ни какой свободы к модификации.
Область физического уровня — фактическая передача бит между различными узлами. Внутри одной сети физический уровень должен быть одинаков для всех узлов. Физический уровень можно реализовать различными способами.
2. Основные характеристики протокола
- каждое сообщение имеет определенный приоритет
- существуют гарантированные времена ожидания
- гибкость конфигурации
- групповой приём с временной синхронизацией
- система непротиворечивости данных
- multimaster
- обнаружение и сигнализация ошибок
- автоматическая ретрансляция разрушенных сообщений
- различие между временными ошибками и постоянными отказами узлов и автономное отключение дефектных узлов
Сообщения
Информация по шине посылается в фиксированном формате сообщений различной, но фиксированной длины. Когда шина свободна, любой узел может начать передачу нового сообщения.
Информационная маршрутизация
В CAN нет ни какой информации относительно конфигурации сети (например, адреса узла). Это имеет несколько важных следствий:
Гибкость системы:
Узел может быть добавлен в CAN — сеть, без каких либо изменений в программном или аппаратном обеспечении, какого — либо узла в сети.
Маршрутизация сообщений:
Содержание сообщения определяется идентификатором. Идентификатор не указывает адреса сообщения, а описывает значение данных так, чтобы все узлы сети были способны решить фильтрацией сообщений, нужны им эти данные или нет.
Передача группе:
Как следует из фильтрации сообщений, любое число узлов может одновременно получать и реагировать на одно и тоже сообщение.
Непротиворечивость данных:
Внутри сети CAN гарантировано, что сообщение принято всеми узлами или ни одним узлом.
Скорость передачи информации
Скорость передачи информации в CAN — сети может быть различной для каждой сети. Однако в каждой конкретной сети скорость передачи информации фиксирована.
Приоритеты
Идентификатор и RTR — бит определяют статический приоритет сообщения в течение доступа к шине.
Удаленный запрос данных
Посылая кадр удаленного запроса данных, узел может потребовать данные от другого узла. Кадр данных и кадр удаленного запроса данных должны иметь одинаковый идентификатор.
Multimaster
Когда шина свободна, любой узел может начать передачу сообщения. Доступ к шине получает узел, передающий кадр с наивысшим приоритетом.
Арбитраж
Когда шина свободна, любой узел может начать передачу сообщения. Если два или больше узла начинают передавать сообщения в одно и тоже время, конфликт при доступе к шине будет решен поразрядным арбитражем используя идентификатор и RTR — бит. Механизм арбитража гарантирует, что ни время, ни информация не будут потеряны. Если кадр данных и кадр удаленного запроса данных начинают передаваться в одно время, то кадр данных имеет более высокий приоритет, чем кадр удаленного запроса данных. В течение арбитража каждый передатчик сравнивает уровень переданного бита с уровнем, считываемым с шины. Если эти уровни одинаковы, узел может продолжать посылать данные дальше. Если был послан уровень лог. ‘1’ (recessive), а с шины считан уровень лог. ‘0’ (dominant), то узел теряет право дальнейшей передачи данных и должен прекратить посылку данных на шину.
Безопасность
Чтобы достичь высокой безопасности передачи данных, приняты мощные меры нахождения ошибок, сигнализации ошибок и самотестирование в каждом CAN — узле.
Обнаружение ошибок
Для обнаружения ошибок приняты следующие меры:
- текущий контроль (передатчики сравнивают уровни битов, которые переданы, с уровнями на шине).
- побитовое заполнение
- проверка кадра сообщения
Эффективность обнаружения ошибок
Механизмы обнаружения ошибок имеют следующие возможности:
- обнаружение всех глобальных ошибок
- обнаружение всех локальных ошибок передатчиков
- обнаружение до 5 случайно распределённых ошибок в сообщении
- обнаружение последовательной группы ошибок длиной до 15
- обнаружение любого числа нечетных ошибок в сообщении
Общая остаточная вероятность ошибки для необнаруженных, разрушенных сообщений, меньше чем:
скорость появления ошибки * 4.7*10Е-11
Сигнализация ошибки и время восстановления
Разрушенные сообщения помечаются узлом, обнаружившим ошибку. Такие сообщения прерываются и будут переданы снова. Время восстановления от обнаружения ошибки до начала следующего сообщения в большинстве случаев = 29 * время передачи одного бита, если не имеется никаких дальнейших ошибок.
Типизация ошибок
Узлы CAN способны отличить временные ошибки от постоянных отказов. Дефектные узлы будут отключены.
Соединения
Линия связи по протоколу CAN — это шина, к которой может быть подключён ряд узлов. Количество узлов не имеет никакого теоретического предела. Фактически количество узлов будет ограничено временами задержек и/или электрической нагрузкой на линии шины. Способ, которым выполнена шина, не установлен в данной спецификации. Например, это может быть одиночный провод (+земля), два дифференциальных провода, оптическое стекловолокно.
Уровни шины
Шина может принимать одно из дополняющих друг друга значений: «dominant» и «recessive». В случае одновременной подачи «dominant» бита и «recessive» бита, возникающее в результате значение шины будет «dominant».
(Прим. переводчика: далее считается что «recessive» = лог. «1», а «dominant» = «0»).
Подтверждение
Все приёмники проверяют непротиворечивость принимаемого сообщения и подтверждают непротиворечивое сообщение.
Режим «сна» / пробуждения
Чтобы уменьшить потребляемую мощность системы, узел CAN может быть переведен в режим «сна». Режим «сна» заканчивается при любом действии на шине или внутреннем состоянии системы. При пробуждении запускается внутренняя синхронизация, канальный уровень ждёт стабилизации генератора системы, а затем будет ожидать самосинхронизации к действиям на шине (синхронизация к действиям на шине заканчивается после принятия последовательности 11 битов с лог. «1»). Для пробуждения узла из режима покоя может использоваться некоторое сообщение пробуждения со специальным идентификатором.
3. Передача сообщений
При передаче информации с помощью протокола CAN используется четыре типа кадров. Кадр данных содержит данные, передаваемые передатчиком приёмнику (ам). Кадр удаленного запроса данных передается на шину для запроса передачи кадра данных с тем же самым идентификатором. Кадр ошибки передаётся при обнаружении ошибки на шине. Кадр перегрузки используется для обеспечения дополнительной задержки между предшествующим и последующим кадрами данных или кадрами удаленного запроса данных. Кадры данных и кадры удаленного запроса данных отделяются от предшествующих кадров межкадровым пространством.
3.1 Кадр данных (DATA FRAME)
Кадр данных состоит из 7 различных полей:
«Начало кадра», «поле арбитража», «поле контроля», «поле данных», «поле CRC», «поле подтверждения», «конец кадра».
Начало кадра (Start of Frame)
Отмечает начало кадра данных или кадра удаленного запроса данных. Состоит из бита с лог. ‘0’.
Узлу разрешено начинать передачу только при свободной шине (см. простой шины). Все узлы должны быть синхронизированы по началу фронта, вызванного полем «начало кадра» (см. аппаратная синхронизация) узла, начавшего работу первым.
Поле арбитража (Arbitration Field)
Состоит из идентификатора и RTR-бита.
Идентификатор (Identifier)
Имеет длину 11 бит. Эти биты должны быть переданы в порядке от ID10 до ID4. Самый старший бит ID0. 7 старших битов не должны быть все битами с лог ‘1’.
RTR-бит (RTR — bit)
Бит запроса передачи.
В кадре данных RTR-бит — «0». Внутри кадра удаленного запроса данных — «1».
Поле контроля (CONTROL FIELD)
Включает 6 бит. Это — код длины данных (4бита) и 2 бита зарезервированные под будущие расширения. Зарезервированные биты должны быть «0».
Код длины данных (DLC)
Показывает количество байт в поле данных. Код длины данных имеет размер 4 бита и передаётся внутри контрольного поля.
Допустимые значения: 0…….8.
Другие значения использоваться не могут.
Поле данных (DATA FIELD)
Включает данные, передаваемые внутри кадра данных. Оно может содержать от 0 до 8 байт, каждый из которых содержит 8 бит.
CRC поле (CRC FIELD)
Содержит CRC — последовательность, сопровождаемую разделителем.
CRC-последовательность (CRC Sequence):
Для вычисления CRC полинома, полином, коэффициенты которого задаются потоком, состоящим из значений, бит полей: «начало кадра «, «поле арбитража», «поле контроля», «поле данных» (если имеется) (самые младшие 15 коэффициентов полинома =0), должен быть разделён полином следующего вида:
x^15+x^14+x^10+x^8+x^7+x^4+x^3+1
Остаток этого полиномиального деления есть CRC-последовательность, передаваемая по шине.
CRC-разделитель (CRC Delimiter):
CRC-последовательность сопровождается CRC-разделителем, который всегда равен лог. «1».
Поле подтверждения (ACK FIELD)
Длина 2 бита. Содержит область подтверждения (1 бит) и разделитель подтверждения (1 бит). В поле подтверждения передающий узел посылает два бита с лог. «1». Приемник, получивший правильное сообщение, информирует об этом передатчик, посылая бит с лог. «0» (т.е. перезаписывая бит в области подтверждения с лог. «1» на бит с лог. «0»).
Область подтверждения (ACK Slot)
Все узлы, получившие соответствующую CRC-последовательность, сообщают об этом внутри области подтверждения перезаписью бита с лог. «1» на бит с лог. «0».
Разделитель подтверждения (ACK Delimiter)
Второй бит области подтверждения должен быть — лог. «1». Следовательно, область подтверждения окружена битами с лог. «1» (CRC-разделитель и разделитель подтверждения).
Конец кадра (END OF FRAME)
Каждый кадр данных и кадр удаленного запроса данных разграничены последовательностью флагов, состоящей из семи битов с лог. «1».
3.2 Кадр удаленного запроса данных (REMOTE FRAME)
Узел может инициализировать передачу кадра данных другим узлом, посылая кадр удаленного запроса данных.
Этот кадр состоит из 6 полей:
«Начало кадра», «поле арбитража», «поле контроля», «поле CRC», «поле подтверждения», «конец кадра».
В отличие от кадра данных , RTR бит = «1». Здесь нет поля данных, зависящего от значения «кода длины данных», внутри этого поля может быть записано любое из допустимых значений (0…….8).
Полярность RTR бита показывает, является ли передаваемый кадр кадром данных или кадром удаленного запроса данных
3.3. Кадр ошибки (ERROR FRAME)
Состоит из двух различных полей. Первое поле является суперпозицией флагов ошибки различных узлов, второе поле — поле разделителя ошибки.
Для корректного завершения кадра ошибки, узлу в состоянии «пассивной ошибки» может быть необходим доступ к шине, поэтому шина должна быть свободной, по крайней мере, три времени передачи бита. Следовательно, шина не должна быть загружена на 100%.
Флаг ошибки (Error Flag):
Существует 2 формы флага ошибки: активный и пассивный флаг ошибки.
1. активный флаг ошибки состоит из 6 последовательных бит с лог. «0».
2. пассивный флаг ошибки состоит из 6 последовательных бит с лог. «1, если они не перезаписаны битами с лог. «0» других узлов.
Узел в состоянии «активной ошибки» при обнаружении ошибки передает активный флаг ошибки. Форма флага ошибки нарушает закон кодирования битового потока методом разрядного заполнения (см. раздел «Кодирование битового потока»). Вследствие этого все узлы обнаруживают условие ошибки и начинают передавать флаг ошибки. В результате, последовательность бит с лог. «0», контролируемая на шине является суперпозицией флагов ошибок отдельных узлов. Общая длина этой последовательности — от 6 до 12 бит с лог. «0».
Узел в состоянии «пассивной ошибки» при обнаружении ошибки передает пассивный флаг ошибки, он ждет последовательности из 6 одинаковых бит, определяющих начало флага пассивной ошибки. Когда эта последовательность будет обнаружена, флаг пассивной ошибки будет завершен.
Разделитель ошибки (Error Delimiter)
Разделитель ошибки состоит из 8 бит с лог. «1». После передачи флага ошибки каждый узел посылает биты с лог. «1» и контролирует шину, пока не обнаружит бит с лог. «1». Впоследствии он начинает передавать 7 бит с лог. «1».
3.4. Кадр перегрузки (OVERLOAD FRAME)
Кадр перегрузки содержит два битовых поля: флаг перегрузки и разделитель перегрузки.
Имеются два вида перегрузки, которые оба приводят к передаче кадра перегрузки.
1. Внутреннее состояние приёмника, которое требует задержки следующего кадра данных или кадра удаленного запроса данных.
2. Обнаружение бита с лог. «0» в течение поля перерыва (см. межкадровое пространство).
Передача кадра перегрузки из-за состояния 1 возможна только в первом битовом интервале перерыва, в то время как кадры перегрузки по состоянию 2 начинают передаваться на следующем битовом интервале после обнаружения бита с лог. «0».
Для больших задержек может быть послано несколько кадров перегрузки.
Флаг перегрузки (Overload flag)
Состоит из 6 бит с лог. «0». Формат соответствует активному флагу ошибки.
Форма флага перегрузки нарушает фиксированную форму поля перерыва. Поэтому, другие узлы также обнаруживают состояние перегрузки и в свою очередь начинают передавать флаг перегрузки.
В случае обнаружения бита с лог. «0» в течение третьего бита перерыва, некоторые узлы не будут корректно интерпретировать флаг перегрузки, первый (из шести) бит с лог. «0» будет принят за поле «начало кадра». Шестой бит флага перегрузки с лог. «0» нарушает закон кодирования битового потока методом разрядного заполнения (см. раздел «Кодирование битового потока методом разрядного заполнения»).
Разделитель перегрузки (Overload Delimiter)
Состоит из 8 бит с лог. «1».
Разделитель перегрузки имеет такую же форму, как и разделитель ошибки. После передачи флага перегрузки узел контролирует шину, пока не обнаружит бит с лог. «1». В этой точке времени все узлы уже закончили передавать флаг перегрузки и начинают передавать 7 бит с лог. «1».
4. Межкадровое пространство (INTERFRAME SPACE)
Кадры данных и кадры удаленного запроса данных отделяются от предшествующих кадров любого типа (кадра данных, кадра удаленного запроса данных, кадра ошибки, кадра перегрузки). Это разделяющее битовое поле называется межкадровым пространством.
Кадрам перегрузки и кадрам ошибки не предшествует межкадровое пространство; несколько кадров перегрузки также не отделяются межкадровым пространством.
Межкадровое пространство содержит поля «перерыв» и «простой шины», и для узла в состоянии «пассивной ошибки», который был передатчиком предыдущего сообщения, дополнительное поле — «приостановка передачи»
(поле «приостановка передачи» находится между полями «перерыв» и «простой шины»).
Поле перерыва (Intermission)
Состоит из 3 бит с лог. «1». В течение перерыва никакому узлу нельзя начинать передачу кадра данных или кадра удаленного запроса данных. Единственно возможное действие — это сигнализация состояния перегрузки.
Простой шины (Bus Idle)
Простой шины может иметь произвольную длину. Если шина опознана как свободная, любой узел, который имеет что — либо для передачи может начать передачу. Сообщение, которое было задержано для передачи другого сообщения, начинает передаваться в первом бите после поля перерыва.
Обнаружение бита с лог. «0» на шине в течение этого поля интерпретируется как поле «начало кадра».
Приостановка передачи
Узел в состоянии «пассивной ошибки», после передачи сообщения, посылает 8 бит с лог. «1» после поля перерыва, перед началом передачи дальнейших сообщений или определением занятости шины. Если тем временем началась передача (вызванная другим узлом), узел станет приёмником этого сообщения.
5. Определение передатчика / приемника
Передатчик
Узел, передающий сообщение называется передатчиком этого сообщения. Узел является передатчиком до тех пор, пока он не потерял арбитраж.
Приёмник
Узел называется приёмником сообщения, если он не передатчик сообщения и шина занята.
6. Корректность сообщения
Точка времени, в которой сообщение является корректным, различна для передатчиков и приёмников сообщений.
Передатчик
Сообщения пригодно для передатчика, если нет ошибок до конца кадра. Если сообщение разрушено, ретрансляция будет происходить автоматически и согласно приоритетам. Чтобы решить приоритеты доступа к шине с другими сообщениями, ретрансляция должна начаться, как только шина освободится.
Приёмник
Сообщение корректно для приёмника, если нет ошибок до конца кадра.
7. Кодирование битового потока
Следующие поля: «начало кадра», «поле арбитража», «поле контроля», «поле данных» и «поле CRC» кодированы методом разрядного заполнения. Всякий раз, когда передатчик передает пять последовательных бит идентичной величины в битовом потоке, он автоматически вставляет дополняющий бит противоположного значения в фактически передаваемый битовый поток.
Оставшиеся битовые поля кадра данных или кадра удаленного запроса данных («разделитель CRC», «поле подтверждения» и «конец кадра») имеют фиксированную форму и не кодируются. Кадр ошибки и кадр перегрузки также имеют фиксированную длину и не кодируются методом разрядного заполнения.
8. Обработка ошибок
Существует пять типов не взаимоисключающих ошибок:
- разрядная ошибка
Узел, который посылает что — либо на шину также контролирует шину. Разрядная ошибка может быть обнаружена во время передачи бита, если переданное значение отличается от значения, прочитанного с шины.
Исключение:При посылке бита с лог. «1» в течение поля арбитража или области подтверждения разрядная ошибка не возникает, если контролируется бит с лог. «0». Передатчик, посылающий флаг пассивной ошибки и обнаруживший бит с лог. «0» не интерпретирует его как разрядную ошибку.
- ошибка заполнения
Ошибка заполнения обнаруживается во время приема последовательности из шести бит одинакового разрядного уровня в поле сообщения, которое должно быть кодировано методом разрядного заполнения. - ошибка CRC
Последовательность CRC состоит из результата вычисленного передатчиком. Приёмники вычисляют CRC таким же образом, как и передатчик. Ошибка CRC обнаруживается при несовпадении расчетного результата CRC — последовательности в приёмнике и присланной CRC — последовательности передатчика. - ошибка формата
Ошибка формата обнаруживается, когда разрядное поле фиксированного формата содержит один или несколько лишних бит. - ошибка подтверждения
Ошибка подтверждения обнаруживается передатчиком всякий раз, когда нет контроля бита с лог. «0» в течение области подтверждения.9. Сигнализация ошибок
Узел, обнаруживший состояние ошибки сигнализирует об этом передачей флага ошибки. Для узла в состоянии «активной ошибки» это передача флага активной ошибки, для узла в состоянии «пассивной ошибки» это передача флага пассивной ошибки. Всякий раз при обнаружении разрядной ошибки, ошибки заполнения, ошибки формата и ошибки подтверждения узел начинает передавать флаг ошибки в следующем бите. Всякий раз, когда обнаружена ошибка CRC, передача флага ошибки будет начата после разделителя подтверждения, если не была начата передача флага ошибки для другого состояния.
10. Типизация ошибок
Узел может быть в одном из трех состояний:
- активной ошибки
- пассивной ошибки
- отключения от шины
В состоянии «активной ошибки» узел может взаимодействовать с шиной, посылая флаг активной ошибки при обнаружении ошибки. В состоянии «пассивной ошибки» узел не должен слать флаг активной ошибки. Он принимает участие во взаимодействии с шиной, но при обнаружении ошибки должен послать флаг пассивной ошибки. После передачи сообщения об ошибке, узел в состоянии «пассивной ошибки» будет ждать инициализации дальнейшей передачи (см. приостановка передачи).
В состоянии отключения от шины узлу не разрешено оказывать влияние на шину.
Для типизации ошибок у каждого узла — CAN есть два счетчика:
1. счетчик ошибок передачи
2. счетчик ошибок приема
(Прим. переводчика: Правила модификации счетчиков здесь не приводятся. Но хочется обратить внимание на то, что при наличии ошибок, счетчики увеличиваются быстрей, чем уменьшаются при приемах или передачах без ошибок).
Узел находится в состоянии «пассивной ошибки», если счетчик ошибок передачи и / или счетчик ошибок приема больше или равен 128.
Узел отключается от шины, если счетчик ошибок передачи или приема больше или равен 256.
Узел, находившиеся в состоянии «пассивной ошибки» переходит в состояние «активной ошибки», если счетчик ошибок передачи и счетчик ошибок приема меньше или равен 127.
Узлу, который находится в состоянии «отключения от шины», разрешается перейти в состояние «активной ошибки», с установкой обоих счетчиков в 0, после того, как на шине будут проконтролированы 128 прохождений 11 последовательных битов с лог. «1».
Обратите внимание:
1. Величина счетчика ошибки большая, чем 96 указывает на серьезные нарушения на шине. Это можно использовать для проверки состояния шины.
2. Запуск / Пробуждение:
Если в некоторый момент времени активен только один узел, и если этот узел передает некоторое сообщение, он не получит подтверждения, обнаруживается ошибка и происходит повтор сообщения. Из-за этого он может перейти в состояние «пассивной ошибки», но не может перейти в состояние «отключения от шины».
10. Требования к синхронизации
Номинальная скорость передачи информации в битах
Номинальная скорость передачи информации в битах — число битов за секунду, передаваемое в отсутствии пересинхронизации идеальным передатчиком.
Номинальное время передачи бита
номинальное время передачи бита = 1 / номинальную скорость передачи информации
Номинальное время передачи бита можно представить как время, разделенное на отдельные не перекрывающиеся сегменты времени. Это сегменты:
— Сегмент синхронизации (SYNC_SEG)
— Сегмент времени распространения (PROP_SEG)
— Сегмент TSEG1 (PHASE_SEG1)
— Сегмент TSEG2 (PHASE_SEG2)
SYNC SEG
Эта часть времени передачи бита используется, чтобы синхронизировать различные узлы на шине. Ожидается, что фронт сигнала находится внутри этого сегмента.
PROP SEG
Эта часть времени передачи бита используется, чтобы компенсировать физическую задержку времён внутри сети.
Это удвоенная сумма времени распространения сигнала по шине, входной задержки компаратора, и выходной задержки формирователей.
TSEG1 и TSEG2.
Эти сегменты используются, чтобы компенсировать ошибки смещения фазы сигнала. Эти сегменты могут быть удлинены или укорочены пересинхронизацией.
Точка считывания (Sample point)
Точка считывания — точка времени, в которой уровень шины читается и интерпретируется, как величина соответствующего бита. Ее место — в конце TSEG1.
Время обработки информации
Время обработки информации — отрезок времени, начинающийся с точки считывания, зарезервированный для вычисления уровня бита.
Квант времени
Квант времени — фиксированная единица времени, полученная из периода генератора. Существует программируемый делитель, оперирующий целочисленными величинами, изменяющимися, по крайней мере, от 1 до 32. Начиная с минимального кванта времени, квант времени может иметь длительность:
квант времени = m * минимальный квант времени ,где m — величина делителя.
минимальный квант времени = 1 / f генератора.
Длительность отрезков времени
- SYNC_SEG — 1 квант времени .
- PROP_SEG — программируем, 1,2, …, 8 квантов.
- TSEG1 — программируем, 1,2, …, 8 квантов.
- TSEG2 — максимум из TSEG1 и времени обработки информации
- время обработки информации — меньше или равно 2 квантам.
12. Синхронизация
Аппаратная синхронизация
После аппаратной синхронизации внутреннее время передачи бита перезапускается с SYNC_SEG. Таким образом, аппаратная синхронизация вынуждает фронт находиться внутри сегмента SYNC_SEG.
Ширина перехода пересинхронизации
В результате пересинхронизации TSEG1 может быть удлинен, или TSEG2 может быть сокращен. Количество удлинения или сокращения сегментов TSEGx (x=1,2) имеет верхний предел, связанный с шириной перехода пересинхронизации. Ширина перехода пересинхронизации должна быть программируема между 1 и min(4, TSEG1).
Синхронизация информации может быть получена из переходов от одного бита к другому. Максимальная длина между двумя переходами, которые могут использоваться для пересинхронизации — 29 времен передачи бита.
Фазовая ошибка фронта
Фазовая ошибка фронта определяется позицией фронта относительно SYNC_SEG, измеряется в квантах времени. Знак фазовой ошибки определяется следующим образом:
- e = 0, если фронт сигнала находится внутри SYNC_SEG.
- e> 0, если фронт сигнала перед точкой считывания.
- e < 0, если фронт сигнала после точки считывания предыдущего бита.
Пересинхронизация
Эффект пересинхронизации — также как и от аппаратной синхронизации, когда величина фазовой ошибки фронта сигнала, которая вызывает пересинхронизацию — меньше или равна программируемой величине ширины перехода пересинхронизации. Когда величина ошибки фазы больше чем ширина перехода пересинхронизации,
- и если ошибка фазы положительна, то TSEG1 удлиняется на время равное:
время передачи бита * ширину перехода пересинхронизации. - и если ошибка фазы отрицательна, то TSEG2 — сокращается на время равное:
время передачи бита * ширину перехода пересинхронизации.
Правила синхронизации
Синхронизация и пересинхронизация — две формы синхронизации. На них действуют следующие правила:
1. Позволяется только одна синхронизация внутри одного интервала передачи бита.
2. Для синхронизации будет использоваться фронт только, если величина, полученная в предыдущей точке считывания (предыдущая величина на шине) отличается от величины на шине сразу после фронта.
3. Синхронизация выполняется всякий раз, по фронту «1» -> «0» в течение простоя шины.
4. Все другие фронты «1» -> «0» (и фронты «0» -> «1» в случае низких скоростей), выполняемые по правилам 1 и 2, будут использоваться для пересинхронизации.