Примечание: Пожалуйста, прочтите Раздел 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 шина выбирает один раз на интервале выборки.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.