СОВРЕМЕННАЯ ЭЛЕКТРОНИКА 2011-7

ПРАКТИЧЕСКАЯ ЭЛЕКТРОНИКА 46 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 7 2011 Таблица 9. Описание функции CANSetMask Прототип void CANSetMask(unsigned short CAN_MASK, long value, unsigned short CAN_CONFIG_FLAGS); Возвращаемое значение Нет Описание Функция устанавливает маску расширенной фильтрации сообщений. Заданное значение value по битам соответствует буферным регистрам маски Аргументы: • CAN_MASK – одна из предопределённых констант (см. константы CAN). value – значение маски регистра; • CAN_CONFIG_FLAGS задаёт тип сообщения для фильтрации CAN_CONFIG_XTD_MSG или CAN_CONFIG_STD_MSG Требования Интерфейс CAN должен быть в режиме конфигурирования, в противном случае функция будет игнорироваться Микроконтроллер должен быть подключен к CAN0трансиверу (MCP2551 или подобному), который соединён с шиной CAN Пример /* Установить все биты маски в 1, т.е. все фильтруемые биты имеют значение: */ CANSetMask(CAN_MASK_B1, 01, CAN_CONFIG_XTD_MSG); /* Замечание: –1 – это просто более удобный способ записи 0xFFFFFFFF. Дополнительный код заполнит всё единицами */ Таблица 10. Описание функции CANSetFilter Прототип void CANSetFilter(unsigned short CAN_FILTER, long value, unsigned short CAN_CONFIG_FLAGS); Возвращаемое значение Нет Описание Функция устанавливает фильтр сообщений. Заданное значение value по битам соответствует буферным регистрам маски Аргументы: • CAN_FILTER – одна из предопределённых констант (см. константы CAN) • value – значение регистра фильтрации • CAN_CONFIG_FLAGS задаёт тип сообщения для фильтрации CAN_CONFIG_XTD_MSG или CAN_CONFIG_STD_MSG Требования Интерфейс CAN должен быть в режиме конфигурирования, в противном случае функция будет игнорироваться Микроконтроллер должен быть подключен к CAN0трансиверу (MCP2551 или подобному), который соединён с шиной CAN Пример /* Установить идентификатор фильтра B1_F1 = 3: */ CANSetFilter(CAN_FILTER_B1_F1, 3, CAN_CONFIG_XTD_MSG); Таблица 11. Описание функции CANRead Прототип unsigned short CANRead(long *id, unsigned short *data, unsigned short *datalen, unsigned short *CAN_RX_MSG_FLAGS); Возвращаемое значение Сообщение из буфера приёма или 0, если сообщение не найдено Описание Функция читает сообщение из буфера приёма. Если найден хотя бы один заполненный буфер, оно извлекается и возвращается. Если таковых нет, функция возвращает 0 Аргументы: • id – идентификатор сообщения; • data – массив байтов длиной до 8 байтов; • datalen – размер данных, от 1 до 8 CAN_RX_MSG_FLAGS – значение, сформированное из констант (см. константы CAN) Требования Интефейс CAN должен быть в режиме, в котором возможен приём Микроконтроллер должен быть подключен к CAN0трансиверу (MCP2551 или подобному), который соединён с шиной CAN Пример unsigned short rcv, rx, len, data[8]; long id; // ... rx = 0; // ... rcv = CANRead(id, data, len, rx); Таблица 12. Описание функции CANWrite Прототип unsigned short CANWrite(long id, unsigned short *data, unsigned short datalen, unsigned short CAN_TX_MSG_FLAGS); Возвращаемое значение Возвращает 0, если сообщение не может быть поставлено в очередь на передачу (буфер переполнен) Описание Если есть хотя бы один пустой буфер передачи, функция пересылает в него сообщение для передачи. Если буфер переполнен, функция возвращает 0 Аргументы: • id – идентификатор сообщения CAN. В зависимости от типа сообщения (стандартное или расширенное) могут быть использованы только 11 или 29 битов; • data – массив байтов длиной до 8 байтов; • datalen – размер данных от 1 до 8 CAN_TX_MSG_FLAGS – значение, сформированное из констант (см. константы CAN) Требования Интерфейс CAN должен быть в нормальном режиме Микроконтроллер должен быть подключен к CAN0трансиверу (MCP2551 или подобному), который соединён с шиной CAN Пример unsigned short tx, data; long id; // ... tx = CAN_TX_PRIORITY_0 & CAN_TX_XTD_FRAME; // ... CANWrite(id, data, 2, tx); © СТА-ПРЕСС

RkJQdWJsaXNoZXIy MTQ4NjUy