Научная статья на тему 'Проектирование can интерфейса в суперконденсаторных модулях'

Проектирование can интерфейса в суперконденсаторных модулях Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
4285
212
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
СУПЕРКОНДЕНСАТОР / ИОНИСТОР / ИНТЕРФЕЙС / ШИНА CAN / SUPERCAPACITOR / IONISTOR / INTERFACE / CAN BUS

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Разуваев Ю. Ю., Чайка М. Ю., Агупов В. В., Горшков В. С., Силютин Д. Е.

В работе показана логика построения сервисных схем суперконденсаторных модулей, рассмотрен принцип работы CAN интерфейса микроконтроллеров AT90CAN, представлен пример программы для микроконтроллера AT90CAN

i Надоели баннеры? Вы всегда можете отключить рекламу.
iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

DESIGN OF CAN INTERFACE IN SUPERCAPACITOR MODULES

In work the logic of creation of service schemes in supercapacitor modules is shown, the principle of operation of the CAN interface of AT90CAN microcontrollers is considered, the example of the program for the AT90CAN microcontroller is presented

Текст научной работы на тему «Проектирование can интерфейса в суперконденсаторных модулях»

ПРОЕКТИРОВАНИЕ CAN ИНТЕРФЕЙСА В СУПЕРКОНДЕНСАТОРНЫХ МОДУЛЯХ Ю.Ю. Разуваев, М.Ю. Чайка, В.В. Агупов, В.С. Горшков, Д.Е. Силютин, В.А. Небольсин

В работе показана логика построения сервисных схем суперконденсаторных модулей, рассмотрен принцип работы CAN интерфейса микроконтроллеров AT9QCAN, представлен пример программы для микроконтроллера AT90CAN

Ключевые слова: суперконденсатор, ионистор, интерфейс, шина CAN

Введение

Суперконденсаторные модули, применяемые в гибридном транспорте, имеют сервисные схемы с интерфейсом CAN [1-3], осуществляющие мониторинг напряжений суперконденсаторов и температуры. Основным элементом схемы является микроконтроллер. В работе рассмотрены основные принципы проектирования сервисных схем, а также принципы работы с микроконтроллерами AVR, имеющими встроенный CAN-интерфейс (микроконтроллеры серии AT90CAN).

Логика построения сервисных схем суперконденсаторных модулей

Возможный вариант реализации сервисной схемы представлен на рис. 1. В схеме используется гальваническая развязка управляющей и измерительной частей, так как в суперконден-саторных модулях с большим количеством суперконденсаторов рабочее напряжение может превышать 100 В, а при последовательном соединении напряжение может достигать 1 кВ. Гальваническая развязка должна изолировать шину CAN с сигнальными линиями и линией питания от силовых цепей модулей. Если большое напряжение окажется на шине CAN, это приведёт к порче цифровых схем и, возможно, даже бортового компьютера гибридного автомобиля. Для развязки сигнальных линий могут применяться оптроны, а для развязки

шин питания - БС-ОС преобразователи. Развязка позволяет подключать измерительные датчики непосредственно к выводам суперконденсаторов.

Разуваев Юрий Юрьевич - ВГУ, канд. физ.-мат. наук, ассистент, тел. (473) 220-22-84, e-mail: razuvaevvv@mail.ru Чайка Михаил Юрьевич - ОАО ВСКБ «Рикон», канд. хим. наук, начальник НИЛ, тел. (473) 246-35-60, e-mail: chavka@ricon.ru

Агупов Владимир Владимирович - ОАО ВСКБ «Рикон», заместитель генерального директора, тел. (473) 246-35-60, e-mail: mail@ricon.ru

Горшков Владислав Сергеевич - ВГУ, аспирант, тел. (473) 246-35-60, e-mail: vgorsh88@gmail .com Силютин Дмитрий Евгеньевич - ОАО ВСКБ «Рикон», инженер-конструктор НИЛ, тел. (473) 246-35-60, e-mail: dsilvutin@vandex. ru

Небольсин Валерий Александрович - ВГТУ, д-р техн. наук, профессор, тел. (473) 235-61-01, e-mail:

vcmsao13@mail.ru

Рис. 1. Блок-схема возможного варианта реализации сервисной схемы

Микроконтроллер сервисной схемы считывает показания датчиков и передаёт сообщения о состоянии модуля по шине CAN посредством приёмопередатчика, согласующего напряжения в шине с логическими напряжениями микроконтроллера. Питание приёмопередатчика и контроллера может осуществляться от шины CAN. Питание бортовых систем обычно составляет +24 В, и может быть понижено до требуемого значения посредством линейного преобразователя.

Интерфейс CAN может быть обеспечен отдельной микросхемой или схемой, встроенной в микроконтроллер. Микроконтроллеры AVR серии AT90CAN имеют встроенный CAN интерфейс, а также таймеры, АЦП и некоторые другие популярные цифровые интерфейсы, которые могут быть задействованы для связи с измерительной частью схемы.

CAN интерфейс микроконтроллеров AT90CAN

Интерфейс CAN контроллеров AT90CAN полностью совместим со стандартами CAN 2.0a и 2.0b и обеспечивает скорость передачи данных до 1 Мбит/c. При работе с CAN помимо понятий, предусмотренных стандартом, используются такие понятия, как счётчик времен-

ных меток (Time Stamping Counter) и объект сообщения (MOb - Message Object).

Счётчик временных меток позволяет приписывать каждому сообщению CAN временную метку - значение счётчика, актуальное на момент формирования сообщения. Период счётчика настраивается и позволяет приёмнику определить задержку сообщений и восстановить во времени последовательность их отправки.

Объект сообщения это некоторая структура данных в памяти контроллера, доступ к которой осуществляется с помощью регистров. Каждый объект сообщения имеет идентификатор сообщения CAN, маску, которая служит для фильтрации идентификаторов при приёме сообщений, поле данных длиной 8 байт и служебные биты, определяющие режим работы объекта. По сути, объект сообщения это заготовка сообщения, в которую достаточно только подставить данные. Всего в микроконтроллерах данного семейства 15 объектов сообщений. Чем меньше номер объекта, тем выше его приоритет в очереди на отправку или приём. Каждый объект может работать в следующих режимах:

1. объект отключен;

2. режим передачи;

3. режим приёма;

4. режим автоматического ответа;

5. режим приёма пакета сообщений.

Комментариев требуют 4-й и 5-й режимы.

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

Настройка интерфейса CAN состоит из следующих основных этапов:

1. настройка прерываний контроллера CAN;

2. инициализация обязательно всех объектов сообщений;

3. настройка прерываний от объектов сообщений;

4. выбор объекта сообщения с наивысшим приоритетом (обычно 0);

З. установка скорости передачи данных и временных параметров ин-терфейса;

б. включение CAN-контроллера. Настройка прерываний CAN осуществляется регистром CANGIE (CAN General Interrupt Enable Register), значения битов которого представлено в таблице 1.

Таблица 1

Структура регистра прерываний CANGIE

Бит 7 б З 4 3 2 І 0

Название ENIT ENBOFF ENRX ENTX ENERR ENBX ENERG ENOVRT

Бит 7 - ENIT = 0 - запретить все прерывания, кроме прерывания переполнения счётчика временных меток;

Бит 6 - ENBOFF = 1 - разрешить прерывание, сигнализирующее о том, что шина отключена;

Бит 5 - ENRX = 1 - разрешить прерывание по приёму сообщений;

Бит 4 - ENTX = 1 - разрешить прерывание по отправке сообщений;

Бит 3 - ENERR = 1 - разрешить прерывание, сигнализирующее об ошибке в каком-либо объекте сообщения;

Бит 2 - ENBX = 1 - разрешить прерывание от объектов сообщений, работающих в режиме приёма пакета сообщений;

Бит 1 - ENERG = 1 - разрешить прерывание по ошибкам CAN;

Бит 0 - ENOVRT = 1 - разрешить прерывание по переполнению счётчика временных меток.

Доступ к объектам сообщений осуществляется через регистры CANPAGE, CANCDMOB, CANSTMOB,

CANIDT1.. CANIDT4, CANIDM1...

CANIDM4, CANMSG. Выбор конкретного объекта осуществляется регистром CANPAGE, старшие 4 бита которого определяют номер объекта сообщения. Обращение к последующим приведённым выше регистрам будет относиться к выбранному регистром CANPAGE объекту сообщения. Младшие 4 бита CANPAGE определяют доступ к 8 байтам поля данных объекта сообщения через регистр CANMSG: биты 2:0 определяют номер байта, на который ссылается регистр CANMSG. Если 3-й бит регистра CANPAGE равен «1», то при каждом обращении к регистру CANMSG адрес

байта данных будет автоматически увеличиваться на 1.

Регистр CANCDMOB приведённую в таблице 2.

имеет структуру,

Таблица 2

000 0000 10101 (21 в десятичном коде), а маска 111 1111 1111, это означает, что будут приниматься сообщения только с идентификатором, равным 21. Если же маска будет иметь вид 111 1111 1110, то будут приниматься сообщения с идентификаторами, равными 21 и 20.

Структу ра регистра CA NCDMO] В

Бит 7 6 5 4 3 2 1 0

Название CONMOB1 CONMOB0 RPLV IDE DLC3 DLC2 DLC1 DLC0

Таблица 3

Бит 7:6 - CONMOBliO - конфигурация объекта сообщения:

• 00 - объект отключен;

• 01 - режим передачи;

• 10 - режим приёма;

• 11 - режим приёма пакета сообщений.

Бит 5 - RPLV = 1 - включить режим автоматического ответа на сообщение запроса данных;

Бит 4 - IDE = 1 - идентификатор сообщения имеет расширение по стандарту 2.0b, в противном случае используется стандарт 2.0a;

Бит 3:0 - DLC3:0 - количество байт в сообщении 0...8.

Бит 2 - ENBX = 1 - разрешить прерывание от объектов сообщений, работающих в режиме приёма пакета сообщений;

Бит 1 - ENERG = 1 - разрешить прерывание по ошибкам CAN;

Бит 0 - ENOVRT = 1 - разрешить прерывание по переполнению счётчика временных меток.

Регистр CANSTMOB это регистр статуса CAN-интерфейса. Если 6-й бит равен «1», это означает, что данные были успешно переданы, если 5-й бит равен «1», это означает, что данные были успешно приняты. Остальные биты сигнализируют о различных ошибках. С их назначением можно ознакомиться в спецификации к микроконтроллерам AT90CAN.

Регистры CANIDT1... CANIDT4,

CANIDM1... CANIDM4 устанавливают, соответственно, идентификатор сообщения и маску. Назначение битов этих регистров различно для режима работы по стандартам CAN 2.0а и CAN 2.0b, как показано в таблицах 3-6. Поясним смысл применения маски. Маска имеет столько же разрядов, что и идентификатор. Если какой-либо бит маски равен «1», это означает, что соответствующий бит в поле идентификатора должен точно совпадать с битом принимаемого сообщения. Если бит маски равен «0», это означает, что соответствующий бит идентификатора принимаемого сообщения может быть любым. Например, если идентификатор равен

(CAN 2.0a)

Бит 7 6 5 4 3 2 1 0

CANIDT4 RTRTAG - RB0TAG

CANIDT3

CANIDT2 IDT2 IDT1 IDT0 - - - - -

CANIDT1 IDT10 IDT9 IDT8 IDT7 IDT6 IDT5 IDT4 IDT3

Таблица 4

Структуры регистров CANIDM1.. CANIDM4 (CAN 2.0а)

Бит 7 6 5 4 3 2 1 0

CANIDM4 - - - - - RTRMSK - IDEMSK

CANIDM3 - - - - - - - -

CANIDM2 MSK2 MSK1 MSK0 - - - - -

CANIDM1 MSK10 MSK9 MSK8 MSK7 MSK6 MSK5 MSK4 MSK3

Таблица 5

Структуры регистров CANIDT1.. CANIDT4 (CAN 2.0б)

Бит 7 6 5 4 3 2 1 0

CANIDT4 IDT4 IDT3 IDT2 IDT1 IDT0 RTRTAG RB1TAG RB0TAG

CANIDT3 IDT12 IDT11 IDT10 IDT9 IDT8 IDT7 IDT6 IDT5

CANIDT2 IDT20 IDT19 IDT18 IDT17 IDT16 IDT15 IDT14 IDT13

CANIDT1 IDT28 IDT27 IDT26 IDT25 IDT24 IDT23 IDT22 IDT21

Таблица 6

Структуры регистров CANIDM1.. CANIDM4 (CAN 2.0б)

Бит 7 6 5 4 3 2 1 0

CANIDM4 MSK4 MSK3 MSK2 MSK1 MSK0 RTRMSK - IDEMSK

CANIDM3 MSK2 MSK11 MSK10 MSK9 MSK8 MSK7 MSK6 MSK5

CANIDM2 MSK20 MSK19 MSK18 MSK17 MSK16 MSK15 MSK14 MSK13

CANIDM1 MSK28 MSK27 MSK26 MSK25 MSK24 MSK23 MSK22 MSK21

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

Регистр САКМ80 осуществляет доступ к 8 байтам поля данных объекта сообщений в соответствии с установкой младших четырёх бит регистра САОТАОЕ.

Настройка прерываний от объектов сообщений осуществляется регистрами СА№Е2 и СА№Е1. Биты 7:0 регистра СА№Е2 соответствуют объектам сообщений с номерами 7..0, а Биты 6:0 регистра САМЕ1 - объектам с номерами 14..8. «1» в соответствующем бите регистра разрешает прерывание от объекта сообщения.

Выбор объекта сообщения с наивысшим приоритетом (обычно 0) осуществляется регистром САКИРМОБ, в который записывается число от 0 до 14.

Настройка скорости передачи данных осуществляется регистром САКБТ1, 6:1 биты

которого задают коэффициент деления частоты по формуле:

CANBT\\6:1] +1 tq =------------

fCLK

где fcLK - тактовая частота контроллера. Например, если fCLK = 16 МГц, а CANBT1[6:1] = 1, то частота контроллера CAN составит 8 МГц, а соответствующее значение временного кванта tq = 125 нс.

Регистр CANBT2 устанавливает величину синхронизирующего сдвига (би-ты 6:5) SWJ = tq(CANBT2[6:5]+1) и длину сегмента распространения (биты 3:1) Prop_Seg =

tq(CANBT2[3:1]+1).

Регистр CANBT3 устанавливает число точек защёлкивания (бит 0 - Sample Point), длину первого фазового сегмента (биты 3:1)

Phase_Seg1 = tq(CANBT3[3:1]+1) и длину второго фазового сегмента (биты 6:4) Phase_Seg2 = tq(CANBT3[6:4]+1). Если бит 0 равен «0», то имеем одну точку защёлкивания, если же бит 0 равен «1», то точек защёлкивания становится 3: добавляется две точки слева и справа от основной с интервалом времени, равным периоду тактовой частоты микроконтроллера. В режиме трёх точек защёлкивания временной квант должен быть равен как минимум двум периодам тактовой частоты микроконтроллера. Увеличение числа точек защёлкивания может позволить улучшить помехоустойчивость: значение сигнала определяется не по одной, а по трём точкам. Если хотя бы в двух точках сигнал равен, например, «1», то принимается значение «1».

Счётчик временных меток настраивается регистром CANTCON по формуле 8(CANTCON[7:0]+1)

fCLK

Наконец, включение контроллера CAN осуществляется записью «1» во второй бит регистра CANGCON.

Пример программы для микроконтроллера

Приведём пример программы контроллера, написанной на языке С. , скорость передачи данных по шине CAN 250 кбит/c, стандарт CAN 2.0a. Программа принимает сообщения с идентификатором, равным 7 и в ответ посылает сообщение с идентификатором, равным 8, каждый байт данных которого на единицу больше соответствующих байт принятого сообщения.

Фрагмент программы, осуществляющей инициализацию контроллера CAN:

CANGIE=0b 10100000; // Разрешаем прерывание по приёму сообщений

//Настраиваем нулевой объект сообщения на приём сообщений

//с идентификатором, равным 7 CANPAGE = 0 << 4;

CANSTMOB = 0;

CANCDMOB = 0b 10001000; //приём по стандарту CAN 2.0 A

//Устанавливаем идентификатор 7 CANIDT4 = 0x00;

CANIDT3 = 0x00;

CANIDT2 = 0x07 << 5; // ID = 7

CANIDT1 = 0x0;

//Устанавливаем маску из единиц CANIDM4 = 0b101; //Учитывать RTR и Extention Mask

CANIDM3 = 0x00;

CANIDM2 = 0b11100000;

CANIDM1 = 0xFF;

//Настраиваем первый объект сообщения на отправку сообщений

//с идентификатором, равным 8, но пока он должен быть в неактивном состоянии CANPAGE = 0 << 4;

CANSTMOB = 0;

CANCDMOB = 0b00001000; //стандарт CAN 2.0A, отключён

//Устанавливаем идентификатор 8 CANIDT4 = 0x00;

CANIDT3 = 0x00;

CANIDT2 = 0x08 << 5; // ID = 7

CANIDT1 = 0x0;

//Устанавливаем маску из единиц CANIDM4 = 0b 101;

CANIDM3 = 0x00;

CANIDM2 = 0b11100000;

CANIDM1 = 0xFF;

//Заполняем нулями все поля объектов сообщений с номерами 2..14 for (i = 2; i < 15; i++)

{

CANPAGE = i << 4;

CANCDMOB = 0;

CANSTMOB = 0;

CANIDT1 = 0;

CANIDT2 = 0;

CANIDT3 = 0;

CANIDT4 = 0;

CANIDM1 = 0;

CANIDM2 = 0;

CANIDM3 = 0;

CANIDM4 = 0;

for (j = 0; j < 8; j++) CANMSG = 0;

}

CANIE2=0x01; //Разрешено прерывание от объекта сообщения 0 CANIE1=0x00;

CANHPMOB=0x00;

CANBT1=3<<1; //CAN System Clock:

4000.0 kHz (tq=250 ns)

CANBT2=0x0C; // SJW = 1 tq, Prop_Seg =

7 tq

CANBT3=0x36; // Phase_Seg1 = 4 tq,

Phase_Seg2 = 4 tq,

//Sample Point(s): 1

CANTCON=3; // Период счётчика временных меток 2.000 us

Обработчик прерывания:

// Прерывание CAN по приёму сообщения interrupt [CAN_IT] void can_isr(void)

{

unsigned char flag,i; unsigned char Data[8];

CANGIE&=~(1<<5); //запретить это прерывание, пока идёт обработка

if (CANSIT2&1) // прерывание было вызвано объектом сообщения 0 {

//Считываем данные из объекта

сообщения 0

CANPAGE=0 << 4;

CANSTMOB&=~(1<<5); //Сбрасываем

флаг прерывания RXOK

for(i=0;i<8;i++) Da-

ta[i]=CANMSG;

//Формируем ответное сообщение объекта 1

CANPAGE=1 << 4;

for(i=0;i<8;i++)

CANMSG=Data[i]+l;

CANSTMOB=O; CANCDMQB|=0b0l000000; //Включаем режим передачи

//ждём завершения отправки while (CANSTMQB&(1<<6))

#asm("nop");

}

CANGIE|=1<<5; //Разрешить это прерывание

CANGIT = CANGIT; //сбросить все

флаги

}

Работа выполнена в рамках государственного контракта №16.552.11.7О48.

Литература

1. CAN Specification 2.Q. // Robert BOSCH GmbH,

l99l. URL:

http://www.semiconductors.bosch.de/media/pdf/canliteratur/ca n2spec.pdf (дата обращения 3О.О9.2О11)

2. Corrigan S. Introduction to the Controller Area

Network (CAN) Industrial Inter-face / Corrigan S. // Texas Instruments. Application Report SLOA1Q1A - August 2002-Revised July 2QQ8. URL:

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.

http://www.ti.com/lit/an/sloalQla/sloalQla.pdf (дата обращения 3Q.Q9.2Q11)

3. Hartwich F. The configuration of the CAN Bit Timing / Hartwich F., Bassmir A. // Robert BOSCH GmbH. URL: www.can.bosch.com (дата обращения 3Q.Q9.2Q11).

Воронежский государственный технический университет

Воронежский государственный университет

ОАО Воронежское специальное конструкторское бюро «Рикон»

DESIGN OF CAN INTERFACE IN SUPERCAPACITOR MODULES

Yu.Yu. Razuvaev, M.Yu. Chayka, V.V. Agupov, V.S. Gorshkov, D.E. Silyutin, V.A. Nebolsin

In work the logic of creation of service schemes in supercapacitor modules is shown, the principle of operation of the CAN interface of AT90CAN microcontrollers is considered, the example of the program for the AT90CAN microcontroller is presented

Key words: supercapacitor, ionistor, interface, CAN bus

i Надоели баннеры? Вы всегда можете отключить рекламу.