Физический уровень протокола CAN

CRC Check

ACKnowledgement Check

Frame check

Bit stuffing

Bit monitoring

Методы обнаружения ошибок.

Побитовый арбитраж на шине CAN.

CAN протокол определяет пять способов обнаружения ошибок в сети:

Bit monitoring – каждый узел во время передачи битов в сеть сравнивает значение передаваемого им бита со значением бита, которое появляется на шине. Если эти значения не совпадают, то узел генерирует ошибку Bit Error. Естественно, что во время арбитража на шине (передача поля арбитража в шину) этот механизм проверки ошибок отключается.

Bit stuffing – когда узел передает последовательно в шину 5 бит с одинаковым значением, то он добавляет шестой бит с противоположным значением. Принимающие узлы этот дополнительный бит удаляют. Если узел обнаруживает на шине больше 5 последовательных бит с одинаковым значением, то он генерирует ошибку Stuff Error.

Frame Check – некоторые части CAN-сообщения имеют одинаковое значение во всех типах сообщений. Т.е. протокол CAN точно определяет, какие уровни напряжения и когда должны появляться на шине. Если формат сообщений нарушается, то узлы генерируют ошибку Form Error.

ACKnowledgement Check – каждый узел получив правильное сообщение по сети посылает в сеть доминантный (0) бит. Если же этого не происходит, то передающий узел регистрирует ошибку Acknowledgement Error.

CRC Check – каждое сообщение CAN содержит CRC сумму, и каждый принимающий узел подсчитывает значение CRC для каждого полученного сообщения. Если подсчитанное значение CRC суммы, не совпадает со значением CRC в теле сообщения, принимающий узел генерирует ошибку CRC Error.

При обнаружении ошибки нарушается трафик сети, и все узлы сбрасывают принятое сообщение.

Существует несколько физических уровней протокола CAN (ISO 11898, ISO 11519, SAE J2411). Физической средой передачи в CAN может служить витая пара, оптоволокно, радиоканал, линия электропередачи.

В большинстве случаев используется физический уровень CAN определенный в стандарте ISO 11898. ISO 11898 в качестве среды передачи определяет двухпроводную дифференциальную линию с импедансом 120 Ом (допускается колебание импеданса в пределах от 108 до 132 Ом. Физический уровень CAN реализован в специальных чипах - CAN приемо-передатчиках (transceivers), которые преобразуют обычные TTL уровни сигналов используемых CAN-контроллерами в уровни сигналов на шине CAN. Наиболее распространенный CAN приемо-передатчик – Phillips 82C250 полностью соответствует стандарту ISO 11898. Разъемы для сети CAN до сих пор НЕ СТАНДАРТИЗОВАНЫ. Каждый протокол высокого уровня обычно определяет свой тип разъемов для CAN-сети.

Максимальная скорость сети CAN в соответствие с протоколом равна 1 Mbit/sec. При скорости в 1 Mbit/sec максимальная длина кабеля равна примерно 40 метрам. Ограничение на длину кабеля связано с конечной скоростью распространения электромагнитного поля и механизмом побитового арбитража (во время арбитража все узлы сети должны получать текущий бит передачи одновременно, т.е. сигнал должен успеть распространится по всему кабелю за единичный отсчет времени в сети). Соотношение между скоростью передачи и максимальной длиной кабеля приведено в таблице:

скорость передачи максимальная длина сети
1000 Кбит/сек 40 метров
500 Кбит/сек 100 метров
250 Кбит/сек 200 метров
125 Кбит/сек 500 метров
10 Кбит/сек 6 километров

2.2 Организация портов ввода/вывода

Операции ввода/вывода в микроконтроллерах производятся через универсальные порты, обычно обозначаемые буквами латинского алфавита (A, B, C, D …). Порты ввода-вывода – обязательный атрибут любого микроконтроллера. Их количество для каждой конкретной микросхемы разное. Число линий порта обычно соответствует разрядности шины данных, но в некоторых случаях отдельные разряды не используются. Это связано с ограниченным количеством выводов (ножек) у микросхемы. Количество доступных портов микроконтроллера (число контактов ввода/вывода I/O) – один из основных параметров микроконтроллера.

У одних портов используются все восемь линий. У других семь, шесть, даже три. Но для процессора порты остаются восьмиразрядными. Процессор всегда пишет в такие порты и читает из них полноценный байт информации. Неиспользуемые биты при записи просто теряются. При чтении байта из порта неиспользуемые разряды равны нулю.

Каждая линия порта через внутренние схемы управления может быть подключена к различным устройствам контроллера и программно может быть сконфигурирована как линия цифрового ввода или вывода (без/ или с подтягивающим резистором), аналогового ввода/ вывода, линия адаптера последовательного интерфейса, вывод таймера и т.д.

Обращение к портам производится через регистры ввода/вывода. Под каждый порт в адресном пространстве выделяется 3 адреса. По этим адресам размещаются три регистра:

- регистр данных порта PORTx;

- регистр направления порта DDRx;

- "регистр" вывода порта PINx.

"Регистры" PINx на самом деле регистрами (физическими регистрами) не являются. По этим адресам производится доступ к физическим значениям сигналов на выводах порта. Эти "регистры" доступны только для чтения (регистры PORTx и DDRx доступны и для чтения и для записи). Существенный момент: порт PINх не снабжен триггерами, поэтому запись в этот порт не приводит к изменениям физических состояний схемы, однако такую виртуальную запись удобно использовать при отладке программы.

Рассмотрим работу порта ввода/вывода на примере функционирования линии РВ микроконтроллера AT90S2313; так как эта линия характеризуется простыми функциональными возможностями, и ее схема наиболее проста.

На рис. представлена функциональная схема, обеспечивающая работу линии порта РВ2.

Рис. Схема работы линии РВ2 порта ввода/вывода

Рис. – Эквивалентная электрическая схема вывода порта микроконтроллера

Рассматриваемая линия РВ2 связана с одной из линий внутренней шины микроконтроллера. Входные буферы портов построены по схеме триггера Шмита. Максимальная нагрузочная способность выходных буферов портов ввода/вывода – 20 мА. Это позволяет непосредственно подключать к портам светодиодные индикаторы и маломощные исполнительные устройства. Имеется возможность подключать внутренний подтягивающий резистор сопротивлением 30…120 кОм.

Запись в порт означает запись требуемого состояния для каждого вывода порта в соответствующий регистр данных порта PORTx. Чтение состояний порта выполняется чтением либо регистра данных PORTx, либо регистра выводов PINx. При чтении регистра PORTx происходит считывание данных из регистра – защелки порта, а при чтении регистра выводов PINx происходит считывание уровней сигналов на выводах портов.

Команда out PORTB,Rr вызывает запись в триггеры порта B содержимого регистра Rr (Rr – любой регистр общего назначения микроконтроллера). Для записи единицы в триггер PORTB2 хранящееся в регистре число должно иметь вид 0bxxxxxlxx, для записи нуля – 0bхххххОхх. Интерисующий нас второй разряд находится не на второй, а на третьей позиции, так как нумерация разрядов начинается с нуля. Здесь х – любое значение (оно не повлияет на запись в триггер PORTB2), 0b – признак двоичного представления числа.

Под действием положительного импульса "ЗАПИСЬ В ТРИГГЕРЫ PORT B" информация, установленная на внутренней шине данных МК, записывается в триггеры порта B, в том числе и в триггер PORTB2.

Под действием положительного импульса "ЗАПИСЬ В ТРИГГЕРЫ DDR B" информация, установленная на внутренней шине данных МК, записывается в триггеры DDR B. Записи в порт DDR B соответствует команда out DDR B,Rr.

Данные, хранящиеся в триггерах PORTB, могут быть считаны на шину данных через соответствующие буферы под действием положительного импульса "ЧТЕНИЕ ВЫХОДОВ PORTB". Этой операции соответствует команда in Rr,PORTB. Результат будет занесен в регистр Rr, состояние разряда №2 регистра (нумерация начинается с нулевого разряда) будет соответствовать информации, записанной в триггер PORTB2. Не обязательно помнить, какие данные записывались в PORTB или в DDRB, их всегда можно повторно считать из этих портов.

Буферы на функциональной схеме изображены в виде треугольников. Передача через соответствующий буфер происходит только при ВЫСОКОМ уровне на управляющей линии (линия, подведенная к треугольнику сверху или снизу).

Уровни, присутствующие на линиях РВ, в том числе и РВ2, считываются на шину данных через соответствующие буферы под действием положительного импульса "ЧТЕНИЕ PINB". Этой операции соответствует команда in Rr,PINB.

Любую линию порта можно сконфигурировать как вход или как выход:

1. Линия порта – вход, если в DDRBn (n – номер линии) установить НИЗКИЙ уровень (при НИЗКОМ уровне входное сопротивление PORTBn велико; при ВЫСОКОМ уровне в PORTBn вход соединяется через внутренний резистор с цепью питания микроконтроллера (подтягивающий резистор) и при отсутствии внешнего сигнала на контакте микроконтроллера РВn присутствует ВЫСОКИЙ уровень).

2. Линия порта – выход, если в DDRBn установить ВЫСОКИЙ уровень (при НИЗКОМ уровне в PORTBn на контакте микроконтроллера РВn присутствует НИЗКИЙ выходной уровень; при ВЫСОКОМ уровне в PORTBn возможен ввод внешних данных при подсоединении к выводу мощного внешнего источника сигнала).

Любую линию порта можно сконфигурировать программно. Однако некоторые периферийные устройства при активации самостоятельно переопределяют конфигурацию используемых ими выводов.

Все сказанное относится также и к другим линиям других портов микроконтроллера.

Аппаратное прерывание RESET обнуляет триггеры портов ввода/ вывода.

Tmx = +850C Tmn = -400 Рис. – Выходные характеристики вывода порта микроконтроллера

Максимальный ток нагрузки – ток через нагрузку, при котором ещё гарантируются выходные КМОП логические уровни (20-25 мА).

Предельный ток нагрузки – ток длительное превышение которого может привести (не обязательно) к отказу микроконтроллера (35-45 мА).

Ток короткого замыкания – ток замыкания линии порта на общий провод или шину питания. Если не снять замыкание в течение примерно 15 с, то температурный перегрев выходного транзистора может привести к выходу его из строя (100-150 мА).

Часто ограничивается суммарный ток через все выводы контроллера на уровне 120-150 мА.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: