CAN-200: Библиотека для работы с платами CAN-200PCI, CAN-200-104PCI и CAN-200PCIe

CAN-200 1.3.0

Библиотека для работы с платами CAN-200PCI, CAN-200-104PCI и CAN-200PCIe

Библиотека функций предназначена для предоставления доступа к ресурсам плат серии CAN-200PCI, CAN-200-104PCI и CAN-200PCIe.

Условия работы

Установленное оборудование:

- IBM PC совместимый компьютер Pentium II или выше

Программное обеспечение:

- Microsoft Visual Studio 2015 (с установленной Visual C++)
- Microsoft Windows SDK

Поддерживаемые операционные системы:

- Windows XP (x86)
- Windows Vista (x86)
- Windows Vista (x64)
- Windows 7 (x86)
- Windows 7 (x64)
- Windows 8 (x86)
- Windows 8 (x64)

Поддерживаемые платы:

- CAN-200PCI
- CAN-200PCIe
- CAN-200-104PCI

Платы серии CAN-200 содержат два (CAN-200PCI и CAN-200PCIe) или четыре (CAN-200-104PCI) полностью независимых CAN-канала. Каждый CAN-канал построен на CAN-контроллере PCA82C200 фирмы Philips. Этот CAN-контроллер поддерживает на аппаратном уровне обмен данными по протоколу CAN 2.0 part A. В 2002 году CAN-контроллер PCA82C200 снят с производства и в качестве его замены на платы серии CAN-200 устанавливается CAN-контроллер SJA1000, поддерживающий (в режиме PeliCAN) обмен данными по протоколу CAN 2.0 part B active. Этот CAN-контроллер имеет два режима функционирования: BasicCAN и PeliCAN.

- Режим BasicCAN является режимом, обеспечивающим совместимость с CAN-контроллером PCA82C200. В этом режиме возможен обмен только стандартными кадрами (с 11-битным идентификатором).
- Режим PeliCAN является режимом, обеспечивающим более гибкую настройку CAN-контроллера, удобный мониторинг CAN-сети и предоставляет возможность обмена кадрами с расширенным идентификатором (29-битным).

Заметки
  Данный драйвер не обеспечивает бинарную совместимость с более ранними драйверами плат CAN-200 (драйвер CAN200.sys версии 06/29/2005,0.0.1.04). Для обеспечения совместимости с ранее разработанным программным обеспечением данная библиотека имеет набор функцию повторяющий соответствующий набор функций старого драйвера. Для использования этих функций необходимо раскомментировать строку
  //#define __USE__OLD_CAN200_FUNCTIONS__
  в файле can200-api.h.

Основы использования библиотеки
  1. Проверить наличие и количество установленных в компьютере плат CAN-200PCI и CAN-200PCIe
     int result;
     int count;
     result = CAN200_GetNumberDevice(&count);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }
     if (0 == count)
     {
     // Нет установленных плат
     }
  2. Открыть требуемую плату для работы
     HANDLE hCan;
     hCan = CAN200_Open(0);
     if (INVALID_HANDLE_VALUE == hCan)
     {
     // Обработка ошибки
     }
  3. Установить требуемую скорость и режим обмена по шине CAN
     result = CAN200_SetWorkMode(hCan, CAN_CHANNEL_1, PeliCAN);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }
     result = CAN200_SetCANSpeed(hCan, CAN_CHANNEL_1, CAN_SPEED_1000);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }
  4. Разрешить необходимые прерывания
     // Разрешаем прерывания по приему кадра
     result = CAN200_SetInterruptSource(hCan, CAN_CHANNEL_1, 0x01);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }
  5. Установить фильтр для приема кадров
     // Разрешаем прием всех кадров
     pFilter_t filter;
     filter.Filter[0] = filter.Filter[1] = filter.Filter[2] = filter.Filter[3] = 0xff;
     filter.Mask[0] = filter.Mask[1] = filter.Mask[2] = filter.Mask[3] = 0xff;
     filter.Mode = 0;
     result = CAN200_P_SetInputFilter(hCan, CAN_CHANNEL_1, filter);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }
  6. Разрешить работу выходных формирователей
     // Разрешаем работы выходных формирователей
     result = CAN200_SetDriverMode(hCan, CAN_CHANNEL_1, 0x1B);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }
  7. С использованием функций
     CAN200_GetStatus, CAN200_SetCommand, CAN200_SetTxBuffer, CAN200_DefEvent, CAN200_GetEventData, CAN200_GetRxBuffer
     организовать прием и выдачу CAN кадров.
  8. После окончания работы закрыть плату
     result = CAN200_Close(hCan);
     if (CAN200_OK != result)
     {
     // Обработка ошибки
     }

CAN-200 documentation. Copyright (c) 2012 - 2017 Elcus Corporation. All rights reserved.