Модуль ECAN для dsPIC. Типичная сеть ECAN. 16 приемных фильтров для фильтрования сообщения, страница 21

9.3 Синхронизация

Используются два типа синхронизации – жесткая синхронизация и пересинхронизация. Жесткая синхронизация происходит один раз при старте кадра. Повторная синхронизация происходит внутри кадра.

- Жесткая синхронизация берется при переходе из recessive в dominant состояние стартового бита. Время бита перезапускается по этому фронту.

- пересинхронизация берется когда фронта бита не происходит в течение сегмента синхронизации. Один из фазовых сегментов слишком длинный или короткий чем величина фазовой ошибки в сигнале. Максимальное значение которое может быть использовано определено в параметре CiCFG1<SJW>.

Длинна фазового сегмента 1 и фазового сегмента 2 может быть изменена в зависимости от разности генераторов передающего и принимающего узла. Повторная синхронизация компенсирует фазовые сдвиги различных генераторов используемые передающими и принимающими узлами.

Удлинение бита – если передающий узел имеет более медленный генератор чем принимающий узел, следующий срез и указатель выборки могут быть задержаны удлинением фазового бита 1.

Сокращение бита – если передающий узел имеет более быстрый генератор чем принимающий узел, следующий срез и указатель выборки могут быть ускорены сокращением фазового бита 1.

Ширина прыжка синхронизации (SJW) – биты SJW<1:0> в регистре конфигурации скорости передачи (CiCFG1<7:6>) определяет ширину прыжка синхронизации ограничивающую величину удлинения или сокращения интервалов фазового сегмента 1 или фазового сегмента 2. Этот сегмент не должен быть длиннее, чем время фазового сегмента 2. Ширина может быть 1-4 TQ.

9.4 Подсчет времени передачи бита

Шаги которые необходимо сделать перед программной конфигурацией времени передачи бита для ECAN модуля описаны ниже, с примерами.

9.4.1 Шаг 1: Выбор частоты ECAN модуля

Для выбора частоты модуля (Fcan) используйте биты CiCTRL1<CANCKS>.

Если CANCKS=0 Fcan=Fosc

Если CANCKS=1 Fcan=Fcy

Примечание: Fcan не должно быть больше 40 МГц

9.4.2 Шаг 2: Подсчет частоты временного кванта (Ftq)

Выберите скорость CAN шины (Fbaud).

Выберите количество временных квантов во времени передачи бита, основываясь на ваших системных запросах.

Ftq=N*Fbaud

Примечание1: общее число временных квантов в номинальном времени передачи бита может быть запрограммировано между 8 TQ и 25 TQ. Поэтому Ftq лежит от 8 до 25 Fbaud.

Примечание2: убедитесь что Ftq имеет целое число Fbaud . Если нет, то генератор входной частоты или скорость должны быть изменены.

9.4.3 Шаг 3: Расчёт предделителя скорости обемена (CiCFG2<BRP>)

Предварительный делитель берется из равенства

CiCFG1(BRP)=(Fcan/(2*Ftq))-1

9.4.4 Шаг 4: Выбор индивидуального сегмента.

Индивидуальные сегменты выбираются используя регистр CiCFG2.

Время бита= Синхронизирующий сегмент+сегмент распространения +фазовф сегмент 1 + фазовый сегмент 2.

Примечание 1: (Сегмент распространения +фазовый сегмент 1) должны быть болше чем или равны фазовому сегменту 2.

Примечание 2: Фазовый сегмент 2 должен быть больше чем ширина прижка синхронизации.

Пример 8: Пример вычисления времени передачи бита

• Шаг 1: Выбираем тактовую частоту модуля ECAN.

- Если FOSC = 80 MHz,    CiCTRL1<CANCKS>  должен быть установлен в  ‘1’.

Таким образом,  FCAN = Fosc/2 = 40 MHz.

• Шаг 2: Подсчёт частоты временного кванта.

- Если  FBAUD = 1 Mbps, и количество временных квантов N = 20, тогда FTQ = 20 MHz.

• Шаг 3: Расчёт предделителя скорости обмена

- CiCFG1<BRP> = ( 40000000/(2 * FTQ) ) - 1 = 1 - 1 = 0.

• Шаг 4: Выбор индивидуального сегмента bittime.

- Сегмент синхронизации = 1TQ (постоянный).

- Основываясь на характеристике системы, предположим что задержка распространения =5TQ.

- Предположим, что типовая точка  должен быть в 70 %  Номинального BitTime.

 Сегмент фазы 2 =30% номинального bittime = 6 TQ.

-Тогда сегмент фазы 1 = 20 TQ - (1 TQ + 5 TQ + 6 TQ) = 8 TQ.

Пример 9: Пример кода программы для настройки параметров скорости передачи