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

Примечание: Пожалуйста, прочтите Раздел 22 «DMA»чтобы получить больше информации о том как сконфигурировать DMA контролер. Проверьте последнюю документацию на сайте Микрочипа www.microchip.com.

21.8.2 Функционирование DMA при приеме данных

Когда ECAN контролер закончил прием сообщения (8 слов), сообщения передаются контролером DMA в буфер сообщений в DMA RAM. ECAN модуль генерирует прерывание приема данных, чтобы запустить цикл DMA. В ответ на это прерывание DMA канал который сконфигурирован для приема сообщений читает регистр CiRXD и передает в буфер в DMA RAM. Восемь слов передаются для каждого сообщения, полученные ECAN контролером. Для большей информации смотреть Раздел 2 «Форматы CAN сообщений». Пример кода конфигурации DMA канала для ECAN1 приема можно увидеть в примере 7

Пример 7. DMA канал 1 сконфигурирован для ECAN1 приёма

/* Размер передаваемых данных: слово */

DMA1CONbits.SIZE = 0x0;

/* направление передачи: от периферии к DMARAM */

DMA1CONbits.DIR = 0x0;

/* Режим адресации  DMA: периферийная косвенная адресация */

DMA1CONbits.AMODE = 0x2;

/* Операционный режим: Continuous, Ping-Pong режим отключён */

DMA1CONbits.MODE = 0x0;

/* связать ECAN1событие приёма с  DMA каналом 0 */

DMA1REQ = 34;

/* Установить число  DMATransfer для  ECAN сообщение как 8 слов */

DMA1CNT = 7;

/* Адреспериферии: ECAN1 Receive Register */

DMA1PAD = &C1RXD;

/* Start Address Offset for ECAN1 Message Buffer 0x0000 */

DMA1STA = 0x0000;

/* Активизация канала: Активизировать DMA канал 1 */

DMA1CONbits.CHEN = 0x1;

/* Активизация канала прерывания: Активировать прерывание DMA канал 1 */

IEC0bits.DMA1IE = 1;

9 Bittiming

Номинальная скорость синхронизации это количество бит передаваемых по CAN шине в секунду.

Номинальный bit time=1/номинальная скорость обмена.

Существует четыре временных сегмента в bit time компенсирующих сдвиг фаз между двумя генераторами или задержку распространения. Эти временные сегменты не перекрывают друг друга и представлены в длительностях временного кванта (TQ). Один TQ это фиксированный временной интервал определяемый генератором. Общее число временных квантов в номинальном bit time должно быть запрограммировано между 8 и 25 TQ.

Рисунок 18 показывает как частота временных квантов (Ftq) получается из системной частоты, а так же как программировать различные временные сегменты.

Рисунок 18. ECAN bit timing

9.1 Биты сегментов

Каждое время передачи бита состоит из четырех сегментов:

-Синхронизирующий сегмент – это временной сегмент синхронизирует различные узлы на CAN шине. Граница бита будет в этом сегменте. Основываясь на CAN протоколе, Синхронизирующий сегмент содержит один временной квант.

-Сегмент распространения – это временной сегмент для компенсации различных временных задержек которые могут присутствовать в длинной шине или из-за каких либо приемопередатчиков на этой шине.

-Фазовый сегмент 1 – Этот временной сегмент компенсирует ошибки которые могут случаться при сдвиге фазы фронтов. Этот временной сегмент может быть растянут на повторную синхронизацию для компенсации сдвига фаз.

-Фазовый сегмент 2 - Этот временной сегмент компенсирует ошибки которые могут случаться при сдвиге фазы фронтов. Этот временной сегмент может быть растянут на повторную синхронизацию для компенсации сдвига фаз. Время фазового сегмента 2 может быть сконфигурировано программно любое значение или определяться временем фазового сегмента 1.

9.2 Указатель выборки

Указатель выборки это момент во времени интервала бита CAN где происходит выборка и читается значение шины. Она расположена между фазовым сегментом 1 и фазовым сегментом 2. CAN шина может быть выбрана за одним или тремя временными интервалами от указателя выборки, в зависимости как сконфигурирован бит SAM в регистре CiCFG2<6>.

-Если CiCFG2<SAM>=1, CAN шина выбирает три раза на интервале выборки. Среднее из этих образцов определяет значение бита.

-Если CiCFG2<SAM>=0, CAN шина выбирает один раз на интервале выборки.